{"$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:00:11.806Z","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml","markdownUrl":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml.md","server":{"slug":"com-singsk-uml-plantuml","name":"uml.singsk.com PlantUML","registryName":"com.singsk/uml-plantuml","description":"Render, validate, encode/decode PlantUML diagram-as-code; 22 diagram types. Free, no auth.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"uml","type":"remote","identifier":"https://uml.singsk.com/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml","version":"1.1.0.2","transport":null,"scoredAt":"2026-11-05T07:41:34.661Z"},"score":{"total":78,"tier":"medium","status":"scored","weekDelta":0,"history":[{"date":"2026-11-05","total":78},{"date":"2026-11-04","total":78},{"date":"2026-11-03","total":77},{"date":"2026-11-02","total":77},{"date":"2026-11-01","total":62},{"date":"2026-10-31","total":78},{"date":"2026-10-30","total":78},{"date":"2026-10-29","total":78},{"date":"2026-10-28","total":78},{"date":"2026-10-27","total":78},{"date":"2026-10-26","total":77},{"date":"2026-10-25","total":78},{"date":"2026-10-24","total":78},{"date":"2026-10-23","total":78},{"date":"2026-10-22","total":78},{"date":"2026-10-21","total":78},{"date":"2026-10-20","total":77},{"date":"2026-10-19","total":77},{"date":"2026-10-18","total":77},{"date":"2026-10-17","total":78},{"date":"2026-10-16","total":78},{"date":"2026-10-15","total":78},{"date":"2026-10-14","total":78},{"date":"2026-10-13","total":78},{"date":"2026-10-12","total":16},{"date":"2026-10-10","total":31},{"date":"2026-10-04","total":47},{"date":"2026-10-03","total":62},{"date":"2026-10-02","total":78},{"date":"2026-10-01","total":78}]},"categories":[{"name":"Endpoint Security","score":63,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not fully verified: no authorisation is required to call this server, and 6 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_undeclared","args":{"undeclared_tools":"6"}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","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":79,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Tool/resource definitions use about 669 tokens (~111/item across 6 items; 6 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":"111","items":"6","tools":"6","tokens":"669","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":100,"verdict":"pass","reasons":["No destabilizing schema changes in the last 30 days."],"codes":[{"code":"stability.stable","args":{}}]},{"name":"Tool Coverage","score":83,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","50% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"50"}}]},{"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 6 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":"6"}},{"code":"toolsafety.manipulation_clean","args":{"units":"7","judged":"7"}}]},{"name":"Capabilities","score":60,"verdict":"fail","reasons":["Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28."],"codes":[{"code":"protocol.outdated","args":{"latest":"2026-07-28","version":"2025-06-18"}}]}],"inconclusive":["Authorisation not fully verified: no authorisation is required to call this server, and 6 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe."],"malware":[],"components":[{"slug":"uml","type":"remote","identifier":"https://uml.singsk.com/mcp","withdrawn":false,"score":78,"current":true,"url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml","markdownUrl":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml.md"}],"facts":[{"label":"Endpoint","value":"https://uml.singsk.com/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.1.0.2"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"render_diagram","title":null,"description":"Render PlantUML source text to a diagram image. Returns a PNG image block (format \"png\") or the SVG markup as text (format \"svg\", default), plus the shareable render URL. The source is validated first: on a syntax error the result is an error object with line, column, hint and a help link so you can fix the diagram and retry.","inputs":[{"name":"format","type":"string","required":false,"description":null},{"name":"text","type":"string","required":true,"description":"PlantUML source including @startuml ... @enduml (or the matching @start/@end pair)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":120},{"name":"validate_diagram","title":null,"description":"Check PlantUML source without rendering. Returns {ok:true, diagram_type} or {ok:false, error:{code, message, line, column, source_line, hint, diagram_type_detected, help}}. Cheap - call it in a generate -> validate -> fix loop before rendering.","inputs":[{"name":"text","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":75},{"name":"encode_source","title":null,"description":"Encode PlantUML source into a URL token and ready-to-use share/render URLs (svg + png). The result carries url_ok: GET URLs only work while the token is at most 16000 characters; when url_ok is false do not share the URLs - render with render_diagram instead (it uses the POST API, no size limit up to 5 MB). Tokens use PlantUML's own 64-character alphabet (\"0-9 A-Z a-z - _\") over raw DEFLATE. This is NOT base64 - never encode or decode tokens with a base64 codec; use encode_source / decode_token.","inputs":[{"name":"text","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":142},{"name":"decode_token","title":null,"description":"Recover the PlantUML source from a token or from any PlantUML render URL (the token is extracted automatically). Tokens use PlantUML's own 64-character alphabet (\"0-9 A-Z a-z - _\") over raw DEFLATE. This is NOT base64 - never encode or decode tokens with a base64 codec; use encode_source / decode_token.","inputs":[{"name":"encoded","type":"string","required":true,"description":"Token or full render URL"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":96},{"name":"list_diagram_types","title":null,"description":"List the 22 supported diagram/reference types with a one-line description and the local syntax reference URL for each. Use it to pick the right @start directive.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":42},{"name":"get_syntax_reference","title":null,"description":"Get the syntax reference entry for one diagram type: description, a render-verified example, and the help page URL. Use it to ground diagram generation.","inputs":[{"name":"type","type":"string","required":true,"description":"Type id or label, e.g. \"sequence\", \"class\", \"mindmap\", \"gantt\", \"json\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":72}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T07:41:34.000Z","track":"remote","endpoint":"https://uml.singsk.com/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.2","cipherSuite":"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","chainError":null,"certificates":[{"subject":"CN=singsk.com","issuer":"CN=YR1,O=Let's Encrypt,C=US","notBefore":"2026-10-21T05:34:43Z","notAfter":"2027-01-19T05:34:42Z","keyType":"RSA","keyBits":2048,"isCa":false},{"subject":"CN=YR1,O=Let's Encrypt,C=US","issuer":"CN=Root YR,O=ISRG,C=US","notBefore":"2025-09-03T00:00:00Z","notAfter":"2028-09-02T23:59:59Z","keyType":"RSA","keyBits":2048,"isCa":true},{"subject":"CN=Root YR,O=ISRG,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":"RSA","keyBits":4096,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"uml.singsk.com.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"com.","outcome":"verified","label":"Verified"},{"zone":"singsk.com.","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":null},"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-08-30","recent":[{"id":"chg_01a1aaa7-ee78-725e-9576-6e8135f004bb","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a1aaa7-ee78-725e-9576-6e8135f004bb"},{"id":"chg_01a1a57e-bbc1-7764-8747-12cc14fc547b","kind":"score.total_changed","summary":"Trust score (77 → 78)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a1a57e-bbc1-7764-8747-12cc14fc547b"},{"id":"chg_01a19b31-673d-7c34-b9cc-d8d6994161ee","kind":"check.verdict","summary":"Transport (fail → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-673d-7c34-b9cc-d8d6994161ee"},{"id":"chg_01a19b31-673f-7b83-a258-4ccf27ad3825","kind":"check.reverified","summary":"Injection markers (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-673f-7b83-a258-4ccf27ad3825"},{"id":"chg_01a19b31-6740-72f6-8456-40fb0bcc35d4","kind":"check.reverified","summary":"TLS certificate (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-6740-72f6-8456-40fb0bcc35d4"},{"id":"chg_01a19b31-6741-76be-9030-c0b60c92952a","kind":"check.reverified","summary":"HSTS header (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-6741-76be-9030-c0b60c92952a"},{"id":"chg_01a19b31-6741-7ead-98b1-dcb4d72ad680","kind":"check.reason","summary":"Authorization (Authorisation not fully verified: no authorisation is required to call this server, and 6 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-6741-7ead-98b1-dcb4d72ad680"},{"id":"chg_01a19b31-6743-7b90-baba-739c81224670","kind":"check.reverified","summary":"MCP protocol (unverified → fail)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-6743-7b90-baba-739c81224670"},{"id":"chg_01a19b31-6744-7190-b111-74172045d67e","kind":"check.reverified","summary":"Tool coverage (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-6744-7190-b111-74172045d67e"},{"id":"chg_01a19b31-6744-7d89-b9d7-0d5e789bd4ca","kind":"check.reverified","summary":"Stability (unverified → 0.90)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-6744-7d89-b9d7-0d5e789bd4ca"},{"id":"chg_01a19b31-6745-73d8-9e73-8bc9b3cdf288","kind":"capture.status_changed","summary":"Endpoint reachability (unreachable → reachable)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-6745-73d8-9e73-8bc9b3cdf288"},{"id":"chg_01a19b31-6745-797c-b6ee-21c1cae2bb3d","kind":"score.total_changed","summary":"Trust score (62 → 77)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a19b31-6745-797c-b6ee-21c1cae2bb3d"},{"id":"chg_01a1960f-9ea3-73b9-bf60-950f9986b9c5","kind":"score.total_changed","summary":"Trust score (78 → 4)","materiality":"functional","direction":"regression","scoreDelta":-74,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a1960f-9ea3-73b9-bf60-950f9986b9c5"},{"id":"chg_01a190e4-7558-74c8-a50e-6375cf2f489b","kind":"score.total_changed","summary":"Trust score (78 → 4)","materiality":"functional","direction":"regression","scoreDelta":-74,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a190e4-7558-74c8-a50e-6375cf2f489b"},{"id":"chg_01a18bbe-fef5-76d2-829d-a07dfe2af77d","kind":"check.unverifiable","summary":"Stability (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a18bbe-fef5-76d2-829d-a07dfe2af77d"},{"id":"chg_01a18bbe-fef9-74d9-98fc-8be12087368b","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a18bbe-fef9-74d9-98fc-8be12087368b"},{"id":"chg_01a18bbe-fef9-7dd2-b08b-a7f26e34b9ad","kind":"check.unverifiable","summary":"TLS certificate (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a18bbe-fef9-7dd2-b08b-a7f26e34b9ad"},{"id":"chg_01a18bbe-fefa-7763-b87b-87adfe53ffba","kind":"check.verdict","summary":"Transport (pass → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a18bbe-fefa-7763-b87b-87adfe53ffba"},{"id":"chg_01a18bbe-fefb-79d7-ae7e-1e4d1898100e","kind":"check.unverifiable","summary":"HSTS header (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a18bbe-fefb-79d7-ae7e-1e4d1898100e"},{"id":"chg_01a18bbe-fefc-7273-b88f-5f0a023f91fd","kind":"check.reason","summary":"Authorization (Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml#chg-chg_01a18bbe-fefc-7273-b88f-5f0a023f91fd"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml","markdown":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml.md","changelogJson":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml/changelog.json","changelogRss":"https://verifymcp.io/servers/com-singsk-uml-plantuml/uml.xml","external":[{"label":"Remote endpoint","href":"https://uml.singsk.com/mcp"},{"label":"Website","href":"https://uml.singsk.com/"}]}}