{"$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-06T11:30:01.291Z","url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree","markdownUrl":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree.md","server":{"slug":"maximilianfeix-shortfree","name":"shortfree","registryName":"io.github.maximilianfeix/shortfree","description":"Live domain availability checks plus every free 1-4 character .com .net .de .ai .io .dev .app .tools","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"ghcr-io-maximilianfeix-shortfree","type":"oci","identifier":"ghcr.io/maximilianfeix/shortfree","withdrawn":false,"url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree","version":"0.1.0","transport":"stdio","scoredAt":"2026-11-06T06:04:21.298Z"},"score":{"total":43,"tier":"low","status":"scored","weekDelta":4,"history":[{"date":"2026-11-06","total":43},{"date":"2026-11-05","total":42},{"date":"2026-11-04","total":42},{"date":"2026-11-03","total":41},{"date":"2026-11-02","total":41},{"date":"2026-11-01","total":40},{"date":"2026-10-31","total":40},{"date":"2026-10-30","total":39},{"date":"2026-10-29","total":39},{"date":"2026-10-28","total":38},{"date":"2026-10-27","total":38}]},"categories":[{"name":"Supply Chain Security","score":0,"verdict":"unverified","reasons":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Install-script risk not yet assessed.","Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read."],"codes":[{"code":"supplychain.malware_inconclusive","args":{"reason":"ecosystem_unsupported"}},{"code":"cve.inconclusive","args":{"reason":"no_sbom_attached"}},{"code":"installscript.inconclusive","args":{"reason":"no_install_concept"}},{"code":"dephealth.inconclusive","args":{"reason":"no_sbom_attached"}}]},{"name":"Provenance & Transparency","score":48,"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 (MIT).","Actively maintained (last published 10 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"10"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":58,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 1885 tokens (~471/item across 4 items; 4 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":"471","items":"4","tools":"4","tokens":"1885","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":33,"verdict":"partial","reasons":["Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"10"}}]},{"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 4 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 5 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":"4"}},{"code":"toolsafety.manipulation_clean","args":{"units":"5","judged":"5"}}]},{"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":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Install-script risk not yet assessed.","Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read."],"malware":[],"components":[{"slug":"ghcr-io-maximilianfeix-shortfree","type":"oci","identifier":"ghcr.io/maximilianfeix/shortfree","withdrawn":false,"score":43,"current":true,"url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree","markdownUrl":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree.md"}],"facts":[{"label":"Registry","value":"oci"},{"label":"Package","value":"ghcr.io/maximilianfeix/shortfree"},{"label":"Version","value":"0.1.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"check_domains","title":null,"description":"Live availability check for up to 50 domains (any length, any TLD, e.g. \"q7.tools\", \"acme.io\"). For each domain it asks the TLD's own authoritative name servers (NS query, no resolver cache) and the registry's RDAP service, so the answer is current to the second, unlike the daily snapshot used by find_free_domains. Returns per domain: dns (free|taken|unknown), rdap (available = 404|registered|dropping|error, \"-\" if the TLD has no RDAP endpoint in shortfree), verdict (\"not registered (RDAP 404)\"; \"taken\"; \"dropping (redemption or pending delete)\"; \"not in DNS (...)\" when only DNS answered), registration (not_registered|registered|dropping|not_delegated|unknown|invalid), registrable (no|unconfirmed: RDAP cannot see registry reservations, premium prices or eligibility rules, so a not registered name is never confirmed as buyable), free (true only for registration not_registered) and premium_likely (1-2 character names outside .com/.net/.de, which registries usually reserve or sell at premium prices although RDAP reports them as unregistered). RDAP works for every TLD in the snapshot (.com .net .de .ai .io .dev .app .tools .co .org .xyz .so .to .cc .tv .fm .is .ly .run .inc); other TLDs get a DNS-only verdict. Names shorter than a registry's minimum length are reported as not registrable. Only ASCII names (a-z, 0-9, hyphen) are supported: internationalized names and xn-- labels are rejected as invalid. Use this before telling a user a domain is unregistered. Takes about 1 s per domain (rate-limited per registry).","inputs":[{"name":"domains","type":"null|array","required":true,"description":"1-50 domains like q7.tools or acme.io (label.tld, no subdomains)"}],"outputs":[{"name":"checked_at","type":"string","required":true,"description":null},{"name":"results","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":424},{"name":"domain_stats","title":null,"description":"Counts of short domains per TLD and label length (1-4) from the latest daily scan: rdap_verified (not registered per RDAP), unverified (not in DNS, no current RDAP answer; stale = part of it whose RDAP answer expired), dropping (in redemption/pending delete), dns_only_4char (4 character names not in the zone), dns_unknown (no DNS answer: not checked), unscanned_4char (4 character names in shards never swept: not checked, not taken), valid_names (how many LDH labels of that length exist) and coverage (complete, partial, stale or held). Use it to answer \"how many 3 letter .io domains are left?\" or to pick a TLD with the most free names before searching. Optional tld filter.","inputs":[{"name":"tld","type":"string","required":false,"description":"TLD or comma-separated TLDs; empty = all"}],"outputs":[{"name":"data_updated","type":"string","required":true,"description":null},{"name":"tlds","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":195},{"name":"find_free_domains","title":null,"description":"Search the daily snapshot of unregistered 1-4 character domains on .com .net .de .ai .io .dev .app .tools .co .org .xyz .so .to .cc .tv .fm .is .ly .run .inc. Filters: tld (one or comma-separated, default all), length (1-4, default all, shortest first), kind (letters|digits|mixed|any), contains, starts_with, include_dropping. Each result has a status: rdap_verified (1-3 chars, registry RDAP answered 404 = not registered within the last 14 days; registrability not confirmed), unverified (1-3 chars, not in DNS, no current RDAP answer; stale=true when the last answer expired), dns_only (4 chars: not in the zone, never RDAP-checked; may be registered without name servers) or dropping (registered, in redemption/pending delete, with phase and RDAP expiration date, which is not a drop date; only with include_dropping). contains and starts_with accept a-z, 0-9 and hyphen only (ASCII scope, no IDN). Results are ordered by length, then status, then TLD (com net de ai io dev app tools co org xyz so to cc tv fm is ly run inc), then a-z before 0-9. total_matches counts all hits even when limit (default 100, max 1000) cuts the list. The snapshot is up to a day old: confirm picks with check_domains.","inputs":[{"name":"contains","type":"string","required":false,"description":"only labels that contain this text, e.g. ai"},{"name":"include_dropping","type":"boolean","required":false,"description":"also return registered 1-3 character names in redemption or pending delete (status dropping)"},{"name":"kind","type":"string","required":false,"description":"letters (a-z only), digits (0-9 only), mixed (letters+digits or hyphen) or any (default)"},{"name":"length","type":"integer","required":false,"description":"exact label length 1-4, not counting the TLD. 0 = all lengths"},{"name":"limit","type":"integer","required":false,"description":"maximum results, default 100, max 1000"},{"name":"starts_with","type":"string","required":false,"description":"only labels that start with this text"},{"name":"tld","type":"string","required":false,"description":"TLD without or with dot, comma-separated for several (io,dev). Empty = all scanned TLDs"}],"outputs":[{"name":"data_updated","type":"string","required":true,"description":null},{"name":"domains","type":"null|array","required":true,"description":null},{"name":"notes","type":"null|array","required":false,"description":null},{"name":"returned","type":"integer","required":true,"description":null},{"name":"total_matches","type":"integer","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":500},{"name":"suggest_domains","title":null,"description":"Turn a word, brand or project idea into short (max 4 character) domain names that are free on .com .net .de .ai .io .dev .app .tools .co .org .xyz .so .to .cc .tv .fm .is .ly .run .inc, best first. Deterministic heuristic, scored: the word itself if <= 4 chars (100), initials of a multi-word idea (95), a short word of the idea (90), initials of the first two words (85), first 4/3/2 letters (80/75/70), consonant skeleton without vowels like flickr -> flckr (78/73), two-word blends 2+2, 1+3, 3+1 letters (72/68), then startup patterns on those bases: add a digit 1-9 (55-47), add x (50), add hq or ly (48), go/my prefix (45). Stop words (the, of, and, ...) are dropped, accents transliterated, camelCase split. Each candidate is looked up in the daily snapshot per TLD; 1-2 character names on TLDs other than .com/.net/.de lose 15 points because they are usually premium. Ties go to the TLD order given in tlds (default com net de ai io dev app tools co org xyz so to cc tv fm is ly run inc), then to RDAP-verified over unverified/dns_only. Longer names are out of scope: check those with check_domains. Confirm favourites with check_domains before registering.","inputs":[{"name":"idea","type":"string","required":true,"description":"a word, brand or project idea, e.g. Flicker or deep mind labs"},{"name":"limit","type":"integer","required":false,"description":"maximum suggestions, default 20, max 100"},{"name":"max_length","type":"integer","required":false,"description":"longest label to suggest, 1-4, default 4"},{"name":"tlds","type":"null|array","required":false,"description":"TLDs to consider in order of preference, e.g. [io, dev]. Empty = all scanned TLDs in the default order (com net de ai io ...)"}],"outputs":[{"name":"candidates_considered","type":"integer","required":true,"description":null},{"name":"data_updated","type":"string","required":true,"description":null},{"name":"idea","type":"string","required":true,"description":null},{"name":"notes","type":"null|array","required":false,"description":null},{"name":"suggestions","type":"null|array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":451}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T06:04:21.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":"no_attestation","reasonLabel":"No attestation published","discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-27","recent":[{"id":"chg_01a1af75-47d9-74e0-943f-9a058fceed78","kind":"score.total_changed","summary":"Trust score (42 → 43)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree#chg-chg_01a1af75-47d9-74e0-943f-9a058fceed78"},{"id":"chg_01a1a4d1-b8ce-73fd-8214-b5cbdaf16710","kind":"score.total_changed","summary":"Trust score (41 → 42)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree#chg-chg_01a1a4d1-b8ce-73fd-8214-b5cbdaf16710"},{"id":"chg_01a19a82-db59-7dee-82a1-b6f93ad5e1ed","kind":"score.total_changed","summary":"Trust score (40 → 41)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree#chg-chg_01a19a82-db59-7dee-82a1-b6f93ad5e1ed"},{"id":"chg_01a19034-b368-757e-bb03-c2cdb304dd54","kind":"score.total_changed","summary":"Trust score (39 → 40)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree#chg-chg_01a19034-b368-757e-bb03-c2cdb304dd54"},{"id":"chg_01a185e8-fa56-7509-98ae-05b35e8a7345","kind":"score.total_changed","summary":"Trust score (38 → 39)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree#chg-chg_01a185e8-fa56-7509-98ae-05b35e8a7345"},{"id":"chg_01a17aca-baba-7934-9f6f-7872842475a4","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree#chg-chg_01a17aca-baba-7934-9f6f-7872842475a4"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree/changelog.json"},"links":{"html":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree","markdown":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree.md","changelogJson":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree/changelog.json","changelogRss":"https://verifymcp.io/servers/maximilianfeix-shortfree/ghcr-io-maximilianfeix-shortfree.xml","external":[{"label":"GitHub Container Registry","href":"https://ghcr.io/maximilianfeix/shortfree"},{"label":"Repository","href":"https://github.com/maximilianfeix/shortfree"},{"label":"Website","href":"https://maximilianfeix.github.io/shortfree/"}]}}