{"$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-06T17:19:32.519Z","url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage","markdownUrl":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage.md","server":{"slug":"dev-moorai-skilltriage","name":"SkillTriage","registryName":"dev.moorai/skilltriage","description":"Scan AI agent skills, MCP server packages and MCP configs before you install them. Static analysis.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"skilltriage","type":"remote","identifier":"https://skilltriage.moorai.dev/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage","version":"0.6.1","transport":null,"scoredAt":"2026-11-06T05:33:26.470Z"},"score":{"total":73,"tier":"medium","status":"scored","weekDelta":null,"history":[{"date":"2026-11-06","total":73},{"date":"2026-11-05","total":72},{"date":"2026-11-04","total":72},{"date":"2026-11-03","total":71},{"date":"2026-11-02","total":71},{"date":"2026-11-01","total":70},{"date":"2026-10-31","total":70}]},"categories":[{"name":"Endpoint Security","score":74,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.","HTTPS is enforced; there's no plaintext access path.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_no_destructive","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":68,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 777 tokens (~194/item across 4 items; 4 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":"194","items":"4","tools":"4","tokens":"777","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":20,"verdict":"partial","reasons":["Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"6"}}]},{"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 4 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 5 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":"4"}},{"code":"toolsafety.manipulation_clean","args":{"units":"5","judged":"5"}}]},{"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":"skilltriage","type":"remote","identifier":"https://skilltriage.moorai.dev/mcp","withdrawn":false,"score":73,"current":true,"url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage","markdownUrl":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage.md"}],"facts":[{"label":"Endpoint","value":"https://skilltriage.moorai.dev/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"0.6.1"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"scan_package","title":"Scan an MCP server or skill package","description":"Download one published package and run static analysis on its code with MoorAI's open-source engine. npm and PyPI packages also get ten MCP pre-install checks on their registry metadata, a reputation score and a known-compromised release check. Static analysis only: the package is never installed and the server is never run. Returns a verdict (CLEAN, CAUTION, REVIEW, DO-NOT-INSTALL or NAME-NOT-PUBLISHED), content-free findings (threat ids, categories, file paths, hashes; never file contents) and a permalink. The package name and version are sent to its registry. A completed analysis is reused for 24 hours; a new one can take a minute and runs one at a time.","inputs":[{"name":"ref","type":"string","required":true,"description":"npm:<name>[@version], pypi:<name>[==version] or github:<owner>/<repo>/<path>[@ref] (a folder, not a whole repository)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":197},{"name":"scan_mcp_config","title":"Check an MCP client config","description":"Check a pasted MCP client config (.mcp.json, claude_desktop_config.json, mcp.json, Codex config.toml). Reports each npm or PyPI launch by its position and how its version is pinned (exact, @latest, a tag or range, none), flags releases on the known-compromised list, and runs static analysis over the text. Server names, package names, arguments, env and header values are never returned or stored; remove secrets before sending anyway. Static analysis only; nothing is run or fetched. Returns a verdict (CLEAN, CAUTION, REVIEW, DO-NOT-INSTALL or NAME-NOT-PUBLISHED), the pinning advice and a permalink.","inputs":[{"name":"filename","type":"string","required":false,"description":"The config's filename, ending in .json or .toml (default .mcp.json)"},{"name":"text","type":"string","required":true,"description":"The config file's text"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":189},{"name":"scan_skill","title":"Scan an agent skill file","description":"Scan one agent skill or instruction file (SKILL.md, AGENTS.md, a tool.json, any text file) with MoorAI's open-source engine. Static analysis only; nothing is run. The text is written to a temporary directory, scanned and deleted; only its hash, the verdict and content-free findings are kept. Returns a verdict (CLEAN, CAUTION, REVIEW, DO-NOT-INSTALL or NAME-NOT-PUBLISHED), the findings and a permalink.","inputs":[{"name":"filename","type":"string","required":false,"description":"The file's name, which sets how it is analysed (default SKILL.md)"},{"name":"text","type":"string","required":true,"description":"The file's text"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":138},{"name":"lookup_verdict","title":"Look up a published MCP server verdict","description":"Look up the verdict the public catalogue has published for an MCP server package on npm or PyPI. Returns found:false when the catalogue has no published verdict for that name; that is not a clean result. Nothing is downloaded or scanned. This request names the package to the server; to match without naming it, download /api/reputation-feed.json and match on your side.","inputs":[{"name":"ecosystem","type":"string","required":true,"description":"The package registry"},{"name":"name","type":"string","required":true,"description":"The package name"},{"name":"version","type":"string","required":false,"description":"Optional: the version you plan to install; the reply says whether the published verdict is for it"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":130}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T05:33:26.000Z","track":"remote","endpoint":"https://skilltriage.moorai.dev/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=skilltriage.moorai.dev","issuer":"CN=YE1,O=Let's Encrypt,C=US","notBefore":"2026-09-17T22:13:47Z","notAfter":"2026-12-16T22:13:46Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=YE1,O=Let's Encrypt,C=US","issuer":"CN=Root YE,O=ISRG,C=US","notBefore":"2025-09-03T00:00:00Z","notAfter":"2028-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true},{"subject":"CN=Root YE,O=ISRG,C=US","issuer":"CN=ISRG Root X2,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true},{"subject":"CN=ISRG Root X2,O=Internet Security Research Group,C=US","issuer":"CN=ISRG Root X1,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"skilltriage.moorai.dev.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"dev.","outcome":"verified","label":"Verified"},{"zone":"moorai.dev.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":308},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-31","recent":[{"id":"chg_01a1af58-fa56-747a-877d-654ba56b991a","kind":"score.rubric_changed","summary":"We updated how we score, so this day's move reflects our rubric, not a change to the server","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage#chg-chg_01a1af58-fa56-747a-877d-654ba56b991a"},{"id":"chg_01a1a505-987e-799d-bf15-fe9ae21f659b","kind":"score.total_changed","summary":"Trust score (71 → 72)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage#chg-chg_01a1a505-987e-799d-bf15-fe9ae21f659b"},{"id":"chg_01a19ab8-5370-7ce1-843d-3c06fd04370e","kind":"score.total_changed","summary":"Trust score (70 → 71)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage#chg-chg_01a19ab8-5370-7ce1-843d-3c06fd04370e"},{"id":"chg_01a19592-a179-72b8-b451-d6aea5385047","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage#chg-chg_01a19592-a179-72b8-b451-d6aea5385047"},{"id":"chg_01a19592-a179-7e74-b681-63820758a053","kind":"server.version_changed","summary":"Server version (0.6.1 → 0.7.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage#chg-chg_01a19592-a179-7e74-b681-63820758a053"},{"id":"chg_01a1938c-6ba6-71a3-b14d-d249c962bbb0","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage#chg-chg_01a1938c-6ba6-71a3-b14d-d249c962bbb0"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage/changelog.json"},"links":{"html":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage","markdown":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage.md","changelogJson":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage/changelog.json","changelogRss":"https://verifymcp.io/servers/dev-moorai-skilltriage/skilltriage.xml","external":[{"label":"Remote endpoint","href":"https://skilltriage.moorai.dev/mcp"},{"label":"Website","href":"https://skilltriage.moorai.dev/api"}]}}