{"$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-05T15:49:26.901Z","url":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote","markdownUrl":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote.md","server":{"slug":"com-bastionhelix-fab-quote","name":"BHX Fab Quote","registryName":"com.bastionhelix/fab-quote","description":"Measure and price laser, plasma, waterjet and CNC jobs from DXF, G-code and STL files","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"quote","type":"remote","identifier":"https://quote.bastionhelix.com/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote","version":"1.0.0","transport":null,"scoredAt":"2026-11-05T03:33:14.458Z"},"score":{"total":64,"tier":"medium","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":64},{"date":"2026-11-04","total":64},{"date":"2026-11-03","total":63},{"date":"2026-11-02","total":63},{"date":"2026-11-01","total":63},{"date":"2026-10-31","total":62},{"date":"2026-10-30","total":62}]},"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":51,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 879 tokens (~219/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":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"219","items":"4","tools":"4","tokens":"879","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":20,"verdict":"partial","reasons":["Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"6"}}]},{"name":"Tool Coverage","score":90,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","70% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"70"}}]},{"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 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":"quote","type":"remote","identifier":"https://quote.bastionhelix.com/mcp","withdrawn":false,"score":64,"current":true,"url":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote","markdownUrl":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote.md"}],"facts":[{"label":"Endpoint","value":"https://quote.bastionhelix.com/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.0.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"analyse_dxf_for_cutting","title":"Analyse a DXF for laser, plasma or waterjet cutting","description":"Reads a flat 2D DXF (text DXF, as exported by AutoCAD, Fusion, Inventor and most CAD) and returns the parts, cut length, number of pierces and drawing problems (duplicate lines, open contours, near-miss gaps, holes smaller than the thickness). With a cutting speed it also returns the cutting time per part, including acceleration and pierces; with pricing it returns a price. Sheet nesting is not included.","inputs":[{"name":"cut_speed_mm_per_min","type":"number","required":false,"description":"Cutting speed for this material and thickness"},{"name":"dxf","type":"string","required":true,"description":"The DXF file content as text"},{"name":"machine","type":null,"required":false,"description":"A preset name (laser, plasma, waterjet) or {accel_mm_per_s2:[x,y,z], corner_tolerance_mm}"},{"name":"machine_rate_per_hour","type":"number","required":false,"description":"Machine cost per hour, for pricing"},{"name":"material","type":"object","required":false,"description":"For a material cost from the part area: {density_g_cm3, price_per_kg, utilisation_percent (expected sheet use, default 70)}"},{"name":"pierce_time_s","type":"number","required":false,"description":null},{"name":"pricing","type":"object","required":false,"description":"Optional: turn the result into a price"},{"name":"quantity","type":"integer","required":false,"description":"How many of each part"},{"name":"thickness_mm","type":"number","required":false,"description":"Material thickness, used to flag small holes"},{"name":"units","type":"string","required":false,"description":"Override the drawing units if the file does not state them"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":295},{"name":"estimate_gcode_run_time","title":"Estimate the run time of a G-code program","description":"Simulates a CNC, laser or plasma G-code program (G0-G3 with arcs and helixes, drilling cycles G73/G81-G89, dwell, tool changes, inch/mm, absolute/incremental) with the machine's rapid speeds, acceleration and tool-change time. Returns the run time, time per tool, the program's size, and warnings such as rapid moves below Z0 or a program bigger than the machine. Accepts programs of up to 3,000 lines.","inputs":[{"name":"calibration_factor","type":"number","required":false,"description":"Real time ÷ estimated time from one real job; default 1"},{"name":"dialect","type":"string","required":false,"description":"fanuc: G4 P in milliseconds (Fanuc, Haas). grbl: seconds (Grbl, LinuxCNC, Mach)"},{"name":"gcode","type":"string","required":true,"description":null},{"name":"machine","type":null,"required":false,"description":"Preset (vmc, router, hobby, laser, plasma, waterjet) or {rapid_mm_per_min:[x,y,z], accel_mm_per_s2:[x,y,z], tool_change_s, travel_mm:[x,y,z], corner_tolerance_mm}"},{"name":"machine_rate_per_hour","type":"number","required":false,"description":null},{"name":"pierce_time_s","type":"number","required":false,"description":"Laser/plasma: time added per pierce"},{"name":"pricing","type":"object","required":false,"description":"Optional: turn the result into a price"},{"name":"process","type":"string","required":false,"description":"Default: from the machine preset"},{"name":"quantity","type":"integer","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":297},{"name":"estimate_cnc_from_stl","title":"Estimate CNC machining of a 3D part (before CAM)","description":"Budget estimate for machining a part from an STL: stock block, material removed, surface area, roughing and finishing time at the material removal rates given, and part mass. Based on volume and surface area only; holes and corner radii are not detected from STL. Accepts up to 60,000 triangles.","inputs":[{"name":"allowance_mm","type":"number","required":false,"description":"Stock allowance per side, default 2"},{"name":"machine_rate_per_hour","type":"number","required":false,"description":null},{"name":"material","type":null,"required":false,"description":"Preset (al6061, ms, ss304, brass, pom) or {name, density_g_cm3, rough_cm3_per_min, finish_cm2_per_min, price_per_kg}"},{"name":"pricing","type":"object","required":false,"description":"Optional: turn the result into a price"},{"name":"quantity","type":"integer","required":false,"description":null},{"name":"setups","type":"integer","required":false,"description":null},{"name":"stl_base64","type":"string","required":true,"description":"Binary or text STL, base64-encoded"},{"name":"up","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":203},{"name":"get_example_rates","title":"Example machine and material figures","description":"Returns the example machine presets and material rates this service uses by default. They are starting points, not quotes: a shop should replace them with its own figures.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":41}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T03:33:14.000Z","track":"remote","endpoint":"https://quote.bastionhelix.com/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=bastionhelix.com","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-10-30T19:47:32Z","notAfter":"2027-01-28T20:47:29Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"quote.bastionhelix.com.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"com.","outcome":"verified","label":"Verified"},{"zone":"bastionhelix.com.","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-30","recent":[{"id":"chg_01a1a49c-7bf2-7d4b-9e43-583f4a6da1a4","kind":"score.total_changed","summary":"Trust score (63 → 64)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote#chg-chg_01a1a49c-7bf2-7d4b-9e43-583f4a6da1a4"},{"id":"chg_01a19528-df98-718d-808b-39735752b99c","kind":"score.total_changed","summary":"Trust score (62 → 63)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote#chg-chg_01a19528-df98-718d-808b-39735752b99c"},{"id":"chg_01a19000-2774-7110-8053-c9e189336841","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote#chg-chg_01a19000-2774-7110-8053-c9e189336841"},{"id":"chg_01a18ed4-0a16-7a79-b09d-897e5853d46d","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote#chg-chg_01a18ed4-0a16-7a79-b09d-897e5853d46d"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote","markdown":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote.md","changelogJson":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote/changelog.json","changelogRss":"https://verifymcp.io/servers/com-bastionhelix-fab-quote/quote.xml","external":[{"label":"Remote endpoint","href":"https://quote.bastionhelix.com/mcp"},{"label":"Website","href":"https://bastionhelix.com/fabquote/"}]}}