{"$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:30:49.578Z","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw","markdownUrl":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw.md","server":{"slug":"fisher98kim-nsw-transport","name":"NSW Transport","registryName":"io.github.fisher98kim/nsw-transport","description":"NSW public transport: trip planning, real-time departures, service alerts, Park&Ride car parks.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"mcp-au-nsw","type":"pypi","identifier":"mcp-au-nsw","withdrawn":false,"url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw","version":"0.3.1","transport":"stdio","scoredAt":"2026-11-05T05:20:14.987Z"},"score":{"total":58,"tier":"low","status":"scored","weekDelta":-9,"history":[{"date":"2026-11-05","total":58},{"date":"2026-11-04","total":73},{"date":"2026-11-03","total":57},{"date":"2026-11-02","total":72},{"date":"2026-11-01","total":67},{"date":"2026-10-31","total":67},{"date":"2026-10-30","total":67},{"date":"2026-10-29","total":67},{"date":"2026-10-28","total":67},{"date":"2026-10-27","total":67},{"date":"2026-10-26","total":67},{"date":"2026-10-25","total":52},{"date":"2026-10-24","total":52},{"date":"2026-10-23","total":52},{"date":"2026-10-22","total":52}]},"categories":[{"name":"Supply Chain Security","score":50,"verdict":"partial","reasons":["Malware scan not yet available for this package.","No known CVEs affecting this package version or its production dependencies.","Runs uv_build at install time, a recognised build step with no custom scripting around it.","1 of 31 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_inconclusive","args":{"reason":"vendor_no_verdict"}},{"code":"cve.none","args":{}},{"code":"installscript.allowlisted","args":{"tool":"uv_build","hooks":"build_backend"}},{"code":"dephealth.assessed","args":{"deps":"31","unhealthy":"1"}}]},{"name":"Provenance & Transparency","score":45,"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 13 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"13"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":67,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 681 tokens (~113/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":"good"}},{"code":"schema.footprint_lean","args":{"avg":"113","items":"6","tools":"6","tokens":"681","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":47,"verdict":"partial","reasons":["Stability observed for 14 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"14"}}]},{"name":"Tool Coverage","score":71,"verdict":"fail","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","0% 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":"0"}},{"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 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":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":["Malware scan not yet available for this package."],"malware":[],"components":[{"slug":"mcp-au-nsw","type":"pypi","identifier":"mcp-au-nsw","withdrawn":false,"score":58,"current":true,"url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw","markdownUrl":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"mcp-au-nsw"},{"label":"Version","value":"0.3.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"find_stops","title":null,"description":"Search train stations, bus stops, wharves and light rail stops by name. Returns stop IDs and the modes served.","inputs":[{"name":"limit","type":"integer","required":false,"description":null},{"name":"query","type":"string","required":true,"description":null}],"outputs":[{"name":"result","type":"array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":48},{"name":"get_departures","title":null,"description":"Next departures from a station or stop, with real-time delays and platforms.\n\nstop: a stop name (e.g. \"Town Hall Station\") or stop ID from find_stops.\nmodes: only include these modes (e.g. [\"train\"]). when: 'HH:MM' or 'YYYY-MM-DD HH:MM' Sydney time; default now.","inputs":[{"name":"limit","type":"integer","required":false,"description":null},{"name":"modes","type":null,"required":false,"description":null},{"name":"stop","type":"string","required":true,"description":null},{"name":"when","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":106},{"name":"plan_trip","title":null,"description":"Plan a public transport journey from A to B, using real-time data where available.\n\norigin/destination: a place name (station, address, landmark like \"UNSW\"), stop ID, or 'lat,lng'.\nwhen: 'HH:MM' or 'YYYY-MM-DD HH:MM' Sydney time; default now. arrive_by: treat `when` as the arrival deadline.\nmodes: only use these modes (walking is always allowed).","inputs":[{"name":"arrive_by","type":"boolean","required":false,"description":null},{"name":"destination","type":"string","required":true,"description":null},{"name":"limit","type":"integer","required":false,"description":null},{"name":"modes","type":null,"required":false,"description":null},{"name":"origin","type":"string","required":true,"description":null},{"name":"when","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":138},{"name":"get_service_alerts","title":null,"description":"Current disruptions, trackwork and service changes. Filter by mode, line (e.g. \"T1\", \"L2\", \"333\") and/or stop name.\n\nThere are usually hundreds of current alerts, so always filter when you can.","inputs":[{"name":"limit","type":"integer","required":false,"description":null},{"name":"line","type":null,"required":false,"description":null},{"name":"mode","type":null,"required":false,"description":null},{"name":"stop","type":null,"required":false,"description":null}],"outputs":[{"name":"result","type":"array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":81},{"name":"get_car_park_availability","title":null,"description":"Live free spaces at Transport Park&Ride car parks (about 40 car parks at stations across Sydney).\n\nquery: text matched against car park name and suburb (e.g. \"Tallawong\", \"Penrith\"). near: a place name,\naddress or 'lat,lng'; only car parks within radius_km are returned, nearest first. With neither, all are listed.","inputs":[{"name":"limit","type":"integer","required":false,"description":null},{"name":"near","type":null,"required":false,"description":null},{"name":"query","type":null,"required":false,"description":null},{"name":"radius_km","type":"number","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":116},{"name":"get_car_park_history","title":null,"description":"How full a Park&Ride car park was through one day: hourly occupancy, the peak, and when it first filled up.\n\nfacility_id: from get_car_park_availability. date: 'YYYY-MM-DD'. Useful for \"what time does it usually fill up?\".","inputs":[{"name":"date","type":"string","required":true,"description":null},{"name":"facility_id","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":82}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T05:20:14.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":[{"hook":"build_backend","tier":"allowlisted"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":31,"partial":false,"deprecated":null,"stale":null,"noRepo":1}},"mismatches":[],"changelog":{"trackingSince":"2026-10-22","recent":[{"id":"chg_01a1aa26-8aa7-7d8f-a735-8538ac01c651","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a1aa26-8aa7-7d8f-a735-8538ac01c651"},{"id":"chg_01a1aa26-8aa9-7762-9b63-8480a1415e38","kind":"score.total_changed","summary":"Trust score (73 → 58)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a1aa26-8aa9-7762-9b63-8480a1415e38"},{"id":"chg_01a1a454-356a-78a7-9c46-2c051d2b70b4","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a1a454-356a-78a7-9c46-2c051d2b70b4"},{"id":"chg_01a1a454-356d-70cb-8ffa-fd22b699b58e","kind":"score.total_changed","summary":"Trust score (57 → 73)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a1a454-356d-70cb-8ffa-fd22b699b58e"},{"id":"chg_01a19fd5-57ff-7d14-90a2-2bade932d39f","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a19fd5-57ff-7d14-90a2-2bade932d39f"},{"id":"chg_01a19fd5-5801-75f5-9c4c-4060b466ff41","kind":"score.total_changed","summary":"Trust score (72 → 57)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a19fd5-5801-75f5-9c4c-4060b466ff41"},{"id":"chg_01a19a07-9bce-7267-afd5-b13879aa905c","kind":"check.reverified","summary":"Stability (unverified → 0.37)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a19a07-9bce-7267-afd5-b13879aa905c"},{"id":"chg_01a19a07-9bcf-785a-9b05-65fb378a6166","kind":"score.total_changed","summary":"Trust score (67 → 72)","materiality":"functional","direction":"improvement","scoreDelta":5,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a19a07-9bcf-785a-9b05-65fb378a6166"},{"id":"chg_01a17637-e403-73a5-a747-3aae7afc835c","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a17637-e403-73a5-a747-3aae7afc835c"},{"id":"chg_01a17637-e404-7672-bb12-65ec67142b00","kind":"score.total_changed","summary":"Trust score (52 → 67)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a17637-e404-7672-bb12-65ec67142b00"},{"id":"chg_01a165fa-ca60-7c1b-9132-4efb8a51d97d","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw#chg-chg_01a165fa-ca60-7c1b-9132-4efb8a51d97d"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw/changelog.json"},"links":{"html":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw","markdown":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw.md","changelogJson":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw/changelog.json","changelogRss":"https://verifymcp.io/servers/fisher98kim-nsw-transport/mcp-au-nsw.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/mcp-au-nsw/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/mcp-au-nsw"},{"label":"Repository","href":"https://github.com/fisher98kim/mcp-au-nsw"}]}}