{"name":"io.github.baopeak/verirun","slug":"baopeak-verirun","title":null,"description":"Execution-grounded verification for AI coding agents on Windows: evidence, not agent claims.","url":"https://mcp.market/server/baopeak-verirun","rating":null,"grade":"C","score":65,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":13,"stars":null,"forks":null,"downloads_week":349,"last_push_at":null,"license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/baopeak/verirun","website":null,"version":"0.2.1-dev","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"verirun","version":"0.2.1-dev","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"mcp","type":"positional"}],"environmentVariables":[{"description":"Set to 1 to allow Tier C (OS-wide send-input/click). User-side only; off by default.","name":"VERIRUN_ALLOW_INPUT_INJECTION"},{"description":"Set to 1 to let a declared endpoint keep working after its DNS answer moves to a different address (each move is recorded). Off by default: a moved endpoint is refused.","name":"VERIRUN_ALLOW_ENDPOINT_REPIN"},{"description":"Override the evidence-record directory (default %LOCALAPPDATA%\\Verirun\\runs).","name":"VERIRUN_DATA_DIR"}]}],"tools":[{"name":"assert_evaluate","description":"Register an assertion (provenance is FORCED to AGENT_RELAY — relayed requirements carry no CONFIRMED authority) and have the evaluator collect ITS OWN evidence to a PASS/FAIL/INCONCLUSIVE verdict. Timing lives in a nested `temporal` object — `{kind, ..., temporal: {within_ms, settle_ms, after_ref}}`: within_ms polls positives, negatives only FAIL after settle_ms fully elapses, after_ref anchors th","write_action":false,"price_micros":0,"input_schema":null},{"name":"fixture_prepare","description":"Prepare fixture files inside the granted scope. Before-state is backed up into the run record; compensating restore runs at teardown even if this process dies (sweep).","write_action":false,"price_micros":0,"input_schema":null},{"name":"observe_filesystem","description":"Observe a file or directory inside the granted scope: existence, size, mtime, optional SHA-256, dir listing. Recorded as OBSERVER evidence.","write_action":false,"price_micros":0,"input_schema":null},{"name":"observe_http","description":"Read a declared http(s) endpoint and record what the SERVER returned — status, size, sha256, body and the addresses the host resolved to — as OBSERVER evidence. This is the evidence layer for web apps whose effect lands on a server rather than on disk. Read-only: GET/HEAD only, no credentials, and redirects are NOT followed (a 3xx comes back as data so a redirect cannot carry the read outside the ","write_action":false,"price_micros":0,"input_schema":null},{"name":"observe_logs","description":"Tail a text log file inside the granted scope. The tail arrives fenced as untrusted app text.","write_action":false,"price_micros":0,"input_schema":null},{"name":"observe_screenshot","description":"Capture the target window as PNG evidence stored in the run record (outside the workspace).","write_action":false,"price_micros":0,"input_schema":null},{"name":"observe_sqlite","description":"Read-only SQLite observation inside the granted scope. Only row-returning single statements (SELECT/WITH); rows are fenced as untrusted app data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"replay_propose","description":"Propose a verbatim replay of this run's recorded actions. Replay is NON_REPLAYABLE by default — the agent can only propose; execution needs user authorization (REPLAY_AUTHORIZED_BY_USER) out-of-band. Authorization ≠ safety.","write_action":false,"price_micros":0,"input_schema":null},{"name":"requirement_register","description":"Register a requirement RELAYED by the agent. It is recorded with AGENT origin and carries no verification authority by itself.","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_stop","description":"Stop the run: state-machine-owned teardown (kill target tree), watcher health consulted (a dead watcher forces fail-closed INTERNAL_ERROR), resolution written.","write_action":true,"price_micros":0,"input_schema":null},{"name":"scope_request","description":"Request additional scope mid-run. Request ≠ Grant: V0 records the request and returns PENDING_USER — no runtime grant, never retroactive.","write_action":false,"price_micros":0,"input_schema":null},{"name":"target_launch","description":"Launch the target app process and wait for UI readiness. Returns pids/hwnd receipt.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ui_act","description":"Act on the target UI. Tier A: invoke/set_value (UIA patterns, no injection). Tier B: send_keys via post-message (HWND-targeted; cannot type into most text boxes — measured). Tier C: send_keys via send-input or click (OS-wide, needs allow_input_injection on the user side; focus pre-check + abort-on-focus-loss enforced).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ui_inspect","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"ui_search","description":"Find elements by name/automationId text (or semantic slug) ANYWHERE in the target tree, at any depth. Use this when ui_inspect returns depthCapped or an element is not in the inspected tree: web/Chromium content nests past any fixed depth (measured: a 40-level page keeps its button below depth 32, where this search still finds it). Returns up to 50 matches with slugs; app text arrives fenced as UN","write_action":false,"price_micros":0,"input_schema":null},{"name":"verify_begin","description":"Begin a verification run. Declared scope paths and endpoints are validated and bounded (over-broad declarations are refused). Returns run_id. One active run per server.","write_action":false,"price_micros":0,"input_schema":null},{"name":"verify_finalize","description":"Finalize the run: evaluator-derived verdict-of-record (CONFIRMED only from SYSTEM_DEFAULT invariants in V0), report.md/verdict.json rendered with untrusted-text escaping, per-target anti-gaming counts, then state-machine teardown.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_until","description":"Wait for an element to appear/disappear or reach a value. This is the observation primitive for effects — receipt ≠ effect.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":65,"grade":"C","scanned_at":"2026-09-19T20:03:49.830Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:03:49.807Z","components":{"code":{"score":25,"max":25,"notes":["85 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":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"verirun","version":"0.2.1-dev","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-09-14T02:39:45.942Z","repositoryUrl":"git+https://github.com/baopeak/verirun.git","weeklyDownloads":349}],"repo":{"found":false,"owner":"baopeak","repo":"verirun","error":"repo not found"},"icon":{"url":null,"source":"none"},"presence":{"stars":null,"forks":null,"downloadsWeek":349,"license":"Apache-2.0","lastPushAt":null,"score":13}}}},"grade_history":[],"reviews":[]}