{"$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-05T16:58:42.750Z","url":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe","markdownUrl":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe.md","server":{"slug":"com-foreverworks-typesafe","name":"TypeSafe","registryName":"com.foreverworks/typesafe","description":"Get calibrated yes or no answers, choices and scores from TypeSafe's Jev, for one item or 1000 rows.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"foreverworks-mcp-typesafe","type":"npm","identifier":"@foreverworks/mcp-typesafe","withdrawn":false,"url":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe","version":"0.1.2","transport":"stdio","scoredAt":"2026-11-05T02:04:06.364Z"},"score":{"total":78,"tier":"medium","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":78},{"date":"2026-11-04","total":78},{"date":"2026-11-03","total":67}]},"categories":[{"name":"Supply Chain Security","score":99,"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.","7 of 24 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"24","unhealthy":"7"}}]},{"name":"Provenance & Transparency","score":100,"verdict":"pass","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to foreverworks/mcps).","Clear OSI-approved license (MIT).","Actively maintained (last published 1 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"foreverworks/mcps"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"1"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":57,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 1104 tokens (~368/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":"368","items":"3","tools":"3","tokens":"1104","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":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 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":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":"foreverworks-mcp-typesafe","type":"npm","identifier":"@foreverworks/mcp-typesafe","withdrawn":false,"score":78,"current":true,"url":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe","markdownUrl":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"@foreverworks/mcp-typesafe"},{"label":"Version","value":"0.1.2"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"ask","title":"Ask Jev","description":"Ask TypeSafe's Jev, a System One model, typed questions about one state and get calibrated answers: a `noul` is the probability that a yes/no statement holds, a `choice` picks one of your options with a probability each, a `score` places the state on your ordered levels. Jev writes no text and does no multi-step reasoning: use it for fast, narrow judgments (routing, triage, relevance, a policy check) whose probabilities you then threshold. One narrow judgment per question; a no-match option where nothing may fit. A probability near 0.5 means undecided, not medium. About 0.5 s a call.","inputs":[{"name":"model","type":"string","required":false,"description":"A model from health. Default: the server's, jev-latest."},{"name":"questions","type":"object","required":true,"description":"Your question id -> question. Every independent judgment about the same state goes in one call: they run together and cannot see each other."},{"name":"state","type":null,"required":true,"description":"What is judged: text, or JSON with named fields (a record, a thread, a posting with its metadata) the questions can point at, e.g. `posting.location`."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":241},{"name":"ask_batch","title":"Ask Jev over many states","description":"The same questions over up to 1000 states, several requests at a time: triage postings, transactions, emails or passages without reading them all yourself. Replies with a summary per question (choice: counts; noul: mean and how many are >= 0.7 and <= 0.3; score: mean, min, max) and each row's compact answers (a noul's probability, a choice's pick and confidence, a score and its confidence). For a large batch pass list 'none' or 'failed' with save true: every row's full answers go to a JSONL file in the outbox and the reply names it with its sha256 and size. A row that fails is reported and the rest go on. Rows already in a file go as items_file, not typed into items: that keeps them out of your context and exactly as written. thresholds turn each answer into act, review or abstain; where lists only the rows that meet conditions, top only the k highest by a question, and counts tallies the answers (and verdicts) of the rows where keeps: over a large batch they keep the reply to the rows that matter. A client that asks for progress hears the rows done; cancelling stops the rows not yet asked.","inputs":[{"name":"concurrency","type":"integer","required":false,"description":"Requests in flight at once."},{"name":"counts","type":"boolean","required":false,"description":"Also tally each question's answers (a noul's yes/no/between, a choice's picks, a score's nearest levels) and verdicts over the rows where keeps."},{"name":"items","type":"array","required":false,"description":"The rows, typed into the call. Give items or items_file."},{"name":"items_file","type":"object","required":false,"description":"The rows as a UTF-8 file instead of items: JSONL, one {\"id\", \"state\"} object per line, or one JSON array of them; at most 1000, every row with an id above 20. The reply names its sha256 and size. Nev…"},{"name":"list","type":"string","required":false,"description":"Which rows the reply lists; the summary always covers every row."},{"name":"model","type":"string","required":false,"description":"A model from health. Default: the server's, jev-latest."},{"name":"probabilities","type":"boolean","required":false,"description":"Also list each row's full distribution per choice and score."},{"name":"questions","type":"object","required":true,"description":"Your question id -> question. Every independent judgment about the same state goes in one call: they run together and cannot see each other."},{"name":"save","type":"boolean","required":false,"description":"Also write every row's full answers to the outbox as JSONL."},{"name":"thresholds","type":"object","required":false,"description":"Question id -> thresholds: each row's answer to that question gets a verdict, act, review or abstain, taken on its certainty (a noul's |p - 0.5| x 2, a choice's or a score's confidence, rounded down…"},{"name":"top","type":"object","required":false,"description":"Only the k rows (of those where keeps) with the highest value for one question, highest first."},{"name":"where","type":"object","required":false,"description":"Question id -> condition; the reply lists only the answered rows meeting every one, and says how many matched. E.g. {\"urgent\": true, \"team\": [\"billing\"], \"mood\": {\"min\": 1.5}}. Checked against the qu…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":745},{"name":"health","title":"Health","description":"Check that the TypeSafe API key is present and accepted, and list the models it can use. Run this before concluding the MCP is broken.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":36}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T02:04:06.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":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":24,"partial":false,"deprecated":null,"stale":7,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-11-03","recent":[{"id":"chg_01a1a44c-b803-7b49-830b-5799192f8008","kind":"check.reverified","summary":"Known CVEs (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe#chg-chg_01a1a44c-b803-7b49-830b-5799192f8008"},{"id":"chg_01a1a44c-b804-7369-87af-53a5eff93629","kind":"check.reverified","summary":"Dependency health (unverified → 0.89)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe#chg-chg_01a1a44c-b804-7369-87af-53a5eff93629"},{"id":"chg_01a1a44c-b804-78c2-bd8a-64e4a3f1e824","kind":"score.total_changed","summary":"Trust score (67 → 78)","materiality":"functional","direction":"improvement","scoreDelta":11,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe#chg-chg_01a1a44c-b804-78c2-bd8a-64e4a3f1e824"},{"id":"chg_01a19fc8-72f5-75d3-83f5-9393d143945d","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe#chg-chg_01a19fc8-72f5-75d3-83f5-9393d143945d"},{"id":"chg_01a19f85-0a83-7ea2-98e7-6cfd7aa5cdeb","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe#chg-chg_01a19f85-0a83-7ea2-98e7-6cfd7aa5cdeb"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe","markdown":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe.md","changelogJson":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe/changelog.json","changelogRss":"https://verifymcp.io/servers/com-foreverworks-typesafe/foreverworks-mcp-typesafe.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/@foreverworks/mcp-typesafe"},{"label":"Socket report","href":"https://socket.dev/npm/package/@foreverworks/mcp-typesafe"},{"label":"Repository","href":"https://github.com/foreverworks/mcps"},{"label":"Website","href":"https://foreverworks.github.io/mcps/servers/typesafe/"}]}}