{"name":"com.golproductions/exnos","slug":"golproductions-exnos","title":"Exnos","description":"Read-only live state of your Chrome tabs for AI agents: fields, console errors, network, storage.","url":"https://mcp.market/server/golproductions-exnos","rating":null,"grade":"B","score":74,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":30,"stars":0,"forks":0,"downloads_week":224,"last_push_at":"2026-09-24T04:33:28.000Z","license":"NOASSERTION"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/golproductions/exnos","website":"https://golproductions.com/exnos","version":"0.5.6","remotes":[],"packages":[{"registryType":"npm","identifier":"@golproductions/exnos","version":"0.5.6","runtimeHint":"npx","transport":{"type":"stdio"}}],"tools":[{"name":"exnos_fetch_tabs","description":"Fetch live state from multiple Chrome tabs in one call. Pass an array of tab matchers (URL or title substrings) and get back the full exnos_verify state for each matched tab. Use when you need to read several tabs at once without calling exnos_verify repeatedly.","write_action":false,"price_micros":0,"input_schema":null},{"name":"exnos_screenshot","description":"Capture a PNG screenshot of the visible Chrome tab. Use for visual bugs where text state is not enough. Returns a base64 data URL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"exnos_tabs","description":"List all open Chrome tabs (title, URL, which is active). Use to find the right tab value for exnos_verify.","write_action":false,"price_micros":0,"input_schema":null},{"name":"exnos_verify","description":"Your eyes on the user's live Chrome tab, in milliseconds. Use it (1) right after editing any HTML, CSS, or JS file a browser is rendering, the same way a write is followed by a read-back; (2) the instant the user reports a page problem (\"broken\", \"blank\", \"not working\", \"still the same\", \"nothing happens\"), the console error usually names the bug outright; (3) always before saying \"done\", \"fixed\",","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":74,"grade":"B","scanned_at":"2026-09-24T05:03:03.664Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:03:03.645Z","components":{"code":{"score":13,"max":25,"notes":["6 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":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","website matches verified namespace"]}},"findings":[{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"server/exnos-mcp.cjs: … dir, label) => { try { execSync('claude mcp remove --scope ' + scope + ' exnos', { cwd: dir, stdio: 'p…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@golproductions/exnos","version":"0.5.6","found":true,"license":"SEE LICENSE IN LICENSE","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-09-24T04:33:07.044Z","repositoryUrl":"git+https://github.com/golproductions/exnos.git","weeklyDownloads":224}],"repo":{"found":true,"owner":"golproductions","repo":"exnos","archived":false,"pushedAt":"2026-09-24T04:33:28Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/246919097?v=4","ownerCreatedAt":"2025-11-30T00:26:30Z","license":"NOASSERTION"},"icon":{"url":"https://golproductions.com/logo.png","source":"registry","width":500,"height":500},"presence":{"stars":0,"forks":0,"downloadsWeek":224,"license":"NOASSERTION","lastPushAt":"2026-09-24T04:33:28.000Z","score":30}}}},"grade_history":[],"reviews":[]}