CADProps
Fast multi-format CAD previews, geometry checks and conversion; measure and share in the workspace.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"cadprops": {
"url": "https://www.cadprops.com/api/v1/mcp"
}
}
}Remote endpoints
https://www.cadprops.com/api/v1/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢inspect_cad(file, upload_ticket, ref, wait_seconds)
Open a CAD file on CADProps servers and report its format, size, volume, area, units and accuracy, with an interactive 3D preview. Supported: 3DM, 3DXML, 3MF, 7Z, AMF, ASM, BMP, CATDRAWING, CATPART, CATPRODUCT, CGM, DFT, DRW, DWF, DWFX, DWG, DXF, EMF, GIF, GLB, GLTF, GZ, IAM, ICO, IDW, IGES, IGS, IPT, JPG, JT, OBJ, PAR, PCX, PDF, PLT, PLY, PNG, PRT, PSM, RAR, SAB, SAT, SLDASM, SLDDRW, SLDPRT, STEP, STL, STP, SVG, TGA, TGZ, TIFF, VRML, WEBP, WMF, WRL, WRZ, X_B, X_T, ZIP. Creo .prt files with supported saved triangle strips show a partial 3D preview with unverified units and no physical measurements. Other Creo .prt files, Creo .asm files and CATIA .CATProduct files show only the thumbnail saved in the file when available. Call with no file to get a one-time upload link. Files are deleted about one hour after upload.
Input Schema
{
"type": "object",
"properties": {
"file": {
"type": "object",
"properties": {
"download_url": {
"type": "string"
},
"file_id": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": false
},
"upload_ticket": {
"type": "string",
"description": "Ticket from a previous upload link, after the user says the upload is done."
},
"ref": {
"type": "string",
"description": "Reference returned by an earlier inspect_cad call."
},
"wait_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 20,
"default": 15
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string"
},
"status": {
"type": "string"
},
"filename": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"measurement_accuracy": {
"enum": [
"exact",
"bounded_brep_approximate",
"mesh_approximate",
"unavailable"
]
},
"precision_grade": {
"anyOf": [
{
"enum": [
"trial-001",
"source-sp-engineering-v1"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Precision Grade"
},
"source_precision_qualified": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Source Precision Qualified"
},
"precision_summary": {
"anyOf": [
{
"$ref": "#/$defs/BRepPrecisionSummary"
},
{
"$ref": "#/$defs/SourceSPPrecisionSummary"
},
{
"type": "null"
}
],
"default": null,
"title": "Precision Summary"
},
"step_output": {
"type": "string"
},
"upload_url": {
"type": "string"
},
"upload_ticket": {
"type": "string"
},
"representation": {
"type": [
"string",
"null"
]
},
"failure": {
"type": [
"string",
"null"
]
},
"volume_mm3": {
"type": [
"number",
"null"
]
},
"area_mm2": {
"type": [
"number",
"null"
]
},
"incomplete": {
"type": "boolean"
},
"missing_components": {
"type": "integer"
},
"part_count": {
"type": "integer"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"format": {
"type": "object",
"properties": {
"extension": {
"type": "string"
},
"support": {
"enum": [
"3d",
"thumbnail_only",
"drawing",
"unsupported"
]
}
},
"required": [
"extension",
"support"
],
"additionalProperties": false
},
"units": {
"type": "object",
"properties": {
"unit": {
"const": "mm"
},
"source_units": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"enum": [
"verified",
"assumed",
"unknown"
]
}
},
"required": [
"unit",
"source_units",
"status"
],
"additionalProperties": false
},
"bounding_box_mm": {
"type": [
"object",
"null"
],
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
}
},
"$defs": {
"BRepPrecisionSummary": {
"properties": {
"certificate_sha256": {
"pattern": "^[0-9a-f]{64}$",
"title": "Certificate Sha256",
"type": "string"
},
"geometry_error_limit_mm": {
"const": 0.01,
"title": "Geometry Error Limit Mm",
"type": "number"
},
"maximum_curve_surface_error_mm": {
"maximum": 0.01,
"minimum": 0,
"title": "Maximum Curve Surface Error Mm",
"type": "number"
},
"actual_pc_occurrences": {
"minimum": 1,
"title": "Actual Pc Occurrences",
"type": "integer"
},
"actual_pc_samples": {
"maximum": 524288,
"minimum": 129,
"title": "Actual Pc Samples",
"type": "integer"
},
"samples_per_actual_pc_span": {
"const": 129,
"title": "Samples Per Actual Pc Span",
"type": "integer"
},
"step_readback_relative_volume_error": {
"maximum": 0.000001,
"minimum": 0,
"title": "Step Readback Relative Volume Error",
"type": "number"
},
"scope": {
"const": "finite65-native-span/129-actual-pcurve-span",
"title": "Scope",
"type": "string"
},
"reference_validation": {
"const": "not_measured_at_runtime",
"title": "Reference Validation",
"type": "string"
}
},
"required": [
"certificate_sha256",
"geometry_error_limit_mm",
"maximum_curve_surface_error_mm",
"actual_pc_occurrences",
"actual_pc_samples",
"samples_per_actual_pc_span",
"step_readback_relative_volume_error",
"scope",
"reference_validation"
],
"title": "BRepPrecisionSummary",
"type": "object"
},
"SourceSPPrecisionSummary": {
"additionalProperties": false,
"description": "Public finite-tier facts only; private qualification objects never enter it.",
"properties": {
"certificate_sha256": {
"pattern": "^[0-9a-f]{64}$",
"title": "Certificate Sha256",
"type": "string"
},
"maximum_added_source_error_mm": {
"maximum": 0.01,
"minimum": 0,
"title": "Maximum Added Source Error Mm",
"type": "number"
},
"inherited_consistency_max_mm": {
"minimum": 0,
"title": "Inherited Consistency Max Mm",
"type": "number"
},
"inherited_source_cap_max_mm": {
"exclusiveMinimum": 0,
"title": "Inherited Source Cap Max Mm",
"type": "number"
},
"source_fin_occurrences": {
"minimum": 1,
"title": "Source Fin Occurrences",
"type": "integer"
},
"source_finite_occurrences": {
"minimum": 1,
"title": "Source Finite Occurrences",
"type": "integer"
},
"source_analytic_occurrences": {
"minimum": 0,
"title": "Source Analytic Occurrences",
"type": "integer"
},
"source_schedule_required_samples": {
"minimum": 129,
"title": "Source Schedule Required Samples",
"type": "integer"
},
"source_schedule_paid_samples": {
"minimum": 0,
"title": "Source Schedule Paid Samples",
"type": "integer"
},
"source_schedule_reused_samples": {
"minimum": 0,
"title": "Source Schedule Reused Samples",
"type": "integer"
},
"readback_actual_occurrences": {
"minimum": 1,
"title": "Readback Actual Occurrences",
"type": "integer"
},
"readback_actual_samples": {
"maximum": 262144,
"minimum": 129,
"title": "Readback Actual Samples",
"type": "integer"
},
"step_readback_relative_volume_error": {
"maximum": 0.000001,
"minimum": 0,
"title": "Step Readback Relative Volume Error",
"type": "number"
},
"writer_tolerance_mm": {
"exclusiveMinimum": 0,
"title": "Writer Tolerance Mm",
"type": "number"
},
"readback_metadata_normalized": {
"title": "Readback Metadata Normalized",
"type": "boolean"
},
"readback_original_undercoverage_occurrences": {
"minimum": 0,
"title": "Readback Original Undercoverage Occurrences",
"type": "integer"
},
"finite_feature_pairs": {
"minimum": 0,
"title": "Finite Feature Pairs",
"type": "integer"
},
"excluded_incident_feature_pairs": {
"minimum": 0,
"title": "Excluded Incident Feature Pairs",
"type": "integer"
},
"trimwire_checks": {
"minimum": 1,
"title": "Trimwire Checks",
"type": "integer"
},
"source_geometry_verified": {
"const": true,
"title": "Source Geometry Verified",
"type": "boolean"
},
"inherited_per_entity_caps_verified": {
"const": true,
"title": "Inherited Per Entity Caps Verified",
"type": "boolean"
},
"readback_tol_coverage_verified": {
"const": true,
"title": "Readback Tol Coverage Verified",
"type": "boolean"
},
"finite_features_verified": {
"const": true,
"title": "Finite Features Verified",
"type": "boolean"
},
"added_error_limit_mm": {
"const": 0.01,
"title": "Added Error Limit Mm",
"type": "number"
},
"samples_per_native_span": {
"const": 129,
"title": "Samples Per Native Span",
"type": "integer"
},
"source_original_precision": {
"const": false,
"title": "Source Original Precision",
"type": "boolean"
},
"source_scope": {
"const": "finite-source-primary-bindings/native65/129",
"title": "Source Scope",
"type": "string"
},
"inherited_consistency_scope": {
"const": "private-per-entity-caps-verified;global-maxima-are-summary-only",
"title": "Inherited Consistency Scope",
"type": "string"
},
"readback_source_events_renewed": {
"const": false,
"title": "Readback Source Events Renewed",
"type": "boolean"
},
"readback_source_identity_renewed": {
"const": false,
"title": "Readback Source Identity Renewed",
"type": "boolean"
},
"step_volume_error_limit": {
"const": 0.000001,
"title": "Step Volume Error Limit",
"type": "number"
},
"step_per_entity_tolerance_preserved": {
"const": false,
"title": "Step Per Entity Tolerance Preserved",
"type": "boolean"
},
"feature_scope": {
"const": "finite-nonincident-FF/EE/FE+trimwire;incident/self-fold-unverified",
"title": "Feature Scope",
"type": "string"
},
"global_error_or_clearance_certified": {
"const": false,
"title": "Global Error Or Clearance Certified",
"type": "boolean"
},
"reference_validation": {
"const": "not_measured_at_runtime",
"title": "Reference Validation",
"type": "string"
}
},
"required": [
"certificate_sha256",
"maximum_added_source_error_mm",
"inherited_consistency_max_mm",
"inherited_source_cap_max_mm",
"source_fin_occurrences",
"source_finite_occurrences",
"source_analytic_occurrences",
"source_schedule_required_samples",
"source_schedule_paid_samples",
"source_schedule_reused_samples",
"readback_actual_occurrences",
"readback_actual_samples",
"step_readback_relative_volume_error",
"writer_tolerance_mm",
"readback_metadata_normalized",
"readback_original_undercoverage_occurrences",
"finite_feature_pairs",
"excluded_incident_feature_pairs",
"trimwire_checks",
"source_geometry_verified",
"inherited_per_entity_caps_verified",
"readback_tol_coverage_verified",
"finite_features_verified",
"added_error_limit_mm",
"samples_per_native_span",
"source_original_precision",
"source_scope",
"inherited_consistency_scope",
"readback_source_events_renewed",
"readback_source_identity_renewed",
"step_volume_error_limit",
"step_per_entity_tolerance_preserved",
"feature_scope",
"global_error_or_clearance_certified",
"reference_validation"
],
"title": "SourceSPPrecisionSummary",
"type": "object"
}
},
"additionalProperties": false,
"oneOf": [
{
"required": [
"status",
"upload_url",
"upload_ticket",
"expires_at"
]
},
{
"required": [
"ref",
"status",
"filename",
"expires_at",
"measurement_accuracy",
"step_output",
"representation",
"failure",
"volume_mm3",
"area_mm2",
"incomplete",
"missing_components",
"part_count",
"warnings",
"format",
"units",
"bounding_box_mm"
]
}
]
}🟡convert_cad(ref, target, step_kind, wait_seconds)
Convert a file opened with inspect_cad to STEP, STL or GLB and return a download link that expires in 30 minutes. STEP is a solid B-Rep when the source was read exactly; otherwise it is a triangulated STEP that CAD software cannot edit as a solid. STL and GLB are always triangulated meshes.
Input Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"description": "The ref from an inspect_cad result. An upload_ticket is not a ref."
},
"target": {
"type": "string",
"enum": [
"step",
"stl",
"glb"
]
},
"step_kind": {
"type": "string",
"enum": [
"auto",
"solid",
"mesh"
],
"default": "auto"
},
"wait_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 20,
"default": 15
}
},
"required": [
"ref",
"target"
],
"additionalProperties": false
}⚪open_in_workspace(ref)
Return a one-time link (valid 15 minutes) that opens this file in the CADProps web workspace for measuring, sectioning and sharing. After it is opened, the chat preview and links for this file stop working.
Input Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"description": "The ref from an inspect_cad result. An upload_ticket is not a ref."
}
},
"required": [
"ref"
],
"additionalProperties": false
}🟢refresh_view_token(ref)
Used by the CADProps preview to renew its read-only token.
Input Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string"
}
},
"required": [
"ref"
],
"additionalProperties": false
}Community
Evidence