{"name":"io.github.mrhpython/lens-mcp","slug":"mrhpython-lens-mcp","title":null,"description":"Outside-in validation gate for AI-generated text; a separate model checks LLM output, fail-closed.","url":"https://mcp.market/server/mrhpython-lens-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":46,"last_push_at":"2026-10-19T23:24:05.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/mrhpython/lens-mcp","website":null,"version":"1.1.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@soulfield/lens-mcp","version":"1.1.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Lens API base URL. Use https://api.soulfield.one for the hosted service.","default":"https://api.soulfield.one","name":"SOULFIELD_API_BASE"},{"description":"API key for validate_content and scrub_pii. Get one free, self-serve, no card, at https://api.soulfield.one/pricing#signup. lens_health needs no key.","isSecret":true,"name":"SOULFIELD_API_KEY"}]}],"tools":[{"name":"lens_catches_add","description":"Append a NAMED DEFECT to the defect bank so it is caught next time. Record what was WRONG, the general pattern it is an instance of, and the forward rule that prevents it — doctrine REJECTS routine passes, so only log actual defects. Set self_catch=true when the defect was a failure of your own validation discipline. This is the write half of the improvement loop: enough recurrences of a pattern p","write_action":false,"price_micros":0,"input_schema":null},{"name":"lens_catches_relevant","description":"Read the defect bank BEFORE validating: prior named defects for an artifact type, most-recurrent patterns first. This is the institutional memory that makes the gate improve over time — the recurring traps tell you where this class of artifact has failed before. Any pattern at threshold is marked [PROMOTE], meaning it recurs often enough to deserve a deterministic check. Runs the local lens-kit CL","write_action":false,"price_micros":0,"input_schema":null},{"name":"lens_catches_stats","description":"Per-pattern recurrence counts across the defect bank. Any pattern at or above the threshold gets a PROMOTE-to-deterministic-check suggestion — that is the signal a recurring judgment call should become a cheap fixed check instead. Use this to decide what to harden next.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lens_consistency_leaks","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"lens_consistency_markers","description":"Check that evidence markers counted in a source artifact survive into every rendered output. Deterministic, no LLM, exit 6 on a violation. Catches the caveat, citation or hedge that gets dropped between formats — the source says 'as-of 2026-04' and the rendered deck quietly does not. Matching is CASE-SENSITIVE (unlike lens_consistency_leaks, which is case-insensitive), so pick markers whose casing","write_action":false,"price_micros":0,"input_schema":null},{"name":"lens_consistency_numbers","description":"Check that every numeric literal in a summary actually appears in the body it summarizes. Deterministic, no LLM, exit 6 on a violation. Catches the invented figure — the number a summary asserts that its source never stated. TRIPWIRE, not an oracle: literal matching only, no semantic or derived arithmetic, so a legitimately computed total will flag. Review a hit, do not auto-trust it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lens_health","description":"Check if the Soulfield Lens API service is running and responsive. Returns status and version. No auth required.","write_action":false,"price_micros":0,"input_schema":null},{"name":"scrub_pii","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_content","description":"","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-10-30T18:17:27.355Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-30T18:17:27.310Z","components":{"code":{"score":25,"max":25,"notes":["2 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 11 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@soulfield/lens-mcp","version":"1.1.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-08-27T23:10:06.854Z","repositoryUrl":"git+https://github.com/mrhpython/lens-mcp.git","weeklyDownloads":46}],"repo":{"found":true,"owner":"mrhpython","repo":"lens-mcp","archived":false,"pushedAt":"2026-10-19T23:24:05Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/77588487?v=4","ownerCreatedAt":"2021-01-17T20:00:26Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":46,"license":"MIT","lastPushAt":"2026-10-19T23:24:05.000Z","score":23}}}},"grade_history":[],"reviews":[]}