{"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"},"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":[],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-19T04:43:33.140Z","report":{"scannerVersion":"0.1.3","scannedAt":"2026-09-19T04:43:33.053Z","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 0 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":[]}