{"$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-05T23:38:55.100Z","url":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap","markdownUrl":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap.md","server":{"slug":"brucexcluding-session-recap","name":"session-recap","registryName":"io.github.BruceXcluding/session-recap","description":"Recap AI coding sessions (Claude Code, Codex, dsh, OpenCode): intent, decisions, open threads.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"session-recap","type":"npm","identifier":"session-recap","withdrawn":false,"url":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap","version":"0.6.0","transport":"stdio","scoredAt":"2026-11-05T15:38:04.483Z"},"score":{"total":53,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":53}]},"categories":[{"name":"Supply Chain Security","score":50,"verdict":"unverified","reasons":["Malware scan not yet available for this package.","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_inconclusive","args":{"reason":"vendor_not_cached"}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.no_dependencies","args":{"deps":"0","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 0 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":"0"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":67,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 516 tokens (~172/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":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"172","items":"3","tools":"3","tokens":"516","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":95,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","86% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"86"}}]},{"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":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 scan not yet available for this package.","Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"malware":[],"components":[{"slug":"session-recap","type":"npm","identifier":"session-recap","withdrawn":false,"score":53,"current":true,"url":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap","markdownUrl":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"session-recap"},{"label":"Version","value":"0.6.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"list_sessions","title":"List AI coding sessions","description":"Lists saved sessions of Claude Code, Codex, dsh and OpenCode on this machine, newest first: agent, id, title, project folder, last activity. Filter by words in the title, by project folder, or by agent.","inputs":[{"name":"agent","type":"string","required":false,"description":"Only this agent; \"any\" for all (default)"},{"name":"cwd","type":"string","required":false,"description":"Only sessions of this project folder (absolute path)"},{"name":"limit","type":"number","required":false,"description":"At most this many (default 20)"},{"name":"query","type":"string","required":false,"description":"Words in the title, or a session id"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":122},{"name":"recap_session","title":"Recap a session","description":"Recaps a coding session: intent, key decisions, what changed, open threads, where to resume. With no session given, the newest session of the calling agent in `cwd`. Returns a stored recap when the session has not changed since. Otherwise, if session-recap has a model configured it writes the recap; if not, it returns the condensed transcript and instructions, and you write the recap yourself and store it with save_recap.","inputs":[{"name":"agent","type":"string","required":false,"description":"The agent whose sessions to look in; default: the caller"},{"name":"cwd","type":"string","required":false,"description":"The project folder you are working in (absolute path)"},{"name":"format","type":"string","required":false,"description":"\"recap\" (default: intent, decisions, changes, open threads, resume), \"standup\", \"handoff\" or \"pr\""},{"name":"mode","type":"string","required":false,"description":"\"agent\": you write it; \"model\": session-recap writes it; \"auto\" (default): model if configured"},{"name":"refresh","type":"boolean","required":false,"description":"Write it again even if a stored recap is current"},{"name":"session","type":"string","required":false,"description":"A session id or words in its title; empty for the current session"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":239},{"name":"save_recap","title":"Store a recap you wrote","description":"Stores the recap you wrote for a session after recap_session returned its transcript, so the next recap of that session is reused or updated from it. Pass the agent, id and prompts recap_session gave you.","inputs":[{"name":"agent","type":"string","required":true,"description":null},{"name":"id","type":"string","required":true,"description":null},{"name":"markdown","type":"string","required":true,"description":"The recap, in the format recap_session asked for"},{"name":"prompts","type":"number","required":true,"description":"The prompt count recap_session reported"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":94}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:38:04.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":0,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-11-05","recent":[{"id":"chg_01a1ac5c-2d5e-7e4b-85e5-ebb8548ea23b","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap#chg-chg_01a1ac5c-2d5e-7e4b-85e5-ebb8548ea23b"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap/changelog.json"},"links":{"html":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap","markdown":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap.md","changelogJson":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap/changelog.json","changelogRss":"https://verifymcp.io/servers/brucexcluding-session-recap/session-recap.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/session-recap"},{"label":"Socket report","href":"https://socket.dev/npm/package/session-recap"},{"label":"Repository","href":"https://github.com/BruceXcluding/session-recap"}]}}