{"$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-05T20:25:44.289Z","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api","markdownUrl":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api.md","server":{"slug":"dev-workers-zenith-ops-swekit-api-swekit","name":"SweKit - Swedish validators","registryName":"dev.workers.zenith-ops.swekit-api/swekit","description":"Swedish personnummer/orgnr/bankgiro/OCR validation, kontonummer to IBAN, bankdagar.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"swekit-api","type":"remote","identifier":"https://swekit-api.zenith-ops.workers.dev/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api","version":"0.1.0","transport":null,"scoredAt":"2026-11-05T04:27:59.502Z"},"score":{"total":74,"tier":"medium","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":74},{"date":"2026-11-04","total":73},{"date":"2026-11-03","total":73},{"date":"2026-11-02","total":73},{"date":"2026-11-01","total":72},{"date":"2026-10-31","total":72},{"date":"2026-10-30","total":71},{"date":"2026-10-29","total":71},{"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":66},{"date":"2026-10-19","total":66}]},"categories":[{"name":"Endpoint Security","score":63,"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 enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.","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.inconclusive","args":{"reason":"plaintext_status","status":"405"}},{"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":71,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 743 tokens (~57/item across 13 items; 13 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"57","items":"13","tools":"13","tokens":"743","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":57,"verdict":"partial","reasons":["Stability observed for 17 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"17"}}]},{"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 13 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 14 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":"13"}},{"code":"toolsafety.manipulation_clean","args":{"units":"14","judged":"14"}}]},{"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":["HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement."],"malware":[],"components":[{"slug":"swekit-api","type":"remote","identifier":"https://swekit-api.zenith-ops.workers.dev/mcp","withdrawn":false,"score":74,"current":true,"url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api","markdownUrl":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api.md"}],"facts":[{"label":"Endpoint","value":"https://swekit-api.zenith-ops.workers.dev/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"0.1.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"validate_personnummer","title":null,"description":"Validate a Swedish personnummer or samordningsnummer (format, Luhn checksum, birth date, age, gender). Checks format only; does not prove the person exists.","inputs":[{"name":"value","type":"string","required":true,"description":"e.g. 811218-9876 or 198112189876"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":66},{"name":"validate_orgnr","title":null,"description":"Validate a Swedish organisationsnummer (or SE...01 VAT number); returns legal form hint and the derived Swedish VAT number.","inputs":[{"name":"value","type":"string","required":true,"description":"e.g. 556036-0793"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":49},{"name":"validate_bankgiro","title":null,"description":"Validate and format a Swedish bankgiro number.","inputs":[{"name":"value","type":"string","required":true,"description":"e.g. 5402-9681"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":36},{"name":"validate_plusgiro","title":null,"description":"Validate and format a Swedish plusgiro number.","inputs":[{"name":"value","type":"string","required":true,"description":"e.g. 123456-6"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":35},{"name":"validate_ocr","title":null,"description":"Validate a Swedish OCR payment reference (Luhn check digit, optional length digit).","inputs":[{"name":"value","type":"string","required":true,"description":"OCR digits"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":34},{"name":"generate_ocr","title":null,"description":"Generate a Swedish OCR reference (check digit, optional length digit) from a base number such as an invoice number.","inputs":[{"name":"base","type":"string","required":true,"description":"digits"},{"name":"length_digit","type":"string","required":false,"description":"\"true\" to add length digit"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":55},{"name":"swedish_account_to_iban","title":null,"description":"Validate a Swedish national bank account (clearing + account number, Bankgirot checksum rules) and convert it to IBAN using the official Bankinfrastruktur clearing table. Returns bank, BIC, account type, IBAN.","inputs":[{"name":"account","type":"string","required":false,"description":"account number without clearing"},{"name":"clearing","type":"string","required":false,"description":"clearing number (4 digits; 5 for Swedbank 8xxx)"},{"name":"number","type":"string","required":false,"description":"full account digits, clearing first (optional if clearing+account given)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":112},{"name":"validate_iban","title":null,"description":"Validate any IBAN (ISO 13616 mod-97 + country length) and identify the bank for Swedish IBANs.","inputs":[{"name":"value","type":"string","required":true,"description":"IBAN, spaces allowed"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":47},{"name":"lookup_clearing_number","title":null,"description":"Look up bank name, BIC, IBAN id and account type for a Swedish clearing number.","inputs":[{"name":"value","type":"string","required":true,"description":"first 4 digits of the account number"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":46},{"name":"swedish_holidays","title":null,"description":"List Swedish public holidays, eves and observances for a year (computed).","inputs":[{"name":"year","type":"string","required":false,"description":"1900-2200"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":39},{"name":"swedish_date_info","title":null,"description":"Weekday (sv/en), ISO week, holiday names and business-day status for a date. mode=bank treats midsommarafton, julafton and nyårsafton as non-business days.","inputs":[{"name":"date","type":"string","required":true,"description":"YYYY-MM-DD"},{"name":"mode","type":"string","required":false,"description":"bank or work"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":71},{"name":"add_business_days","title":null,"description":"Add (or subtract) business days to a date using Swedish holidays (e.g. payment due dates).","inputs":[{"name":"date","type":"string","required":true,"description":"YYYY-MM-DD"},{"name":"days","type":"string","required":true,"description":"integer, may be negative"},{"name":"mode","type":"string","required":false,"description":"bank or work"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":62},{"name":"count_business_days","title":null,"description":"Count Swedish business days after \"from\" up to and including \"to\".","inputs":[{"name":"from","type":"string","required":true,"description":"YYYY-MM-DD"},{"name":"mode","type":"string","required":false,"description":"bank or work"},{"name":"to","type":"string","required":true,"description":"YYYY-MM-DD"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":54}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T04:27:59.000Z","track":"remote","endpoint":"https://swekit-api.zenith-ops.workers.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=zenith-ops.workers.dev","issuer":"CN=YE2,O=Let's Encrypt,C=US","notBefore":"2026-10-18T15:31:36Z","notAfter":"2027-01-16T15:31:35Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=YE2,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":"swekit-api.zenith-ops.workers.dev.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"dev.","outcome":"verified","label":"Verified"},{"zone":"workers.dev.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":405},"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-19","recent":[{"id":"chg_01a1a9f6-b2a3-7b06-b404-f02813822d72","kind":"score.total_changed","summary":"Trust score (73 → 74)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a1a9f6-b2a3-7b06-b404-f02813822d72"},{"id":"chg_01a19a7e-ede7-7a17-b17d-00fc48ec94ca","kind":"score.total_changed","summary":"Trust score (72 → 73)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a19a7e-ede7-7a17-b17d-00fc48ec94ca"},{"id":"chg_01a19030-d938-723b-bd13-c83efc7cffb8","kind":"score.total_changed","summary":"Trust score (71 → 72)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a19030-d938-723b-bd13-c83efc7cffb8"},{"id":"chg_01a185e4-849d-769e-b6f6-ede12f388e92","kind":"score.total_changed","summary":"Trust score (70 → 71)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a185e4-849d-769e-b6f6-ede12f388e92"},{"id":"chg_01a17b8d-29e7-7604-aafd-0da3d9c9531b","kind":"score.total_changed","summary":"Trust score (69 → 70)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a17b8d-29e7-7604-aafd-0da3d9c9531b"},{"id":"chg_01a17140-8e30-7985-8c6e-a862b413252d","kind":"score.total_changed","summary":"Trust score (68 → 69)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a17140-8e30-7985-8c6e-a862b413252d"},{"id":"chg_01a166f2-1c3a-74b5-8fa9-6b099fea64a2","kind":"score.total_changed","summary":"Trust score (67 → 68)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a166f2-1c3a-74b5-8fa9-6b099fea64a2"},{"id":"chg_01a15ca5-ccea-71d0-9a06-b45ab9d4ac57","kind":"score.total_changed","summary":"Trust score (66 → 67)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a15ca5-ccea-71d0-9a06-b45ab9d4ac57"},{"id":"chg_01a1577f-9e7e-715c-9080-aaa2a0b79d63","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-20","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a1577f-9e7e-715c-9080-aaa2a0b79d63"},{"id":"chg_01a15178-30c8-7381-97c7-9f43f9e64ae3","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-19","url":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api#chg-chg_01a15178-30c8-7381-97c7-9f43f9e64ae3"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api/changelog.json"},"links":{"html":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api","markdown":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api.md","changelogJson":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api/changelog.json","changelogRss":"https://verifymcp.io/servers/dev-workers-zenith-ops-swekit-api-swekit/swekit-api.xml","external":[{"label":"Remote endpoint","href":"https://swekit-api.zenith-ops.workers.dev/mcp"},{"label":"Website","href":"https://swekit-api.zenith-ops.workers.dev/docs"}]}}