What is Fagun
A senior UAT, QA & security engineer Skill that lives in your AI tool.
Fagun is a Skill β a portable QA/UAT/security playbook that drops into any AI agent and turns it into a senior tester. Under the hood, one command β uvx fagun init β wires up 8 MCP servers into every AI tool on your machine so the skill has a real browser to act with: Fagun (QA + UAT + security), Playwright (70+ browser tools), MCP-Fetch (web content), Chrome DevTools (real Chrome), VirusTotal (threat intel), Shodan (internet recon + CVE lookup), Jam (visual bug reports), and Context7 (live library docs). Your AI assistant β Claude Code, Cursor, Codex, Windsurf, Claude Desktop, or any MCP client β gains a real Chromium browser plus security intelligence and does what a whole product team would: uses the product as real customers (mobile, slow-internet, keyboard-only, screen-readerβ¦), walks complete journeys (signup, login, search, checkoutβ¦), hunts defects, and ends with a product-readiness verdict β every finding with steps, evidence, severity, and a suggested fix.
Real, not hallucinated
Every finding comes from an actual tool result β a console error, a status code, a measured metric. No "could potentially".
Any AI, any model
Pure MCP β no built-in model. Works with frontier models and fully local open-source ones via Ollama (Qwen, DeepSeek, Llama, Mistralβ¦).
Token-lean
Terse output by default cuts tool-result tokens ~70%. Full detail goes to a Markdown report on disk, not your context.
8 MCPs, one command
uvx fagun init auto-registers Fagun, Playwright, MCP-Fetch, Chrome DevTools, VirusTotal, Shodan, Jam, and Context7 across every AI tool on your machine.
Interactive key setup
API keys asked on first use, stored in ~/.fagun/api_keys.json, loaded automatically β no manual env-var exports needed.
Why you need it
AI can write code. It usually can't see it run.
An LLM writing a feature is flying blind β it never loads the page, never clicks the button, never reads the 500 in the network tab. Fagun closes that loop. It gives the model eyes and hands on a live browser, so it can verify its own work, catch regressions, and hunt the bugs that only appear at runtime.
Without Fagun
- "Looks correct" β never actually run
- Console errors & failed API calls unseen
- Broken links, form gaps, a11y issues shipped
- Security misconfigs undetected
- Perf regressions found by users, not you
- Manual QA repeated by hand every release
With Fagun
- Product used as real personas, journeys walked end-to-end
- Console + network watched after every action
- Links, forms, WCAG, keyboard checked automatically
- 20+ security classes probed (non-destructive)
- Real Core Web Vitals with a Lighthouse-style score
- A product-readiness verdict + one-command re-runs
UAT & readiness
Not just "are there bugs" β is it ready for real users?
Fagun's primary job is a release decision. It experiences the product as real customers, validates that they can actually finish what they came to do, then scores readiness across 16 dimensions and gives a verdict β from Ready to Critical issues block release.
11 end-user personas
Become a first-time, mobile, tablet, slow-internet, low-end, keyboard-only, screen-reader, dark-mode, or international user β real device, network + CPU throttle, and media prefs, not just a resized window.
Complete user journeys
Walk login, signup, search, checkout, password-reset and more step-by-step. Each step records pass/fail, a screenshot, console errors, failed requests and timing β a step only "passes" if the browser actually did it.
Readiness scorecard
16 category scores (UX, UI, business logic, reliability, a11y, performance, security, mobileβ¦) + a release verdict + prioritized fixes (why it matters, how to fix). Rendered to Markdown / HTML / JSON / JUnit XML.
Test behind login
Chrome MCP reuses an already signed-in browser. If the target is logged out, auth_status detects it; the user can log in manually or provide authorized test credentials via login_with_credentials, then save_session keeps future tests authenticated.
Keyboard walk
Tab through the page like a keyboard-only / screen-reader user β focus reachability, missing visible focus, and focus traps, with evidence.
Tech fingerprint
fingerprint detects server, hosting, framework, CMS and analytics from real headers + DOM signals β so the hunt is tuned to the actual stack.
Who it's for
If you build, ship, or break software β it's for you.
Developers & AI-pair-programmers
Verify a change actually works in the browser before you commit. Catch console errors and failed requests the moment they appear. Let the model self-check its own output.
QA & SDET engineers
Generate positive / negative / boundary / edge / injection test data automatically, fuzz every form, and get a reproducible report β without writing the harness by hand.
Security researchers & bug bounty hunters
Non-destructive probes for XSS, SQLi, CSP, clickjacking, CRLF, LFI, SSTI, host-header injection, exposed files, secrets, GraphQL introspection & more β every hit evidence-backed. Authorized targets only.
Product managers & analysts
Find missing workflows, broken journeys, and validation gaps. Get an executive summary grouped by severity and business impact β not a wall of stack traces.
Accessibility & SEO specialists
Real WCAG 2.1 checks including computed color-contrast, plus metadata, canonical, viewport, and Core Web Vitals in one pass.
Agencies, freelancers & indie hackers
Audit any client site in minutes and hand over a professional Markdown report. Runs locally and privately β great for offline or air-gapped work.
Install
One line. 8 MCPs. Nothing to configure.
uvx fagun init auto-detects every AI tool on your machine and wires up all 8 MCP servers: Fagun (QA/UAT/security), Playwright (70+ browser tools), MCP-Fetch (web content), Chrome DevTools (real Chrome session), VirusTotal (threat intel), Shodan (host recon + CVE), Jam (visual bug reports), and Context7 (live library docs). No Python, no npm calls, no manual config. VirusTotal and Shodan need free API keys β Fagun asks you for them on first use and saves them to ~/.fagun/api_keys.json.
Chrome DevTools MCP auto-connects to the user's running Chrome during deep tests β no manual setup. Users do not need to run fagun connect to my Chrome first. Fagun opens chrome://inspect/#remote-debugging; click Allow when Chrome shows the permission popup. This lets tests reuse your signed-in session without sharing credentials. If the target is still logged out, Fagun calls auth_status and asks for authorized test credentials; passwords are never printed back.
Runtime order: uvx fagun init β restart AI tool β fagun deep test URL β Chrome DevTools auto-connects β product_map maps the product β auth_status checks login β pages clicked, inputs fuzzed, console/network watched β full verdict + findings + evidence + fixes + report.
Inside Claude Code, as a plugin:
Env toggles: FAGUN_TERSE=0 full JSON Β· FAGUN_HEADLESS=0 show the browser Β· FAGUN_BROWSER=firefox|webkit Β· FAGUN_CDP_URL attach to your own Chrome Β· FAGUN_SCOPE=host1,host2 restrict active probes to authorized hosts (FAGUN_SCOPE_DENY always wins).
Token controls: FAGUN_TERSE=mini extra-short raw tool summaries Β· FAGUN_FINDING_CAP findings per page Β· FAGUN_PAGE_CAP pages in chat Β· FAGUN_DETAIL_CHARS and FAGUN_URL_CHARS trim lines. Use report_path for raw evidence on disk; final answers still include the full user-facing verdict, findings, evidence, fixes, coverage, and report link.
Style controls: fagun_style_prompt gives any model the Fagun response format Β· fagun_style_schema returns the JSON contract for custom renderers Β· fagun_render_response converts JSON/plain output into Fagun-style Markdown.
Security orchestration: fagun_security_prompt returns the advanced authorized-testing prompt Β· list_external_security_tools shows the adapter catalog Β· recommend_security_tools picks the smallest relevant plan for Loxs, Shannon, Lonkero, recon-skills, BeeXSS, TimeVault, NextSploit, payload corpora, and related tools.
Workflow
What happens after the user types one command.
The complete Fagun path is install once, restart the AI tool, then run fagun deep test URL. Fagun covers the full product/business flow β browser connection, Chrome DevTools MCP, product mapping, auth state, clicks, inputs, labelled test data, evidence, and final report generation.
uvx fagun init
Browser engine, 24 testing skills, 8 MCP servers, AI-tool configs.Claude, Codex, Cursor, Windsurf
Fagun Skill + 23 testing skills + MCP browser tools loaded.Open target, map product, check auth
Signed-in Chrome reused after Allow; otherwise manual login or authorized credentials.Does the app pass?
Every visit, click, fill, screenshot, failed request, and console error is recorded.Ready verdict
Report saved for evidence.Action replay, findings, repro, evidence, fixes
HTML Β· Markdown Β· JSON Β· JUnitAll tools & capabilities
Everything it can do.
UAT & end-user simulation
| Tool | What it does |
|---|---|
list_personas Β· emulate_persona | Reconfigure the browser to experience the site as a real user type β 11 presets (first-time, mobile, tablet, slow-internet, low-end, keyboard-only, screen-reader, dark-mode, internationalβ¦) with real device, network/CPU throttle & media prefs. |
run_journey | Walk a full flow step-by-step; per-step pass/fail, screenshot, console errors, failed requests & timing. A feature is not complete until entry point, inputs, validation, success, error path, persistence/side effect, reload/back behavior, and recovery are covered. |
list_journeys Β· journey_template | Built-in journey scaffolds (login, register, password-reset, search, checkout, contact) to copy and fill in. |
keyboard_walk | Tab through like a keyboard-only user β focus reachability, invisible focus, traps. |
readiness_report | 16-category readiness scorecard + release verdict + prioritized fixes from collected findings. |
Product understanding & auth
| Tool | What it does |
|---|---|
product_map | Reads the live page to infer business signals, primary CTAs, forms, navigation, and recommended journeys before testing. |
auth_status | Checks whether Chrome is already authenticated, logged out, or unknown, then recommends continuing, manual login, or credentials. |
login_with_credentials | Uses authorized test credentials to log in, masks the password in output, and saves the session for authenticated tests. |
Browse & debug
| Tool | What it does |
|---|---|
open_browser | Launch (or attach to) the browser. |
navigate | Go to a URL; returns status + title. |
click Β· fill Β· press_key | Drive the page by selector or visible text. |
screenshot | Save a PNG (full-page optional). |
evaluate_js | Run JS in the page, get JSON back. |
get_console Β· get_network | Captured console messages / requests (errors & 4xx-5xx only, if asked). |
close_browser | Close and free resources. |
Fagun Style
| Tool | What it does |
|---|---|
fagun_style_prompt | Reusable instruction block so any AI model answers in the same Fagun section layout. |
fagun_style_schema | JSON response contract for custom frontends that render cards, panels, reports, Jira tickets, and test-case views. |
fagun_render_response | Post-process JSON or plain text into Fagun-style Markdown. |
Security prompt & external tools
| Tool | What it does |
|---|---|
fagun_security_prompt | Advanced AI security-engineer prompt for authorized testing, attack-graph planning, evidence validation, remediation, and regression tests. |
list_external_security_tools | Catalogs Loxs, Skill Security Scanner, Shannon, Lonkero, recon-skills, coffinxp payload corpora, RFC822 Email Validator, LostFuzzer, img-payloads, customBsqli, BeeXSS, TimeVault, and NextSploit as safe adapters. |
recommend_security_tools | Selects the smallest relevant tool plan from the goal and target profile. It plans usage; active probing stays authorized-scope only. |
QA & bug hunting
| Tool | What it does |
|---|---|
crawl | Breadth-first map of the site (same host). |
run_qa | Single-page sweep: console, network, WCAG a11y, SEO, load time, visual overflow, clipped text, small targets, and blocking overlays. |
check_links | Probe every link; report 4xx / 5xx / unreachable. |
test_forms | Static form audit (security / validation / a11y) β no submit. |
fuzz_forms | Active: fills each field with valid, invalid, negative, empty, whitespace, special-character, unicode, boundary, out-of-box, and injection-observation cases; returns a field-by-field scenario matrix, browser verdicts, screenshots for failures, and validation gaps. submit=true opt-in. |
list_test_data | Show the test cases used for a field type. |
deep_test | The big one: auto-use Chrome DevTools MCP when available, then crawl + per-page QA + forms + full security + real vitals + keyboard + readiness verdict β full final answer plus one report (.md/.html/.json/.xml). |
full_qa_sweep Β· write_report | Multi-page QA / write a report (Markdown, HTML, JSON, or JUnit XML by extension). Markdown/HTML include action timelines, form scenario matrices, screenshots, and Jira-ready bug tickets for each confirmed finding. |
Performance, accessibility & security
| Tool | What it does |
|---|---|
fingerprint | Detect server / hosting / framework / CMS / analytics from real headers + DOM signals β tune the hunt to the stack. |
perf_audit | Real Core Web Vitals (LCP, CLS, TBT, FCP, TTFB) + a Lighthouse-comparable 0-100 score. No estimates. |
a11y_audit | Deep WCAG 2.1 incl. real computed color-contrast, ARIA, labels, headings, focus order, zoom. |
security_headers | CSP, HSTS, X-Frame, nosniff, version/stack leaks. |
security_scan | Full non-destructive scan (core + advanced, see below). |
advanced_security | Advanced probe battery only. |
Authenticated sessions
| Tool | What it does |
|---|---|
save_session | Save the current logged-in session (cookies + localStorage) to disk after you log in. |
load_session | Restore a saved session into a fresh context β crawl / deep test / security scan then run authenticated. |
list_sessions Β· delete_session | Manage saved sessions. |
Power & self-healing
| Tool | What it does |
|---|---|
connect_chrome | Troubleshooting fallback: launch a dedicated debuggable Chrome profile and attach when Chrome DevTools MCP auto-connect is unavailable. |
browser_exec | Run any async Python against the live page β full Playwright power when a built-in tool can't do it. |
save_helper Β· list_helpers Β· load_helper | Persist reusable snippets so the agent gets smarter each run. |
fagun_start | Show the capability menu. |
API integration management
| Tool | What it does |
|---|---|
check_integrations | Show status of all 8 bundled MCPs β which are active (no key needed), which need an API key, with exact instructions per service. |
configure_api_key(service, key) | Set an API key for virustotal or shodan. Applies immediately to the session, saves to ~/.fagun/api_keys.json (auto-loaded on every future start), and patches any existing JSON MCP config files on disk so the external MCP process gets the key after the next AI tool restart. |
API integrations
Security intelligence MCPs β zero extra setup.
fagun init registers all 8 MCPs automatically. VirusTotal and Shodan need free API keys β Fagun asks for them on first use via configure_api_key(), stores them in ~/.fagun/api_keys.json, and loads them on every subsequent start. No manual env-var exports. No repeated setup.
VirusTotal MCP
Scan any URL, IP address, domain, or file hash against 90+ antivirus engines and threat-intel feeds. Identifies malware, phishing, and suspicious infrastructure during security audits.
VIRUSTOTAL_API_KEY (free at virustotal.com)configure_api_key("virustotal", "your-key")@burtthecoder/mcp-virustotalShodan MCP
Query Shodan's index of internet-connected devices. Look up open ports, running services, SSL certificates, geolocation, and known CVEs for any host β passive recon with no traffic to the target.
SHODAN_API_KEY (free tier at shodan.io)configure_api_key("shodan", "your-key")@burtthecoder/mcp-shodanPlaywright MCP
Microsoft's official Playwright MCP server. 70+ tools for browser automation via accessibility-tree snapshots β click, type, navigate, record video, mock network, manage tabs, generate PDFs. Zero API key.
@playwright/mcp (npx, no key needed)--headless Β· --browser chrome|firefox|webkit Β· --device "iPhone 15"fagun initMCP Fetch
Official MCP fetch server β retrieve and process web page content as Markdown. Supports chunked reading for large pages. Lightweight and dependency-free. Zero API key.
mcp-server-fetch (uvx, no key needed)fagun initJam β Visual bug reports
Captures screen recordings, console logs, network requests, and device info in one click. Every bug report Fagun creates is shareable with full reproduction context. No API key β uses OAuth.
@jam-dev/jam-mcp (npx, no key needed)fagun initContext7 β Live library docs
Injects up-to-date library documentation into AI context. When testing React, Next.js, or Vue apps, Fagun gets current API docs automatically β no hallucinated method names. Zero-config.
@upstash/context7-mcp (npx, no key needed)fagun initTest taxonomy
What it tests, top to bottom.
Functional
Core journeys end-to-end, buttons/nav, state persistence, empty & zero-result states.
Runtime / JS
Console errors after load & every interaction, unhandled rejections, null derefs, lazy-chunk failures.
Network / API
4xx/5xx, failed & timed-out calls, CORS, N+1, mixed content.
Forms & input
Required enforcement, type/boundary/edge validation, injection reflection, maxlength, double-submit.
Auth / session
Login errors, session persistence & logout, protected-URL leaks, IDOR smell, password-over-GET.
Accessibility
WCAG 2.1: contrast, labels, ARIA, headings, focus order, zoom, landmarks.
Performance
Real vitals, page weight, long tasks, load time, worst offenders with numbers.
SEO
Title/description length, canonical, viewport, h1 count, noindex, robots.
Security
20+ classes, non-destructive, evidence-backed β see the full list below.
Test data
Every case, labelled & traceable.
fuzz_forms generates the right cases for each field type (email, number, tel, url, date, password, textβ¦). Every value is tagged so a finding always names the exact case that produced it, the expected result, the browser verdict, and any screenshot evidence β no guesswork.
| Category | Examples |
|---|---|
valid | well-formed values that should be accepted β user@example.com, +8801712345678, 2024-02-29 |
invalid | malformed that should reject β missing @, letters in tel, month 13, non-leap Feb 29 |
edge | empty, single char, whitespace-only, shortest-legal |
boundary | length+1, int32 max+1, 5000-char overflow, 400-digit number, >254-char email |
outofbox | unicode/emoji, RTL override, cyrillic homoglyph, null byte, format-string tokens, leading zeros, hex, IDN email, SSRF hosts |
injection | '"><script>, {{7*7}}, ' OR '1'='1, ../../etc/passwd, ;echo, CRLF β observed for handling, never weaponized |
Security classes
Bug-bounty-grade, non-destructive.
GET/HEAD/OPTIONS only. No writes, no attacks on third parties, unique harmless markers. Every finding quotes what was actually seen. Set FAGUN_SCOPE to fence probes to authorized hosts. Run only against systems you're authorized to test.
Example prompts
Just talk to it.
Safety & ethics
Non-destructive by design.
- No fake results. Observations come from tool output; hypotheses are labelled as such.
- No data changes by default. Form fuzzing doesn't submit unless you pass
submit=true. - Authorized targets only. Active security probing is for systems you own or have permission to test.
- No third-party attacks, no DoS, no mass enumeration. Least-intrusive testing that proves the point.
- Private & local. Runs on your machine; nothing phones home. Works fully offline with local models.
FAQ
Quick answers.
Does it need an API key?
Fagun itself needs no key. VirusTotal and Shodan each need a free API key β Fagun asks for them on first use via configure_api_key() and saves them automatically to ~/.fagun/api_keys.json. Playwright and MCP-Fetch need no keys at all.
Which AI tools work?
Any agent or MCP client: Claude Code & Desktop, Cursor, Codex, Windsurf, Cline, VS Code, and more.
Do I need to install Chrome or Python?
No. uv bundles its runtime and Chromium auto-installs on first run. Node.js is needed for Playwright/Chrome DevTools MCP but most machines already have it.
Is the security scan safe to run?
It's non-destructive (read-only probes). Still β only run it on systems you're authorized to test.
Why are VirusTotal/Shodan not showing results?
Call check_integrations() β it shows exactly which keys are missing and how to set them. Then configure_api_key("virustotal", "key") to activate immediately.
How many total tools are available?
56+ in Fagun, 70+ in Playwright MCP, 11 in VirusTotal MCP, 7 in Shodan MCP, and more from Chrome DevTools, MCP-Fetch, Jam, and Context7 β 170+ total across the 8 bundled servers.
Give your AI the ultimate testing skill.
One command. Real browser. Real bugs. Real evidence.