Fagun / docs

Documentation Β· v0.11.0 Β· Open source (MIT)

The complete guide to Fagun.

Fagun is a comprehensive QA & testing Skill for AI agents. One uvx fagun init bundles 8 MCP servers β€” Fagun, Playwright, MCP-Fetch, Chrome DevTools, VirusTotal, Shodan, Jam, and Context7 β€” giving any AI tool a real browser, threat intelligence, and internet recon all at once. Use your product like real customers do β€” as multiple personas, across whole user journeys β€” run full UAT, hunt real bugs (functional, security, performance, accessibility, SEO), and return a product-readiness verdict. Every finding is backed by evidence. Nothing is faked; if it can't be reproduced, it isn't reported.

8 auto-bundled MCPs56+ Fagun tools70+ Playwright tools11 end-user personasUser-journey runner16-category readiness scorecardWCAG 2.1 a11yReal Core Web Vitals20+ security classesVirusTotal threat intelShodan recon + CVEAuthenticated testingWorks with local models
β˜… Star on GitHub

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.

$ uvx fagun init # browser + ALL 8 MCPs + /fagun skill β€” one command $ uvx --upgrade --reinstall fagun init # force latest if old output appears $ pip install --upgrade fagun && fagun init # pip users $ uvx fagun install claude-code # target one AI tool only β€Ί check_integrations() # see which MCPs are active + key setup instructions β€Ί configure_api_key("virustotal", "key") # enable VirusTotal (free key at virustotal.com) β€Ί configure_api_key("shodan", "key") # enable Shodan (free key at shodan.io) β€Ί fagun deep test https://example.com # full Fagun QA + threat intel + recon

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:

/plugin marketplace add mejbaurbahar/fagun /plugin install fagun@fagun

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.

01 Install and auto-wire

uvx fagun init

Browser engine, 24 testing skills, 8 MCP servers, AI-tool configs.
one-time setup
02 Open any AI tool

Claude, Codex, Cursor, Windsurf

Fagun Skill + 23 testing skills + MCP browser tools loaded.
user runs one command
03 fagun deep test URL

Open target, map product, check auth

Signed-in Chrome reused after Allow; otherwise manual login or authorized credentials.
product mapauth checkclicksinputstest dataconsolenetworka11ysecurity
04 Readiness gate

Does the app pass?

Every visit, click, fill, screenshot, failed request, and console error is recorded.
pass path
fix path
05A Ship / monitor

Ready verdict

Report saved for evidence.
immediate
05B Full bug report

Action replay, findings, repro, evidence, fixes

HTML Β· Markdown Β· JSON Β· JUnit

All tools & capabilities

Everything it can do.

UAT & end-user simulation

ToolWhat it does
list_personas Β· emulate_personaReconfigure 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_journeyWalk 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_templateBuilt-in journey scaffolds (login, register, password-reset, search, checkout, contact) to copy and fill in.
keyboard_walkTab through like a keyboard-only user β€” focus reachability, invisible focus, traps.
readiness_report16-category readiness scorecard + release verdict + prioritized fixes from collected findings.

Product understanding & auth

ToolWhat it does
product_mapReads the live page to infer business signals, primary CTAs, forms, navigation, and recommended journeys before testing.
auth_statusChecks whether Chrome is already authenticated, logged out, or unknown, then recommends continuing, manual login, or credentials.
login_with_credentialsUses authorized test credentials to log in, masks the password in output, and saves the session for authenticated tests.

Browse & debug

ToolWhat it does
open_browserLaunch (or attach to) the browser.
navigateGo to a URL; returns status + title.
click Β· fill Β· press_keyDrive the page by selector or visible text.
screenshotSave a PNG (full-page optional).
evaluate_jsRun JS in the page, get JSON back.
get_console Β· get_networkCaptured console messages / requests (errors & 4xx-5xx only, if asked).
close_browserClose and free resources.

Fagun Style

ToolWhat it does
fagun_style_promptReusable instruction block so any AI model answers in the same Fagun section layout.
fagun_style_schemaJSON response contract for custom frontends that render cards, panels, reports, Jira tickets, and test-case views.
fagun_render_responsePost-process JSON or plain text into Fagun-style Markdown.

Security prompt & external tools

ToolWhat it does
fagun_security_promptAdvanced AI security-engineer prompt for authorized testing, attack-graph planning, evidence validation, remediation, and regression tests.
list_external_security_toolsCatalogs 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_toolsSelects the smallest relevant tool plan from the goal and target profile. It plans usage; active probing stays authorized-scope only.

QA & bug hunting

ToolWhat it does
crawlBreadth-first map of the site (same host).
run_qaSingle-page sweep: console, network, WCAG a11y, SEO, load time, visual overflow, clipped text, small targets, and blocking overlays.
check_linksProbe every link; report 4xx / 5xx / unreachable.
test_formsStatic form audit (security / validation / a11y) β€” no submit.
fuzz_formsActive: 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_dataShow the test cases used for a field type.
deep_testThe 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_reportMulti-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

