{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T20:03:48.763Z","url":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp","markdownUrl":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp.md","server":{"slug":"vschernoff-forge-test-mcp","name":"io.github.vschernoff/forge-test-mcp","registryName":"io.github.vschernoff/forge-test-mcp","description":"Runs Foundry tests and builds; returns compact, structured failures to AI coding agents","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"forge-test-mcp","type":"npm","identifier":"forge-test-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp","version":"0.1.0","transport":"stdio","scoredAt":"2026-11-05T05:25:15.292Z"},"score":{"total":70,"tier":"medium","status":"scored","weekDelta":0,"history":[{"date":"2026-11-05","total":70},{"date":"2026-11-04","total":70},{"date":"2026-11-03","total":70},{"date":"2026-11-02","total":70},{"date":"2026-11-01","total":70},{"date":"2026-10-31","total":70},{"date":"2026-10-30","total":70},{"date":"2026-10-29","total":70},{"date":"2026-10-28","total":70},{"date":"2026-10-27","total":70},{"date":"2026-10-26","total":55}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"pass","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","0 of 3 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"3","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":48,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 9 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"9"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":70,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 526 tokens (~175/item across 3 items; 3 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"175","items":"3","tools":"3","tokens":"526","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 3 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 4 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"3"}},{"code":"toolsafety.manipulation_clean","args":{"units":"4","judged":"4"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"malware":[],"components":[{"slug":"forge-test-mcp","type":"npm","identifier":"forge-test-mcp","withdrawn":false,"score":70,"current":true,"url":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp","markdownUrl":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"forge-test-mcp"},{"label":"Version","value":"0.1.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"run_tests","title":null,"description":"Run `forge test` and return a compact summary: counts, and for each failing test its kind (unit, fuzz, invariant, setup), decoded reason, fuzz counterexample or invariant call sequence, and console logs. isError means the tests did not run (compile error, no matching tests, timeout, missing forge, …); never report that as passing.","inputs":[{"name":"fuzz_runs","type":"integer","required":false,"description":"Override fuzz runs. A value below the project setting is reported as reduced; do not use it to make tests pass."},{"name":"match_contract","type":"string","required":false,"description":"Only run test contracts matching this regex."},{"name":"match_path","type":"string","required":false,"description":"Only run test files matching this glob."},{"name":"match_test","type":"string","required":false,"description":"Only run test functions matching this regex."},{"name":"max_bytes","type":"integer","required":false,"description":"Response size budget in bytes (default 8192)."},{"name":"traces","type":"boolean","required":false,"description":"Attach a decoded trace excerpt to the first 5 failures (a second, text-mode forge run). Default true."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":204},{"name":"explain_failure","title":null,"description":"Re-run one test at high verbosity and return only that test: its reason, decoded call trace (trimmed to the path to the revert when long), backtrace, logs and, for fuzz or invariant tests, the counterexample. Pass the test name as run_tests reports it, e.g. \"BankTest.test_transfer()\".","inputs":[{"name":"contract","type":"string","required":false,"description":"Test contract, if not given in `test`."},{"name":"max_bytes","type":"integer","required":false,"description":"Response size budget in bytes (default 8192)."},{"name":"test","type":"string","required":true,"description":"Test function, optionally with its contract: \"Contract.test_name()\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":129},{"name":"build","title":null,"description":"Compile the project with `forge build` and return compiler errors and warnings as structured items (file, line, column, code, message). Unchanged files are not recompiled and forge does not repeat their warnings; pass force: true to recompile everything.","inputs":[{"name":"force","type":"boolean","required":false,"description":"Recompile everything, so warnings for unchanged files are reported again."},{"name":"max_bytes","type":"integer","required":false,"description":"Response size budget in bytes (default 8192)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":96}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T05:25:15.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":null,"reasonLabel":null,"discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":3,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-26","recent":[{"id":"chg_01a17bc6-06aa-76f5-bf83-63c9790043ac","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp#chg-chg_01a17bc6-06aa-76f5-bf83-63c9790043ac"},{"id":"chg_01a17bc6-06aa-7e37-85fb-899feeb50d2b","kind":"score.total_changed","summary":"Trust score (55 → 70)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp#chg-chg_01a17bc6-06aa-7e37-85fb-899feeb50d2b"},{"id":"chg_01a1794b-3f59-794a-877d-e4729e2bd932","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp#chg-chg_01a1794b-3f59-794a-877d-e4729e2bd932"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp","markdown":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp.md","changelogJson":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/vschernoff-forge-test-mcp/forge-test-mcp.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/forge-test-mcp"},{"label":"Socket report","href":"https://socket.dev/npm/package/forge-test-mcp"},{"label":"Repository","href":"https://github.com/vschernoff/forge-test-mcp"}]}}