{"$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-05T15:49:08.012Z","url":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan","markdownUrl":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan.md","server":{"slug":"gillmacedo-slowplan","name":"io.github.GillMacedo/slowplan","registryName":"io.github.GillMacedo/slowplan","description":"Find why a PostgreSQL query is slow from its EXPLAIN output, without a database connection.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"slowplan","type":"npm","identifier":"slowplan","withdrawn":false,"url":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan","version":"0.1.0","transport":"stdio","scoredAt":"2026-11-05T02:27:03.384Z"},"score":{"total":74,"tier":"medium","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":74},{"date":"2026-11-04","total":73},{"date":"2026-11-03","total":73},{"date":"2026-11-02","total":72},{"date":"2026-11-01","total":72}]},"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":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 3 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":"3"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":79,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Tool/resource definitions use about 256 tokens (~128/item across 2 items; 2 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_lean","args":{"avg":"128","items":"2","tools":"2","tokens":"256","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":13,"verdict":"partial","reasons":["Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"4"}}]},{"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.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}},{"code":"toolquality.output_present","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 2 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 2 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":"2"}},{"code":"toolsafety.manipulation_clean","args":{"units":"2","judged":"2"}}]},{"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":[],"malware":[],"components":[{"slug":"slowplan","type":"npm","identifier":"slowplan","withdrawn":false,"score":74,"current":true,"url":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan","markdownUrl":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"slowplan"},{"label":"Version","value":"0.1.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"postgres_plan_compare","title":"Compare two PostgreSQL query plans","description":"Compares EXPLAIN output from before and after a change, such as a new index, and shows the timing change and which problems were fixed, remain or are new. It never connects to a database.","inputs":[{"name":"after","type":"string","required":false,"description":"EXPLAIN output after the change"},{"name":"after_path","type":"string","required":false,"description":"Path to a file with the plan after the change"},{"name":"before","type":"string","required":false,"description":"EXPLAIN output before the change"},{"name":"before_path","type":"string","required":false,"description":"Path to a file with the plan before the change"}],"outputs":[{"name":"after_ms","type":"number","required":true,"description":null},{"name":"before_ms","type":"number","required":true,"description":null},{"name":"change_percent","type":"number","required":true,"description":null},{"name":"fixed","type":"null|array","required":true,"description":null},{"name":"new","type":"null|array","required":true,"description":null},{"name":"notes","type":"null|array","required":true,"description":null},{"name":"remaining","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":115},{"name":"postgres_plan_review","title":"Review a PostgreSQL query plan","description":"Finds why a PostgreSQL query is slow from its EXPLAIN output, in text or JSON: where the time goes, and problems such as sequential scans throwing away rows, wrong row estimates, sorts and hashes spilling to disk, and nested loops run many times. Use after running EXPLAIN (ANALYZE, BUFFERS). It only reads the text you give it and never connects to a database. Suggested indexes are candidates to test.","inputs":[{"name":"path","type":"string","required":false,"description":"Path to a file holding EXPLAIN output. Give this or plan"},{"name":"plan","type":"string","required":false,"description":"EXPLAIN output as text or JSON. Give this or path"}],"outputs":[{"name":"analyzed","type":"boolean","required":true,"description":null},{"name":"execution_ms","type":"number","required":true,"description":null},{"name":"findings","type":"null|array","required":true,"description":null},{"name":"hottest","type":"null|array","required":true,"description":null},{"name":"notes","type":"null|array","required":true,"description":null},{"name":"planning_ms","type":"number","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":141}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T02:27:03.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-01","recent":[{"id":"chg_01a1a987-fa77-732f-b0b1-32e83e731bb1","kind":"score.total_changed","summary":"Trust score (73 → 74)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan#chg-chg_01a1a987-fa77-732f-b0b1-32e83e731bb1"},{"id":"chg_01a19f3c-2469-7f21-9b00-0f66ba76a23d","kind":"score.total_changed","summary":"Trust score (72 → 73)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan#chg-chg_01a19f3c-2469-7f21-9b00-0f66ba76a23d"},{"id":"chg_01a197a1-c622-7ced-9781-6076b1d60ccf","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan#chg-chg_01a197a1-c622-7ced-9781-6076b1d60ccf"},{"id":"chg_01a197a0-350a-7076-84ab-be4c63de2044","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan#chg-chg_01a197a0-350a-7076-84ab-be4c63de2044"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan/changelog.json"},"links":{"html":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan","markdown":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan.md","changelogJson":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan/changelog.json","changelogRss":"https://verifymcp.io/servers/gillmacedo-slowplan/slowplan.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/slowplan"},{"label":"Socket report","href":"https://socket.dev/npm/package/slowplan"},{"label":"Repository","href":"https://github.com/GillMacedo/slowplan"}]}}