{"$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:53:04.872Z","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp","markdownUrl":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp.md","server":{"slug":"onlsol-relay-remotify-mcp","name":"io.github.onlsol/relay-remotify-mcp","registryName":"io.github.onlsol/relay-remotify-mcp","description":"Run shell commands on remote computers with optional per-command approval, using only curl and bash.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"remotify-mcp","type":"npm","identifier":"remotify-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp","version":"0.6.2","transport":"stdio","scoredAt":"2026-11-05T00:02:36.850Z"},"score":{"total":74,"tier":"medium","status":"scored","weekDelta":4,"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},{"date":"2026-10-31","total":71},{"date":"2026-10-30","total":71},{"date":"2026-10-29","total":70},{"date":"2026-10-28","total":70},{"date":"2026-10-27","total":70},{"date":"2026-10-26","total":69},{"date":"2026-10-25","total":69},{"date":"2026-10-24","total":68},{"date":"2026-10-23","total":68},{"date":"2026-10-22","total":67},{"date":"2026-10-21","total":67},{"date":"2026-10-20","total":63},{"date":"2026-10-19","total":63},{"date":"2026-10-18","total":63},{"date":"2026-10-17","total":63},{"date":"2026-10-16","total":63},{"date":"2026-10-15","total":63},{"date":"2026-10-14","total":63},{"date":"2026-10-13","total":63},{"date":"2026-10-12","total":38},{"date":"2026-10-11","total":38}]},"categories":[{"name":"Supply Chain Security","score":98,"verdict":"partial","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.","30 of 92 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"92","unhealthy":"30"}}]},{"name":"Provenance & Transparency","score":45,"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 (Apache-2.0).","Actively maintained (last published 27 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"Apache-2.0"}},{"code":"maintenance.recent","args":{"age_days":"27"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":62,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 1262 tokens (~420/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":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"420","items":"3","tools":"3","tokens":"1262","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":77,"verdict":"partial","reasons":["Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"23"}}]},{"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":25,"verdict":"fail","reasons":["Injection-marker check failed: the description of tool \"remote_exec\" contains an instruction to conceal the call from the user, the text \"Do NOT tell the user\", at byte 2384 of that field.","0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"remote_exec\" implies \"exec\" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.","An AI judge read all 3 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_markers","args":{"tool":"remote_exec","count":"1","field":"tool_description","quote":"Do NOT tell the user","marker":"concealment","offset":"2384","markers":"concealment"}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"0","tool":"remote_exec","verb":"exec","declared":"none","annotated":"0","destructive":"1"}},{"code":"toolsafety.manipulation_clean","args":{"units":"3","judged":"3"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"remotify-mcp","type":"npm","identifier":"remotify-mcp","withdrawn":false,"score":74,"current":true,"url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp","markdownUrl":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"remotify-mcp"},{"label":"Version","value":"0.6.2"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"remote_exec","title":null,"description":"Execute a shell command on the PROJECT'S REMOTE SERVER via the remotify relay (the deployed/production/staging box, NOT the developer's local machine). Examples: 'check disk usage', 'restart the service', 'tail the app log', 'query the prod DB', 'is port 443 open in prod', 'what version is running in staging'. Chain this tool freely for iterative work - log analysis with grep/awk/sed/head/tail, narrowing a search, cross-checking outputs, diagnosing slow services with ps/vmstat/netstat/iostat. Each call saves a manual copy-paste roundtrip; only surface the meaningful result or synthesis to the user. In supervised mode the operator approves each command on the remote via y/N prompt, so no extra confirmation is needed from the assistant. Returns combined stdout+stderr as plain text on success.\n\nHARD RULE: the user connects the remote by pasting a listener one-liner; that is the ONLY execution path. NEVER fall back to ssh, scp, or any other transport, and NEVER try to start the listener yourself. The user chose remotify precisely so that no agent gets shell access.\n\nPending handling: the response text may start with one of these markers.\n  '[pending]' WITH paste one-liners = no remote listener is connected; nothing can run until the user pastes one. STOP: end your turn immediately with a short message that shows BOTH one-liners (supervised and auto) verbatim in a fenced code block. Do not call any tool after that message: hosts collapse text written between tool calls, so the one-liners only reach the user as the final message of the turn. The command stays queued; when the user replies that the listener is running, call remote_exec again with the EXACT SAME arguments to collect the output. It will not execute twice.\n  '[pending]' WITHOUT one-liners = the listener is online but the relay cannot confirm pickup yet. Call remote_exec again with the EXACT SAME arguments; loop silently, do not ask the user anything, and give up only after about 10 consecutive [pending] resp…","inputs":[{"name":"command","type":"string","required":true,"description":"Shell command to execute on the remote machine"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":994},{"name":"remote_session_info","title":null,"description":"Return the current relay session: key, URLs, and the exact one-liners to paste on the remote machine to start the listener (remote_quickstart = supervised, y/N per command; remote_quickstart_auto = unattended). When you show them to the user, show BOTH verbatim in a fenced code block and make them the final message of your turn.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":83},{"name":"remote_session_reset","title":null,"description":"Recover a wedged remotify session. Default (no arguments): clear stuck relay state in place - drops any queued command/result and the in-flight marker; the session key and a connected listener keep working. With {\"rotate\": true}: abandon the current session and mint a brand-new key - the old key dies, the remote listener disconnects, and the user must paste the NEW runner one-liner (returned by this tool) on the remote. Normally NOT needed: remote_exec auto-recovers from stale state by itself. Use it only when remote_exec stays wedged (repeated [busy] for a command you never issued) despite same-args retries, or when the user explicitly asks to reset or rotate the session.","inputs":[{"name":"rotate","type":"boolean","required":false,"description":"Mint a brand-new session key instead of clearing the current one in place (requires the user to reconnect the remote listener)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":185}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T00:02:36.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":92,"partial":false,"deprecated":null,"stale":30,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-11","recent":[{"id":"chg_01a1a903-bcde-783b-8a4a-2d9cd8cf842d","kind":"score.total_changed","summary":"Trust score (73 → 74)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a1a903-bcde-783b-8a4a-2d9cd8cf842d"},{"id":"chg_01a19eb7-02dc-788a-9abe-e87cfa84341a","kind":"score.total_changed","summary":"Trust score (72 → 73)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a19eb7-02dc-788a-9abe-e87cfa84341a"},{"id":"chg_01a1946a-1ce4-728e-825d-3e673f494848","kind":"score.total_changed","summary":"Trust score (71 → 72)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a1946a-1ce4-728e-825d-3e673f494848"},{"id":"chg_01a18a47-a069-7336-b76c-c65b50b2f873","kind":"score.total_changed","summary":"Trust score (70 → 71)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a18a47-a069-7336-b76c-c65b50b2f873"},{"id":"chg_01a17ac2-4f05-7457-b1f7-6d1594036e84","kind":"score.total_changed","summary":"Trust score (69 → 70)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a17ac2-4f05-7457-b1f7-6d1594036e84"},{"id":"chg_01a17074-f7a4-76b0-b3f4-c4ed864a33c3","kind":"score.total_changed","summary":"Trust score (68 → 69)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a17074-f7a4-76b0-b3f4-c4ed864a33c3"},{"id":"chg_01a16628-3da6-7865-a40d-0c4c345d6c1f","kind":"score.total_changed","summary":"Trust score (67 → 68)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a16628-3da6-7865-a40d-0c4c345d6c1f"},{"id":"chg_01a16101-4046-7e21-b8ce-f8ae8c0fa614","kind":"check.reverified","summary":"Security disclosure (unverified → fail)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a16101-4046-7e21-b8ce-f8ae8c0fa614"},{"id":"chg_01a15bdb-34b1-7c75-93fc-a0fbd70e1cd3","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a15bdb-34b1-7c75-93fc-a0fbd70e1cd3"},{"id":"chg_01a15bdb-34b5-7269-a923-73ef314f5806","kind":"check.reverified","summary":"Stability (unverified → 0.27)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a15bdb-34b5-7269-a923-73ef314f5806"},{"id":"chg_01a15bdb-34b8-708a-844f-3892f11cf181","kind":"score.total_changed","summary":"Trust score (63 → 67)","materiality":"functional","direction":"improvement","scoreDelta":4,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a15bdb-34b8-708a-844f-3892f11cf181"},{"id":"chg_01a137b2-1fcb-7210-b3fe-27b9e290e2ac","kind":"check.reverified","summary":"Injection markers (unverified → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-1fcb-7210-b3fe-27b9e290e2ac"},{"id":"chg_01a137b2-1fcc-7f0d-b02a-a4cf22a8cb60","kind":"check.appeared","summary":"First check of Judged manipulation (pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-1fcc-7f0d-b02a-a4cf22a8cb60"},{"id":"chg_01a137b2-1fcd-773b-a6cb-1a3adbd6988f","kind":"check.reason","summary":"Stability (Stability not yet verified: not enough scan history yet (needs a 30-day window).)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-1fcd-773b-a6cb-1a3adbd6988f"},{"id":"chg_01a137b2-1fce-77c3-8e36-94ef9a40e167","kind":"check.reverified","summary":"Tool coverage (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-1fce-77c3-8e36-94ef9a40e167"},{"id":"chg_01a137b2-201b-7726-a2db-30c165560ae8","kind":"check.reverified","summary":"MCP protocol (unverified → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-201b-7726-a2db-30c165560ae8"},{"id":"chg_01a137b2-201b-7cb9-9337-000b404d57d9","kind":"check.appeared","summary":"First check of Schema quality (fail)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-201b-7cb9-9337-000b404d57d9"},{"id":"chg_01a137b2-201c-72aa-80b1-8b89e5b55bab","kind":"check.appeared","summary":"First check of Schema quality (excellent)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-201c-72aa-80b1-8b89e5b55bab"},{"id":"chg_01a137b2-201c-775a-bfe4-ba09c07ddfcc","kind":"check.appeared","summary":"First check of Schema quality (fail)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-201c-775a-bfe4-ba09c07ddfcc"},{"id":"chg_01a137b2-201c-7b6f-bfc9-205eea3602a3","kind":"check.appeared","summary":"First check of Destructive annotations (0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp#chg-chg_01a137b2-201c-7b6f-bfc9-205eea3602a3"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp","markdown":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp.md","changelogJson":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/onlsol-relay-remotify-mcp/remotify-mcp.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/remotify-mcp"},{"label":"Socket report","href":"https://socket.dev/npm/package/remotify-mcp"},{"label":"Repository","href":"https://github.com/onlsol/relay.remotify.run"}]}}