{"$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-06T03:14:46.972Z","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem","markdownUrl":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem.md","server":{"slug":"dgesteves-onsystem","name":"onsystem","registryName":"io.github.dgesteves/onsystem","description":"Catches palette colors, native elements and APIs your design system lacks in agent-written React.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"onsystem","type":"npm","identifier":"onsystem","withdrawn":false,"url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem","version":"0.12.1","transport":"stdio","scoredAt":"2026-11-06T00:12:22.056Z"},"score":{"total":92,"tier":"high trust","status":"scored","weekDelta":29,"history":[{"date":"2026-11-06","total":92},{"date":"2026-11-05","total":92},{"date":"2026-11-04","total":91},{"date":"2026-11-03","total":91},{"date":"2026-11-02","total":91},{"date":"2026-11-01","total":90},{"date":"2026-10-31","total":79},{"date":"2026-10-30","total":63},{"date":"2026-10-29","total":78},{"date":"2026-10-28","total":73},{"date":"2026-10-27","total":73},{"date":"2026-10-26","total":87},{"date":"2026-10-25","total":87},{"date":"2026-10-24","total":61},{"date":"2026-10-23","total":71},{"date":"2026-10-22","total":85},{"date":"2026-10-21","total":70},{"date":"2026-10-20","total":85},{"date":"2026-10-19","total":84},{"date":"2026-10-18","total":84},{"date":"2026-10-17","total":83},{"date":"2026-10-16","total":72},{"date":"2026-10-15","total":82},{"date":"2026-10-14","total":82},{"date":"2026-10-13","total":82},{"date":"2026-10-12","total":50}]},"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.","2 of 15 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"15","unhealthy":"2"}}]},{"name":"Provenance & Transparency","score":100,"verdict":"pass","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to dgesteves/onsystem).","Clear OSI-approved license (MIT).","Actively maintained (last published 6 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"dgesteves/onsystem"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"6"}},{"code":"disclosure.present","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 1450 tokens (~241/item across 6 items; 5 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":"241","items":"6","tools":"5","tokens":"1450","resources":"1"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":80,"verdict":"partial","reasons":["Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"24"}}]},{"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 5 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 7 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":"5"}},{"code":"toolsafety.manipulation_clean","args":{"units":"7","judged":"7"}}]},{"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":"onsystem","type":"npm","identifier":"onsystem","withdrawn":false,"score":92,"current":true,"url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem","markdownUrl":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"onsystem"},{"label":"Version","value":"0.12.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"list_components","title":"List design-system components","description":"List every component in the project design system with a one-line description, the native element it renders, its variant values, its parts and its import. Icons (components that render an <svg>) are named on one line per import, or per folder for icons with a module each, five or more to a line. Call this before writing UI in this project. `query`, `kind` and `limit` narrow a long list. At a monorepo root, pass `path` for the project of the file you are editing; without it, every project is listed, each component with its package.","inputs":[{"name":"kind","type":"string","required":false,"description":"\"icon\": only the components that render an <svg>, one by one. \"component\": all the others."},{"name":"limit","type":"integer","required":false,"description":"Most components to list one by one."},{"name":"path","type":"string","required":false,"description":"In a monorepo served from its root: the file you are editing, or a project folder, relative to the root, to answer from that project. Without it, every project is listed together. Ignored in a single…"},{"name":"query","type":"string","required":false,"description":"Only components with this text in their name, their parts' names or their description."}],"outputs":[{"name":"components","type":"array","required":true,"description":"The components listed one by one, after `query`, `kind` and `limit`."},{"name":"icons","type":"array","required":false,"description":"Without `kind`: icons, the components that render an <svg>, by name, five or more per module, or per folder for icons with a module each."},{"name":"omitted","type":"integer","required":false,"description":"Matching components left out by `limit`."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":275},{"name":"get_component","title":"Get a component contract","description":"Get the full contract of one component: import, props with types and defaults, cva variants and the classes each applies, parts (sub-components), design tokens it uses, usage guidelines and examples from its docs. Call it before using a component. Accepts \"Button\", \"CardHeader\" or \"Card.Header\". At a monorepo root, pass `path` (the file you are editing) to get the component its project uses.","inputs":[{"name":"name","type":"string","required":true,"description":"Component name, e.g. \"Button\" or \"CardHeader\"."},{"name":"path","type":"string","required":false,"description":"In a monorepo served from its root: the file you are editing, or a project folder, relative to the root, to answer from that project. Without it, every project is listed together. Ignored in a single…"}],"outputs":[{"name":"aliases","type":"array","required":true,"description":null},{"name":"classNames","type":"array","required":true,"description":null},{"name":"compoundVariants","type":"array","required":true,"description":null},{"name":"cssVars","type":"array","required":true,"description":null},{"name":"defaultImport","type":"string","required":false,"description":"Another module that exports it as its default: \"@mui/material/Button\"."},{"name":"deprecated","type":null,"required":false,"description":null},{"name":"description","type":"string","required":false,"description":null},{"name":"docs","type":"object","required":false,"description":null},{"name":"element","type":"string","required":false,"description":"The native element it renders or wraps."},{"name":"examples","type":"array","required":true,"description":null},{"name":"exportName","type":"string","required":true,"description":null},{"name":"import","type":"string","required":true,"description":"The import statement to use."},{"name":"importPath","type":"string","required":true,"description":null},{"name":"inherits","type":"array","required":true,"description":null},{"name":"labelsChild","type":"object","required":false,"description":"A prop whose text is its child element's accessible name (MUI Tooltip's title), unless `unless` is set."},{"name":"library","type":"string","required":false,"description":"The published package it is read from, by its type declarations: \"@mui/material\"."},{"name":"name","type":"string","required":true,"description":"How the component is written in JSX: Button, CardHeader, Tabs.List."},{"name":"openProps","type":"boolean","required":true,"description":"Part of the props type did not resolve; extra props may be accepted."},{"name":"package","type":"string","required":false,"description":"At a workspace root: the package its source belongs to, e.g. \"@acme/ui\"."},{"name":"parent","type":"string","required":false,"description":null},{"name":"polymorphic","type":"string","required":false,"description":"A prop that renders another element or component in its place, with its props: \"component\"."},{"name":"projects","type":"array","required":false,"description":"At a workspace root: the folders of the projects that use it."},{"name":"props","type":"array","required":true,"description":null},{"name":"source","type":"object","required":true,"description":null},{"name":"subcomponents","type":"array","required":true,"description":null},{"name":"tokens","type":"array","required":true,"description":"Names of the design tokens its classes use."},{"name":"variants","type":"array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":196},{"name":"search_components","title":"Search components by intent","description":"Find components by what you want to build, e.g. \"confirm a destructive action\", \"status label\", \"text field with validation\". Ranks names, descriptions, docs, props and variant values with BM25 (local, no API key). When no component clearly matches, it says so and lists the nearest, marked `weak`. Use it when you do not know which component fits.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum results."},{"name":"path","type":"string","required":false,"description":"In a monorepo served from its root: the file you are editing, or a project folder, relative to the root, to answer from that project. Without it, every project is listed together. Ignored in a single…"},{"name":"query","type":"string","required":true,"description":"What the UI should do, in plain words."}],"outputs":[{"name":"results","type":"array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":190},{"name":"get_tokens","title":"Get design tokens","description":"List design tokens with resolved values, dark-mode values and how to use each (Tailwind class or CSS variable). Filter by category (color, spacing, radius, typography, shadow, other) or a substring. Use these instead of hex codes, px values or Tailwind default palette classes. Chart and sidebar colors are listed under their own headings: they are for charts and the sidebar, not for status colors.","inputs":[{"name":"category","type":"string","required":false,"description":"Only tokens of this category."},{"name":"path","type":"string","required":false,"description":"In a monorepo served from its root: the file you are editing, or a project folder, relative to the root, to answer from that project. Without it, every project is listed together. Ignored in a single…"},{"name":"query","type":"string","required":false,"description":"Substring to match in names, usages or descriptions."}],"outputs":[{"name":"tokens","type":"array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":198},{"name":"check_ui","title":"Check UI code against the design system","description":"Lint TSX/JSX against the design system. Reports hardcoded colors, spacing and radius (with the nearest token), native elements that have a design-system component, unknown components, props and variant values, and icon-only buttons without an accessible name. Each diagnostic has line/column, a rule id, a message and a suggested fix. Run it on every snippet or file you write and fix all errors. Pass `path` for a file in the project, or `code` for unsaved code, with `path` (or `filename`) naming the file it is for or its project folder.","inputs":[{"name":"code","type":"string","required":false,"description":"TSX/JSX source to check (up to 1,000,000 characters)."},{"name":"filename","type":"string","required":false,"description":"Name to report `code` under; a .jsx extension parses it as JSX. At a monorepo root, the path the code will be saved under, which picks the project whose design system checks it. When the server was s…"},{"name":"limit","type":"integer","required":false,"description":"Most diagnostics to return, errors first (default 50). The counts and byRule cover all of them."},{"name":"path","type":"string","required":false,"description":"Path of a .tsx, .jsx, .ts or .js file, relative to the project root (the monorepo root, when served from there) or absolute: the file to check, or, with `code`, the file the code is for, as `filename…"}],"outputs":[{"name":"byRule","type":"object","required":true,"description":"Every finding per rule, shown or not."},{"name":"diagnostics","type":"array","required":true,"description":"Up to `limit` diagnostics, errors first; `omitted` says how many more there are."},{"name":"errorCount","type":"integer","required":true,"description":null},{"name":"file","type":"string","required":true,"description":null},{"name":"notice","type":"string","required":false,"description":"Set when no components or no color tokens were found, so rules did not run, when components came from modules the model does not include, when the project depends on a component library onsystem does…"},{"name":"ok","type":"boolean","required":true,"description":"True when there are no errors."},{"name":"omitted","type":"integer","required":true,"description":"Diagnostics left out by `limit`."},{"name":"skipped","type":"string","required":false,"description":"Why the file was not checked: it renders an image (next/og) or an email, or the config's `exclude` leaves it out."},{"name":"unchecked","type":"object","required":false,"description":"Components imported from modules the model does not include, not checked."},{"name":"warningCount","type":"integer","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":333}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T00:12:22.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":15,"partial":false,"deprecated":null,"stale":2,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-12","recent":[{"id":"chg_01a1a916-5948-7ce8-aabb-4edf57d56ce9","kind":"score.total_changed","summary":"Trust score (91 → 92)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1a916-5948-7ce8-aabb-4edf57d56ce9"},{"id":"chg_01a1999b-13b3-7215-a5d2-ace396f2d43e","kind":"score.total_changed","summary":"Trust score (90 → 91)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1999b-13b3-7215-a5d2-ace396f2d43e"},{"id":"chg_01a1947a-d795-710d-ab8a-32619e5641c1","kind":"check.reverified","summary":"Known CVEs (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1947a-d795-710d-ab8a-32619e5641c1"},{"id":"chg_01a1947a-d797-72aa-ae6b-297e2ed3287b","kind":"check.reverified","summary":"Dependency health (unverified → 0.94)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1947a-d797-72aa-ae6b-297e2ed3287b"},{"id":"chg_01a1947a-d798-702e-8a64-203e8076eeb7","kind":"score.total_changed","summary":"Trust score (79 → 90)","materiality":"functional","direction":"improvement","scoreDelta":11,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1947a-d798-702e-8a64-203e8076eeb7"},{"id":"chg_01a18f59-0938-74d9-8461-c5848a00221f","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18f59-0938-74d9-8461-c5848a00221f"},{"id":"chg_01a18f59-0939-7448-9c93-48fc7fee3eae","kind":"score.total_changed","summary":"Trust score (63 → 79)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18f59-0939-7448-9c93-48fc7fee3eae"},{"id":"chg_01a18ec4-3b03-775e-aee6-e14e442d33d7","kind":"package.version_changed","summary":"Package version (0.11.1 → 0.12.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18ec4-3b03-775e-aee6-e14e442d33d7"},{"id":"chg_01a18e90-bee9-71e1-89a7-e33de0a66b24","kind":"package.version_changed","summary":"Package version (0.11.1 → 0.12.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18e90-bee9-71e1-89a7-e33de0a66b24"},{"id":"chg_01a18e90-bee9-7b0b-9455-b757a36f39d5","kind":"score.total_changed","summary":"Trust score (74 → 63)","materiality":"functional","direction":"regression","scoreDelta":-11,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18e90-bee9-7b0b-9455-b757a36f39d5"},{"id":"chg_01a18e1f-0008-7a01-91fd-3c7a859372ba","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18e1f-0008-7a01-91fd-3c7a859372ba"},{"id":"chg_01a18e1f-0011-7105-93c7-de76daa74206","kind":"package.version_changed","summary":"Package version (0.11.1 → 0.11.2)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18e1f-0011-7105-93c7-de76daa74206"},{"id":"chg_01a18e1f-0013-73ad-871d-27e52f2a67c6","kind":"score.total_changed","summary":"Trust score (89 → 74)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18e1f-0013-73ad-871d-27e52f2a67c6"},{"id":"chg_01a18a35-2c69-7cbd-88b7-218befff073b","kind":"check.reverified","summary":"Known CVEs (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18a35-2c69-7cbd-88b7-218befff073b"},{"id":"chg_01a18a35-2c6c-76cb-be21-724fbe5ce93c","kind":"check.reverified","summary":"Dependency health (unverified → 0.93)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18a35-2c6c-76cb-be21-724fbe5ce93c"},{"id":"chg_01a18a35-2c6d-7143-a409-f2155319b942","kind":"score.total_changed","summary":"Trust score (78 → 89)","materiality":"functional","direction":"improvement","scoreDelta":11,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a18a35-2c6d-7143-a409-f2155319b942"},{"id":"chg_01a1878e-6fc5-70b9-868f-de779eda9b96","kind":"score.total_changed","summary":"Trust score (39 → 78)","materiality":"functional","direction":"improvement","scoreDelta":39,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1878e-6fc5-70b9-868f-de779eda9b96"},{"id":"chg_01a1878c-0c70-7a4a-a2af-57f5b49203be","kind":"check.unverifiable","summary":"Known CVEs (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1878c-0c70-7a4a-a2af-57f5b49203be"},{"id":"chg_01a1878c-0c71-7cc0-bf54-07f6db93c706","kind":"check.unverifiable","summary":"Dependency health (0.93 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1878c-0c71-7cc0-bf54-07f6db93c706"},{"id":"chg_01a1878c-0c72-7b5e-963d-067c36e0e40d","kind":"package.version_changed","summary":"Package version (0.10.3 → 0.11.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem#chg-chg_01a1878c-0c72-7b5e-963d-067c36e0e40d"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem/changelog.json"},"links":{"html":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem","markdown":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem.md","changelogJson":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem/changelog.json","changelogRss":"https://verifymcp.io/servers/dgesteves-onsystem/onsystem.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/onsystem"},{"label":"Socket report","href":"https://socket.dev/npm/package/onsystem"},{"label":"Repository","href":"https://github.com/dgesteves/onsystem"},{"label":"Website","href":"https://onsystem.vercel.app/"}]}}