ToolWhat it does
fingerprintDetect server / hosting / framework / CMS / analytics from real headers + DOM signals β€” tune the hunt to the stack.
perf_auditReal Core Web Vitals (LCP, CLS, TBT, FCP, TTFB) + a Lighthouse-comparable 0-100 score. No estimates.
a11y_auditDeep WCAG 2.1 incl. real computed color-contrast, ARIA, labels, headings, focus order, zoom.
security_headersCSP, HSTS, X-Frame, nosniff, version/stack leaks.
security_scanFull non-destructive scan (core + advanced, see below).
advanced_securityAdvanced probe battery only.

Authenticated sessions

ToolWhat it does
save_sessionSave the current logged-in session (cookies + localStorage) to disk after you log in.
load_sessionRestore a saved session into a fresh context β€” crawl / deep test / security scan then run authenticated.
list_sessions Β· delete_sessionManage saved sessions.

Power & self-healing

ToolWhat it does
connect_chromeTroubleshooting fallback: launch a dedicated debuggable Chrome profile and attach when Chrome DevTools MCP auto-connect is unavailable.
browser_execRun any async Python against the live page β€” full Playwright power when a built-in tool can't do it.
save_helper Β· list_helpers Β· load_helperPersist reusable snippets so the agent gets smarter each run.
fagun_startShow the capability menu.

API integration management

ToolWhat it does
check_integrationsShow 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.

Key: VIRUSTOTAL_API_KEY (free at virustotal.com)
Setup: configure_api_key("virustotal", "your-key")
Package: @burtthecoder/mcp-virustotal
Tools: URL/file/IP/domain reports, relationship graphs, sandbox behaviour, threat collections, corpus search
πŸ”­

Shodan 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.

Key: SHODAN_API_KEY (free tier at shodan.io)
Setup: configure_api_key("shodan", "your-key")
Package: @burtthecoder/mcp-shodan
Tools: IP lookup, DNS/reverse-DNS, host search, CVE lookup, CPE vuln search, port/protocol listing
🎭

Playwright 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.

Package: @playwright/mcp (npx, no key needed)
Flags: --headless Β· --browser chrome|firefox|webkit Β· --device "iPhone 15"
Status: Auto-registered by fagun init
πŸ“‘

MCP 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.

Package: mcp-server-fetch (uvx, no key needed)
Status: Auto-registered by fagun init
πŸ›

Jam β€” 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.

Package: @jam-dev/jam-mcp (npx, no key needed)
Auth: OAuth β€” sign in once via browser popup
Status: Auto-registered by fagun init
Tools: Create bug reports with screen recordings, console + network capture
πŸ“š

Context7 β€” 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.

Package: @upstash/context7-mcp (npx, no key needed)
Status: Auto-registered by fagun init
Tools: Resolve library IDs, fetch current docs for any version
# See integration status β€Ί check_integrations() # Enable VirusTotal (asks for key, saves it, no restart needed for this session) β€Ί configure_api_key("virustotal", "your-api-key") # Enable Shodan β€Ί configure_api_key("shodan", "your-api-key") # Push keys to all AI tool MCP config files (so the external MCP servers start with the key) $ uvx fagun init

Test 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.

CategoryExamples
validwell-formed values that should be accepted β€” user@example.com, +8801712345678, 2024-02-29
invalidmalformed that should reject β€” missing @, letters in tel, month 13, non-leap Feb 29
edgeempty, single char, whitespace-only, shortest-legal
boundarylength+1, int32 max+1, 5000-char overflow, 400-digit number, >254-char email
outofboxunicode/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.

Exposed files (.git/.env/.aws)Leaked secrets (AWS/Stripe/JWT…)CORS misconfigReflected XSSOpen redirectSQLi error signalsCookie flagsCSP qualityClickjackingRisky HTTP methods / TRACEMixed contentMissing SRISensitive-page cachingHost-header injectionCRLF injectionPath traversal / LFISSTI (7*7=49)Command injection signalsGraphQL introspectionError / stack-trace disclosureSensitive data in URLSecurity headers

Example prompts

Just talk to it.

"deep test https://example.com and give me a readiness verdict + report to ./report.html"
"experience acme.store as a slow-internet mobile user β€” where would they give up?"
"run the checkout journey on staging and tell me if a real user can finish it"
"log into my app, save the session, then deep test the dashboard as that user"
"fingerprint example.com, then security scan it β€” I own it β€” and rank by severity"
"a11y audit + keyboard walk this page for WCAG AA and focus issues"
"check_integrations() β€” which MCPs do I have active right now?"
"scan example.com with virustotal and shodan, then deep test it β€” I own it"
"map the API surface of my SPA, check for unauth endpoints, then VirusTotal the domain"
"use Playwright MCP to record a signup flow, then run Fagun security_scan on the result"

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.

$ uvx fagun init
β˜… Star on GitHub ← Back home