{"name":"io.github.ksgisang/awt","slug":"ksgisang-awt","title":"AWT (AI Watch Tester)","description":"AI-powered E2E testing MCP server. Detects and auto-fixes UI bugs via DevQA Loop and Vision AI.","url":"https://mcp.market/server/ksgisang-awt","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":27,"stars":1,"forks":0,"downloads_week":58,"last_push_at":"2026-09-19T03:35:37.000Z","license":"AGPL-3.0"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ksgisang/awt-skill","website":null,"version":"1.7.1","remotes":[],"packages":[{"registryType":"pypi","identifier":"aat-devqa","version":"1.7.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Anthropic API key (optional — required only when using provider=claude)","format":"string","isSecret":true,"name":"ANTHROPIC_API_KEY"},{"description":"OpenAI API key (optional — required only when using provider=openai)","format":"string","isSecret":true,"name":"OPENAI_API_KEY"}]}],"tools":[{"name":"aat_cost","description":"View AWT AI API usage costs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_devqa","description":"Full auto DevQA loop: scan → generate → show scenario → wait for approval → run → fix.","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_diff","description":"Compare current screenshots against saved baselines (visual regression).","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_doctor","description":"Check AWT environment and dependencies.","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_generate_from_doc","description":"Generate test scenarios from a document (spec, plan, or any text file).","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_list_scenarios","description":"List YAML scenario files in the current directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_run","description":"STEP 3: Run AWT test scenarios (requires prior user approval).","write_action":true,"price_micros":0,"input_schema":null},{"name":"aat_run_skill_mode","description":"STEP 3 (alternative): Run AWT in skill mode with structured failure diagnosis.","write_action":true,"price_micros":0,"input_schema":null},{"name":"aat_scan","description":"STEP 1: Scan a web page to discover all interactive elements.","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_snapshot","description":"Capture baseline screenshots for visual regression testing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_validate","description":"Validate YAML scenario files against AWT schema.","write_action":false,"price_micros":0,"input_schema":null},{"name":"aat_watch","description":"Start watch mode — auto-run tests on file changes.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-19T21:32:23.285Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-19T21:32:23.283Z","components":{"code":{"score":8,"max":25,"notes":["174 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"aat_devqa-1.7.1/mcp/server.py: …in [\"aat\", \"python -m aat\"]: if os.system(f\"which {candidate.split()[0]} > /dev/null…"},{"id":"exec.shell-true","severity":"medium","component":"code","title":"subprocess with shell=True","evidence":"aat_devqa-1.7.1/src/aat/core/teardown.py: … command, shell=True, capture_output=True, …"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"aat-devqa","version":"1.7.1","found":true,"weeklyDownloads":58,"license":"AGPL-3.0-only","dependencyCount":32,"publishedAt":"2026-09-19T03:35:02.698784Z","repositoryUrl":"https://github.com/ksgisang/AI-Watch-Tester"}],"repo":{"found":true,"owner":"ksgisang","repo":"awt-skill","archived":false,"pushedAt":"2026-09-19T03:35:37Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/16285011?v=4","ownerCreatedAt":"2015-12-14T06:50:14Z","license":"AGPL-3.0"},"icon":{"url":null,"source":"none"},"presence":{"stars":1,"forks":0,"downloadsWeek":58,"license":"AGPL-3.0","lastPushAt":"2026-09-19T03:35:37.000Z","score":27}}}},"grade_history":[],"reviews":[]}