{"$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-05T17:27:56.256Z","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel","markdownUrl":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel.md","server":{"slug":"alebrito124356-mcp-secret-sentinel","name":"Secret Sentinel","registryName":"io.github.AleBrito124356/mcp-secret-sentinel","description":"Local secret guardrails: scan code, git changes and MCP configs for API keys; redact text","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"mcp-secret-sentinel","type":"pypi","identifier":"mcp-secret-sentinel","withdrawn":false,"url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel","version":"0.3.0","transport":"stdio","scoredAt":"2026-11-05T11:15:35.685Z"},"score":{"total":79,"tier":"medium","status":"scored","weekDelta":15,"history":[{"date":"2026-11-05","total":79},{"date":"2026-11-04","total":64},{"date":"2026-11-03","total":64},{"date":"2026-11-02","total":79},{"date":"2026-11-01","total":79},{"date":"2026-10-31","total":79},{"date":"2026-10-30","total":64},{"date":"2026-10-29","total":64},{"date":"2026-10-28","total":79},{"date":"2026-10-27","total":79},{"date":"2026-10-26","total":64},{"date":"2026-10-25","total":79},{"date":"2026-10-24","total":64},{"date":"2026-10-23","total":64},{"date":"2026-10-22","total":79},{"date":"2026-10-21","total":64},{"date":"2026-10-20","total":64},{"date":"2026-10-19","total":64}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","Runs hatchling.build at install time, a recognised build step with no custom scripting around it.","1 of 29 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.allowlisted","args":{"tool":"hatchling.build","hooks":"build_backend"}},{"code":"dephealth.assessed","args":{"deps":"29","unhealthy":"1"}}]},{"name":"Provenance & Transparency","score":97,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to AleBrito124356/mcp-secret-sentinel).","Clear OSI-approved license (MIT).","Actively maintained (last published 16 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"AleBrito124356/mcp-secret-sentinel"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"16"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":75,"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 2095 tokens (~209/item across 10 items; 9 tools + 1 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":"209","items":"10","tools":"9","tokens":"2095","resources":"1"}},{"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":71,"verdict":"fail","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","0% of tool parameters carry a description.","Structured output schemas are declared (89% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"0"}},{"code":"toolquality.output_present","args":{"pct":"89"}}]},{"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 9 captured tool definition(s), and no name or description among them implies an irreversible operation.","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_none","args":{"tools":"9"}},{"code":"toolsafety.manipulation_clean","args":{"units":"11","judged":"11"}}]},{"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":"mcp-secret-sentinel","type":"pypi","identifier":"mcp-secret-sentinel","withdrawn":false,"score":79,"current":true,"url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel","markdownUrl":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"mcp-secret-sentinel"},{"label":"Version","value":"0.3.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"scan_text","title":null,"description":"Scan a snippet of text or code for exposed secrets.\n\n64 detectors: GitHub/GitLab/npm/PyPI tokens; OpenAI, Anthropic, xAI,\nDeepSeek, Perplexity, OpenRouter, Groq, NVIDIA, Hugging Face, Replicate,\nTogether, Cerebras, LangSmith, Langfuse, Pinecone, Firecrawl and Tavily\nkeys; AWS (incl. Bedrock), Azure, Google, DigitalOcean, Cloudflare,\nVercel, Supabase, Neon, PlanetScale, Fly.io, Databricks, Vault and\nDoppler credentials; Stripe, Square, Shopify, SendGrid, Resend,\nMailchimp, Twilio, Slack, Discord, Telegram, Linear, Notion, Atlassian,\nPostman, Sentry, Grafana and PostHog tokens; JWTs, private and age keys,\ncredentialed connection strings and URLs, generic password/secret/token\nassignments, plus high-entropy strings. Placeholders ($VAR, ${VAR},\n{{ templates }}, changeme, masked values...) are skipped, and a line\ncarrying \"secret-sentinel: ignore\", \"pragma: allowlist secret\" or\n\"gitleaks:allow\" is counted in \"suppressed\" instead of reported.\n\nArgs:\n    text: The raw text to scan (code, config, diff output, logs...).\n    source_name: Label used in each finding's \"file\" field.\n    max_findings: List at most this many findings, most severe first\n        (default 200, 0 = no limit). When capped, the result adds\n        truncated, total_findings, counts_by_severity, counts_by_pattern\n        and top_files.\n\nReturns:\n    {\"clean\", \"findings\": [{\"file\", \"line\", \"pattern\", \"severity\",\n    \"redacted\", \"advice\"}], \"files_scanned\", \"summary\"}. Secret values\n    are ALWAYS redacted (at most 4 chars, never more than a quarter of\n    the value, + length); the full value is never included.","inputs":[{"name":"max_findings","type":"integer","required":false,"description":null},{"name":"source_name","type":"string","required":false,"description":null},{"name":"text","type":"string","required":true,"description":null}],"outputs":[{"name":"baselined","type":null,"required":false,"description":null},{"name":"clean","type":"boolean","required":true,"description":null},{"name":"counts_by_pattern","type":null,"required":false,"description":null},{"name":"counts_by_severity","type":null,"required":false,"description":null},{"name":"files_scanned","type":"integer","required":true,"description":null},{"name":"findings","type":"array","required":true,"description":null},{"name":"summary","type":"string","required":true,"description":null},{"name":"suppressed","type":null,"required":false,"description":null},{"name":"top_files","type":null,"required":false,"description":null},{"name":"total_findings","type":null,"required":false,"description":null},{"name":"truncated","type":null,"required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":462},{"name":"redact_text","title":null,"description":"Return the text with every detected secret replaced by [REDACTED:<detector>].\n\nUse it before quoting logs, stack traces, configs, command output or\ndiffs that may contain credentials, in the conversation, an issue, a\ncommit message or a document. Everything that is not a secret is kept\nexactly as it was.\n\nArgs:\n    text: The text to clean.\n\nReturns:\n    {\"text\": the redacted text, \"redactions\": how many secrets were\n    replaced, \"by_pattern\": {detector name: count}}","inputs":[{"name":"text","type":"string","required":true,"description":null}],"outputs":[{"name":"by_pattern","type":"object","required":true,"description":null},{"name":"redactions","type":"integer","required":true,"description":null},{"name":"text","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":130},{"name":"scan_file","title":null,"description":"Scan a single file for exposed secrets.\n\nUTF-8, UTF-16 and UTF-32 text is decoded by byte-order mark. Binary files\n(null-byte heuristic) and files larger than 5 MB are skipped and reported\nas such in the summary. The project's .secret-sentinel.toml and baseline\napply.\n\nArgs:\n    path: Absolute path to the file to scan.\n    max_findings: List at most this many findings, most severe first\n        (default 200, 0 = no limit).\n\nReturns:\n    The standard redacted findings report (see scan_text). Returns an\n    error result if the file does not exist.","inputs":[{"name":"max_findings","type":"integer","required":false,"description":null},{"name":"path","type":"string","required":true,"description":null}],"outputs":[{"name":"baselined","type":null,"required":false,"description":null},{"name":"clean","type":"boolean","required":true,"description":null},{"name":"counts_by_pattern","type":null,"required":false,"description":null},{"name":"counts_by_severity","type":null,"required":false,"description":null},{"name":"files_scanned","type":"integer","required":true,"description":null},{"name":"findings","type":"array","required":true,"description":null},{"name":"summary","type":"string","required":true,"description":null},{"name":"suppressed","type":null,"required":false,"description":null},{"name":"top_files","type":null,"required":false,"description":null},{"name":"total_findings","type":null,"required":false,"description":null},{"name":"truncated","type":null,"required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":157},{"name":"scan_directory","title":null,"description":"Recursively scan a directory tree for exposed secrets.\n\nInside a git repository the file list comes from git (tracked files plus\nuntracked files no .gitignore excludes), so every ignore rule is\nhonoured. Always skips .git, node_modules, virtualenvs, caches, dist,\nbuild, minified bundles, lockfiles, binaries, files over 5 MB and the\npaths the project's .secret-sentinel.toml excludes.\n\nArgs:\n    path: Absolute path to the directory to scan.\n    max_files: Stop after scanning this many files (default 500).\n    max_findings: List at most this many findings, most severe first\n        (default 200, 0 = no limit).\n\nReturns:\n    The standard redacted findings report; finding paths are relative to\n    the scanned root, using forward slashes.","inputs":[{"name":"max_files","type":"integer","required":false,"description":null},{"name":"max_findings","type":"integer","required":false,"description":null},{"name":"path","type":"string","required":true,"description":null}],"outputs":[{"name":"baselined","type":null,"required":false,"description":null},{"name":"clean","type":"boolean","required":true,"description":null},{"name":"counts_by_pattern","type":null,"required":false,"description":null},{"name":"counts_by_severity","type":null,"required":false,"description":null},{"name":"files_scanned","type":"integer","required":true,"description":null},{"name":"findings","type":"array","required":true,"description":null},{"name":"summary","type":"string","required":true,"description":null},{"name":"suppressed","type":null,"required":false,"description":null},{"name":"top_files","type":null,"required":false,"description":null},{"name":"total_findings","type":null,"required":false,"description":null},{"name":"truncated","type":null,"required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":203},{"name":"scan_git_staged","title":null,"description":"Scan ONLY the lines currently staged for commit (git diff --cached).\n\nThis is the pre-commit checkpoint: it inspects exactly the content the\nnext commit would publish, and reports the file and post-commit line\nnumber of every added secret. Local diff settings (external diff tools,\ntextconv filters, prefixes, path quoting) are overridden, and git runs\nno configured programs.\n\nArgs:\n    repo_path: Absolute path to a git repository (or any path inside one).\n    max_findings: List at most this many findings, most severe first\n        (default 200, 0 = no limit).\n\nReturns:\n    The standard redacted findings report. If nothing is staged the result\n    is clean with an explanatory summary.","inputs":[{"name":"max_findings","type":"integer","required":false,"description":null},{"name":"repo_path","type":"string","required":true,"description":null}],"outputs":[{"name":"baselined","type":null,"required":false,"description":null},{"name":"clean","type":"boolean","required":true,"description":null},{"name":"counts_by_pattern","type":null,"required":false,"description":null},{"name":"counts_by_severity","type":null,"required":false,"description":null},{"name":"files_scanned","type":"integer","required":true,"description":null},{"name":"findings","type":"array","required":true,"description":null},{"name":"summary","type":"string","required":true,"description":null},{"name":"suppressed","type":null,"required":false,"description":null},{"name":"top_files","type":null,"required":false,"description":null},{"name":"total_findings","type":null,"required":false,"description":null},{"name":"truncated","type":null,"required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":178},{"name":"scan_git_history","title":null,"description":"Scan the lines added by the most recent commits (git log -p).\n\nEach finding is tagged with the short hash of the commit that introduced\nit. A secret that was later deleted is still reported — history retains\nit, so the credential must be rotated regardless.\n\nArgs:\n    repo_path: Absolute path to a git repository (or any path inside one).\n    max_commits: How many commits back to inspect (default 50).\n    all_branches: Walk every branch, tag and the stash instead of only\n        the history of HEAD (default false).\n    max_findings: List at most this many findings, most severe first\n        (default 200, 0 = no limit).\n\nReturns:\n    The standard redacted findings report, with a \"commit\" field on each\n    finding.","inputs":[{"name":"all_branches","type":"boolean","required":false,"description":null},{"name":"max_commits","type":"integer","required":false,"description":null},{"name":"max_findings","type":"integer","required":false,"description":null},{"name":"repo_path","type":"string","required":true,"description":null}],"outputs":[{"name":"baselined","type":null,"required":false,"description":null},{"name":"clean","type":"boolean","required":true,"description":null},{"name":"counts_by_pattern","type":null,"required":false,"description":null},{"name":"counts_by_severity","type":null,"required":false,"description":null},{"name":"files_scanned","type":"integer","required":true,"description":null},{"name":"findings","type":"array","required":true,"description":null},{"name":"summary","type":"string","required":true,"description":null},{"name":"suppressed","type":null,"required":false,"description":null},{"name":"top_files","type":null,"required":false,"description":null},{"name":"total_findings","type":null,"required":false,"description":null},{"name":"truncated","type":null,"required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":209},{"name":"scan_git_range","title":null,"description":"Scan the commits in base..head: by default, what `git push` would send.\n\nRun this before pushing. With the defaults it scans every commit on the\ncurrent branch that its upstream does not have yet. If the branch has no\nupstream, the error says so: pass the branch you will push to as base\n(for example \"origin/main\").\n\nArgs:\n    repo_path: Absolute path to a git repository (or any path inside one).\n    base: Commits reachable from here are excluded (default \"@{upstream}\").\n    head: Last commit to include (default \"HEAD\").\n    max_commits: Scan at most this many of the newest commits in the range.\n    max_findings: List at most this many findings, most severe first\n        (default 200, 0 = no limit).\n\nReturns:\n    The standard redacted findings report with a \"commit\" field on each\n    finding, plus \"commits_scanned\" and \"range\".","inputs":[{"name":"base","type":"string","required":false,"description":null},{"name":"head","type":"string","required":false,"description":null},{"name":"max_commits","type":"integer","required":false,"description":null},{"name":"max_findings","type":"integer","required":false,"description":null},{"name":"repo_path","type":"string","required":true,"description":null}],"outputs":[{"name":"baselined","type":null,"required":false,"description":null},{"name":"clean","type":"boolean","required":true,"description":null},{"name":"commits_scanned","type":"integer","required":true,"description":null},{"name":"counts_by_pattern","type":null,"required":false,"description":null},{"name":"counts_by_severity","type":null,"required":false,"description":null},{"name":"files_scanned","type":"integer","required":true,"description":null},{"name":"findings","type":"array","required":true,"description":null},{"name":"range","type":"string","required":true,"description":null},{"name":"summary","type":"string","required":true,"description":null},{"name":"suppressed","type":null,"required":false,"description":null},{"name":"top_files","type":null,"required":false,"description":null},{"name":"total_findings","type":null,"required":false,"description":null},{"name":"truncated","type":null,"required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":250},{"name":"scan_agent_configs","title":null,"description":"Audit AI agent and MCP client configuration files for hardcoded secrets.\n\nChecks the project's .mcp.json, .claude/settings*.json, .cursor/mcp.json,\n.vscode/mcp.json, .gemini/, .codex/ and other client configs, plus agent\ninstruction files (CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules...),\nand the user-level configs of Claude Code, Claude Desktop, Cursor,\nVS Code, Cline, Windsurf, Gemini CLI, Codex, Kiro, Continue, Zed and\nothers. Project files report whether git tracks them: a key in a\ntracked .mcp.json ships with the repository.\n\nArgs:\n    project_path: Absolute path to the project to audit (optional).\n    include_user: Also scan configs in the user's home folder (default true).\n    include_transcripts: Also scan the newest Claude Code / Codex session\n        transcripts (default false; slower).\n    max_findings: List at most this many findings, most severe first.\n\nReturns:\n    The standard redacted report plus \"agent_files\": [{\"client\", \"scope\",\n    \"path\", \"findings\", \"tracked_by_git\", \"hint\"}] for every file found.","inputs":[{"name":"include_transcripts","type":"boolean","required":false,"description":null},{"name":"include_user","type":"boolean","required":false,"description":null},{"name":"max_findings","type":"integer","required":false,"description":null},{"name":"project_path","type":null,"required":false,"description":null}],"outputs":[{"name":"agent_files","type":"array","required":true,"description":null},{"name":"baselined","type":null,"required":false,"description":null},{"name":"clean","type":"boolean","required":true,"description":null},{"name":"counts_by_pattern","type":null,"required":false,"description":null},{"name":"counts_by_severity","type":null,"required":false,"description":null},{"name":"files_scanned","type":"integer","required":true,"description":null},{"name":"findings","type":"array","required":true,"description":null},{"name":"summary","type":"string","required":true,"description":null},{"name":"suppressed","type":null,"required":false,"description":null},{"name":"top_files","type":null,"required":false,"description":null},{"name":"total_findings","type":null,"required":false,"description":null},{"name":"truncated","type":null,"required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":296},{"name":"list_patterns","title":null,"description":"List the active secret detectors and allowlist rules.\n\nReturns:\n    {\"count\": int,\n     \"patterns\": [{\"name\", \"severity\", \"advice\"}],\n     \"entropy_detector\": {...threshold and advice...},\n     \"allowlist_rules\": [{\"name\", \"description\"}]}\n    Raw regexes are intentionally not exposed.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":74}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T11:15:35.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":[{"hook":"build_backend","tier":"allowlisted"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":29,"partial":false,"deprecated":null,"stale":null,"noRepo":1}},"mismatches":[],"changelog":{"trackingSince":"2026-10-19","recent":[{"id":"chg_01a1ab6b-de9b-7207-91e1-4cc4d2cf5807","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a1ab6b-de9b-7207-91e1-4cc4d2cf5807"},{"id":"chg_01a1ab6b-de9c-76ef-9bf3-7280ea3ce7f6","kind":"score.total_changed","summary":"Trust score (64 → 79)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a1ab6b-de9c-76ef-9bf3-7280ea3ce7f6"},{"id":"chg_01a1a151-cbe2-719d-8701-a1f806d93088","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a1a151-cbe2-719d-8701-a1f806d93088"},{"id":"chg_01a1a151-cbe3-742d-9b03-e68585afdb8f","kind":"score.total_changed","summary":"Trust score (79 → 64)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a1a151-cbe3-742d-9b03-e68585afdb8f"},{"id":"chg_01a19137-be55-73d7-ac36-a6081741a028","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a19137-be55-73d7-ac36-a6081741a028"},{"id":"chg_01a19137-be56-7edb-ad4b-8aba9750d2c7","kind":"score.total_changed","summary":"Trust score (64 → 79)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a19137-be56-7edb-ad4b-8aba9750d2c7"},{"id":"chg_01a1878a-4562-7dde-8868-6a9d3872ee2a","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a1878a-4562-7dde-8868-6a9d3872ee2a"},{"id":"chg_01a1878a-4566-7931-ba54-979c598b7133","kind":"score.total_changed","summary":"Trust score (79 → 64)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a1878a-4566-7931-ba54-979c598b7133"},{"id":"chg_01a17cd5-7540-7dca-bc14-b214732a8f0f","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a17cd5-7540-7dca-bc14-b214732a8f0f"},{"id":"chg_01a17cd5-7542-7281-ae7f-8c7404557eec","kind":"score.total_changed","summary":"Trust score (64 → 79)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a17cd5-7542-7281-ae7f-8c7404557eec"},{"id":"chg_01a17816-f75e-7147-af36-3585dbdf313e","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a17816-f75e-7147-af36-3585dbdf313e"},{"id":"chg_01a17816-f75f-76ee-b44b-6b39fde1b8cb","kind":"score.total_changed","summary":"Trust score (79 → 64)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a17816-f75f-76ee-b44b-6b39fde1b8cb"},{"id":"chg_01a17251-37d4-75ce-b89e-b189690e602e","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a17251-37d4-75ce-b89e-b189690e602e"},{"id":"chg_01a17251-37d5-7d16-957d-93e4134b2854","kind":"score.total_changed","summary":"Trust score (64 → 79)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a17251-37d5-7d16-957d-93e4134b2854"},{"id":"chg_01a168a3-2b5f-736f-8931-4862b7dc6713","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a168a3-2b5f-736f-8931-4862b7dc6713"},{"id":"chg_01a168a3-2b60-718c-9a78-c0a1feb958e0","kind":"score.total_changed","summary":"Trust score (79 → 64)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a168a3-2b60-718c-9a78-c0a1feb958e0"},{"id":"chg_01a162da-fd3c-7349-920b-ac862550c7df","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a162da-fd3c-7349-920b-ac862550c7df"},{"id":"chg_01a162da-fd3e-7ebd-8c1d-b60477763e85","kind":"score.total_changed","summary":"Trust score (64 → 79)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a162da-fd3e-7ebd-8c1d-b60477763e85"},{"id":"chg_01a1553d-e671-7bd8-b2bc-37461d29ce2b","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-19","url":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel#chg-chg_01a1553d-e671-7bd8-b2bc-37461d29ce2b"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel/changelog.json"},"links":{"html":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel","markdown":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel.md","changelogJson":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel/changelog.json","changelogRss":"https://verifymcp.io/servers/alebrito124356-mcp-secret-sentinel/mcp-secret-sentinel.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/mcp-secret-sentinel/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/mcp-secret-sentinel"},{"label":"Repository","href":"https://github.com/AleBrito124356/mcp-secret-sentinel"}]}}