{"$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-06T16:31:36.975Z","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom","markdownUrl":"https://verifymcp.io/servers/atastech-pitroom/pitroom.md","server":{"slug":"atastech-pitroom","name":"Pitroom","registryName":"io.github.ATASTECH/pitroom","description":"Hands bounded coding work to cheaper worker agents: verified answers, exact diffs, cost receipts.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"pitroom","type":"npm","identifier":"pitroom","withdrawn":false,"url":"https://verifymcp.io/servers/atastech-pitroom/pitroom","version":"0.29.0","transport":"stdio","scoredAt":"2026-11-06T00:37:05.297Z"},"score":{"total":90,"tier":"high trust","status":"scored","weekDelta":3,"history":[{"date":"2026-11-06","total":90},{"date":"2026-11-05","total":90},{"date":"2026-11-04","total":89},{"date":"2026-11-03","total":89},{"date":"2026-11-02","total":88},{"date":"2026-11-01","total":88},{"date":"2026-10-31","total":87},{"date":"2026-10-30","total":87},{"date":"2026-10-29","total":86},{"date":"2026-10-28","total":86},{"date":"2026-10-27","total":86},{"date":"2026-10-26","total":85},{"date":"2026-10-25","total":85},{"date":"2026-10-24","total":84},{"date":"2026-10-23","total":84},{"date":"2026-10-22","total":83},{"date":"2026-10-21","total":83},{"date":"2026-10-20","total":82},{"date":"2026-10-19","total":71},{"date":"2026-10-18","total":81},{"date":"2026-10-17","total":81},{"date":"2026-10-16","total":80},{"date":"2026-10-15","total":80},{"date":"2026-10-14","total":50},{"date":"2026-10-13","total":79},{"date":"2026-10-12","total":49},{"date":"2026-10-08","total":50}]},"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.","No production dependencies, so there is no dependency health to assess."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.no_dependencies","args":{"deps":"0","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":100,"verdict":"pass","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to ATASTECH/pitroom).","Clear OSI-approved license (MIT).","Actively maintained (last published 7 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"ATASTECH/pitroom"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"7"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":74,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 1594 tokens (~159/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"159","items":"10","tools":"10","tokens":"1594","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":80,"verdict":"partial","reasons":["Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"24"}}]},{"name":"Tool Coverage","score":88,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","65% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"65"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.","An AI judge read all 11 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_declared","args":{"pct":"100","annotated":"1","destructive":"1"}},{"code":"toolsafety.manipulation_clean","args":{"units":"11","judged":"11"}}]},{"name":"Capabilities","score":60,"verdict":"fail","reasons":["Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28."],"codes":[{"code":"protocol.outdated","args":{"latest":"2026-07-28","version":"2025-06-18"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"pitroom","type":"npm","identifier":"pitroom","withdrawn":false,"score":90,"current":true,"url":"https://verifymcp.io/servers/atastech-pitroom/pitroom","markdownUrl":"https://verifymcp.io/servers/atastech-pitroom/pitroom.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"pitroom"},{"label":"Version","value":"0.29.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"pitroom_run","title":"Run a worker","description":"Hand a bounded task to a cheaper worker agent. mode \"read\" (default): read-only research, an answer with verified file:line references. \"isolate\": the worker edits a private copy and you get the exact diff (then pitroom_review, pitroom_apply or pitroom_discard). \"write\": edits the working tree (undo: pitroom_revert). \"tasks\" or \"scopes\" run workers in parallel (read or isolate). Returns the report(s) and a receipt (a read question asked before on the same code comes back cached), or \"still running\" for pitroom_wait. The using-pitroom skill (or prompt) says when and how to delegate. Cancelling the call stops the run.","inputs":[{"name":"audit","type":"boolean","required":false,"description":"Read: have another worker re-check the answer (each one, with tasks)."},{"name":"continue","type":"string","required":false,"description":"A finished run to follow up in the same worker session."},{"name":"dir","type":"string","required":false,"description":"Project directory (default: the server's)."},{"name":"effort","type":"string","required":false,"description":"low, medium, high, xhigh."},{"name":"files","type":"array","required":false,"description":"Files to attach."},{"name":"fresh","type":"boolean","required":false,"description":"Read: ask a worker even if this question was answered on the same code."},{"name":"group","type":"string","required":false,"description":"Group name for related runs."},{"name":"inPlace","type":"boolean","required":false,"description":"Read: read the directory itself, not a snapshot without secret-looking files."},{"name":"link","type":"array","required":false,"description":"Ignored dirs to link into an isolated copy, e.g. [\"node_modules\"]."},{"name":"mode","type":"string","required":false,"description":null},{"name":"model","type":"string","required":false,"description":"Model for that worker."},{"name":"scopes","type":"array","required":false,"description":"Or \"task\" per part ({scope}): paths that do not overlap, or \"src/*/\"."},{"name":"task","type":"string","required":false,"description":"What to do, with the context the worker needs."},{"name":"tasks","type":"array","required":false,"description":"Or independent tasks, one worker each."},{"name":"tier","type":"string","required":false,"description":"cheap, standard or capable (from the config)."},{"name":"verify","type":"string","required":false,"description":"Command run afterwards, e.g. \"npm test\"."},{"name":"waitSeconds","type":"number","required":false,"description":"Seconds before returning \"still running\" (default 50, max 540)."},{"name":"web","type":"boolean","required":false,"description":"Allow web tools."},{"name":"worker","type":"string","required":false,"description":"Worker \"backend[:model]\", e.g. \"opencode\", \"claude:haiku\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":488},{"name":"pitroom_wait","title":"Wait for runs","description":"Wait for runs that came back \"still running\" and return their reports.","inputs":[{"name":"group","type":"string","required":false,"description":null},{"name":"runs","type":"array","required":false,"description":null},{"name":"waitSeconds","type":"number","required":false,"description":"Seconds before returning \"still running\" (default 50, max 540)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":61},{"name":"pitroom_show","title":"Show a run","description":"A run's report (live progress while it runs); patch: the exact diff; full: the untruncated answer.","inputs":[{"name":"full","type":"boolean","required":false,"description":null},{"name":"patch","type":"boolean","required":false,"description":null},{"name":"run","type":"string","required":false,"description":"Run id, or \"last\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":61},{"name":"pitroom_info","title":"Pitroom information","description":"Reports, changing nothing. topic: runs (latest runs; running, group), history (search earlier answers before asking again; text, state, model, since, limit), stats (success rate, time, tokens, audits per worker; since), savings (since, perModel), models (a backend's models and costs; worker, all), prices (USD per 1M tokens: the primary the savings are measured against, and each worker in use or the one named; worker), cooldown (rate-limited models being skipped), config, doctor (setup check).","inputs":[{"name":"all","type":"boolean","required":false,"description":null},{"name":"group","type":"string","required":false,"description":null},{"name":"limit","type":"number","required":false,"description":null},{"name":"model","type":"string","required":false,"description":null},{"name":"perModel","type":"boolean","required":false,"description":null},{"name":"running","type":"boolean","required":false,"description":null},{"name":"since","type":"string","required":false,"description":"7d, 30d, … or all."},{"name":"state","type":"string","required":false,"description":null},{"name":"text","type":"string","required":false,"description":null},{"name":"topic","type":"string","required":true,"description":null},{"name":"worker","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":213},{"name":"pitroom_review","title":"Review a change","description":"A read-only reviewer (another worker by default) judges a run's change or a commit range (\"main..HEAD\"): findings with severities and a SPEC / QUALITY verdict.","inputs":[{"name":"dir","type":"string","required":false,"description":"Project directory (default: the server's)."},{"name":"group","type":"string","required":false,"description":"Group name for related runs."},{"name":"plan","type":"string","required":false,"description":"With range: the plan file it implements."},{"name":"range","type":"string","required":false,"description":"Or a commit range \"A..B\"."},{"name":"run","type":"string","required":false,"description":"Run id, or \"last\"."},{"name":"tier","type":"string","required":false,"description":"cheap, standard or capable (from the config)."},{"name":"waitSeconds","type":"number","required":false,"description":"Seconds before returning \"still running\" (default 50, max 540)."},{"name":"worker","type":"string","required":false,"description":"Worker \"backend[:model]\", e.g. \"opencode\", \"claude:haiku\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":179},{"name":"pitroom_audit","title":"Audit an answer","description":"Another worker re-checks a read run's answer: AGREE, PARTIAL or DISAGREE, with the disputed claims.","inputs":[{"name":"run","type":"string","required":true,"description":"Run id, or \"last\"."},{"name":"waitSeconds","type":"number","required":false,"description":"Seconds before returning \"still running\" (default 50, max 540)."},{"name":"worker","type":"string","required":false,"description":"Worker \"backend[:model]\", e.g. \"opencode\", \"claude:haiku\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":98},{"name":"pitroom_apply","title":"Apply an isolated change","description":"Land an isolated run's patch (or a group's, in order) on the working tree; checked first. A patch deleting files needs allowDelete: pass it only after checking the deletions were asked for.","inputs":[{"name":"allowDelete","type":"boolean","required":false,"description":null},{"name":"group","type":"string","required":false,"description":null},{"name":"run","type":"string","required":false,"description":"Run id, or \"last\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":79},{"name":"pitroom_discard","title":"Discard an isolated change","description":"Drop an isolated run's private copy (the patch is kept).","inputs":[{"name":"run","type":"string","required":true,"description":"Run id, or \"last\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":36},{"name":"pitroom_revert","title":"Undo an in-place change","description":"Undo a mode \"write\" run's changes (refused if the files changed since).","inputs":[{"name":"run","type":"string","required":true,"description":"Run id, or \"last\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":41},{"name":"pitroom_stop","title":"Stop runs","description":"Stop a running or queued run, or a group; cooldowns: try rate-limited models again now.","inputs":[{"name":"cooldowns","type":"boolean","required":false,"description":null},{"name":"group","type":"string","required":false,"description":null},{"name":"run","type":"string","required":false,"description":"Run id, or \"last\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":59}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T00:37:05.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":0,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-08","recent":[{"id":"chg_01a1a910-3d12-7cce-8498-19881f1f09e2","kind":"score.total_changed","summary":"Trust score (89 → 90)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1a910-3d12-7cce-8498-19881f1f09e2"},{"id":"chg_01a19ed1-3836-7339-a59c-1de6dc8e8752","kind":"score.total_changed","summary":"Trust score (88 → 89)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a19ed1-3836-7339-a59c-1de6dc8e8752"},{"id":"chg_01a1947e-0ed9-728a-9ca6-58d9a737833f","kind":"score.total_changed","summary":"Trust score (87 → 88)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1947e-0ed9-728a-9ca6-58d9a737833f"},{"id":"chg_01a18a28-0a3b-72c8-9b87-0f409c00a541","kind":"score.total_changed","summary":"Trust score (86 → 87)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a18a28-0a3b-72c8-9b87-0f409c00a541"},{"id":"chg_01a1878e-6aa4-702e-8df2-6f2a6214ed14","kind":"score.total_changed","summary":"Trust score (50 → 86)","materiality":"functional","direction":"improvement","scoreDelta":36,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1878e-6aa4-702e-8df2-6f2a6214ed14"},{"id":"chg_01a1878b-60bc-7989-83b0-6c5896daefb9","kind":"check.unverifiable","summary":"Stability (0.50 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1878b-60bc-7989-83b0-6c5896daefb9"},{"id":"chg_01a1878b-60c0-7183-b764-d5ebe73c25eb","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1878b-60c0-7183-b764-d5ebe73c25eb"},{"id":"chg_01a1878b-60c0-76fa-9b33-4582f2c298f2","kind":"check.unverifiable","summary":"Capabilities (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1878b-60c0-76fa-9b33-4582f2c298f2"},{"id":"chg_01a1878b-60c0-7ca1-8a1a-41fb050a3951","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1878b-60c0-7ca1-8a1a-41fb050a3951"},{"id":"chg_01a1878b-60c1-72f5-80de-a16400f21e0b","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1878b-60c1-72f5-80de-a16400f21e0b"},{"id":"chg_01a1878b-60c1-7898-ada1-82924dbf4035","kind":"package.version_changed","summary":"Package version (0.27.0 → 0.29.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1878b-60c1-7898-ada1-82924dbf4035"},{"id":"chg_01a1878b-60c2-71db-9d6e-9db24287ed89","kind":"score.total_changed","summary":"Trust score (86 → 50)","materiality":"functional","direction":"regression","scoreDelta":-36,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a1878b-60c2-71db-9d6e-9db24287ed89"},{"id":"chg_01a17abb-5e79-74c3-9afb-9fdcc305ed40","kind":"score.total_changed","summary":"Trust score (85 → 86)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a17abb-5e79-74c3-9afb-9fdcc305ed40"},{"id":"chg_01a17329-49ee-753b-a527-2e1dd28e687e","kind":"score.total_changed","summary":"Trust score (50 → 85)","materiality":"functional","direction":"improvement","scoreDelta":35,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a17329-49ee-753b-a527-2e1dd28e687e"},{"id":"chg_01a17326-e750-7d07-9b9a-ccf0ef740175","kind":"check.unverifiable","summary":"Stability (0.37 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a17326-e750-7d07-9b9a-ccf0ef740175"},{"id":"chg_01a17326-e753-75cc-aa48-e4068ddb8d77","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a17326-e753-75cc-aa48-e4068ddb8d77"},{"id":"chg_01a17326-e753-7d0a-baa4-2f44db3f51e8","kind":"check.unverifiable","summary":"Capabilities (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a17326-e753-7d0a-baa4-2f44db3f51e8"},{"id":"chg_01a17326-e754-74db-96e3-156cc60d015c","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a17326-e754-74db-96e3-156cc60d015c"},{"id":"chg_01a17326-e755-7006-b777-afc8f8a656d0","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a17326-e755-7006-b777-afc8f8a656d0"},{"id":"chg_01a17326-e757-7b45-85ce-251c85abfd13","kind":"package.version_changed","summary":"Package version (0.25.0 → 0.27.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/atastech-pitroom/pitroom#chg-chg_01a17326-e757-7b45-85ce-251c85abfd13"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/atastech-pitroom/pitroom/changelog.json"},"links":{"html":"https://verifymcp.io/servers/atastech-pitroom/pitroom","markdown":"https://verifymcp.io/servers/atastech-pitroom/pitroom.md","changelogJson":"https://verifymcp.io/servers/atastech-pitroom/pitroom/changelog.json","changelogRss":"https://verifymcp.io/servers/atastech-pitroom/pitroom.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/pitroom"},{"label":"Socket report","href":"https://socket.dev/npm/package/pitroom"},{"label":"Repository","href":"https://github.com/ATASTECH/pitroom"}]}}