Skip to content

Expose an evidence-first Draftwright MCP surface for agent review and manufacturing readiness #1256

Description

@pzfreo

Goal

Provide a supported MCP boundary for an agent to inspect a STEP file, generate/edit a Sheet, render it, compare the drawing back to the source, and prepare a controlled shop package.

This is not a request for one opaque generate_drawing tool. The GRM-03 evaluation showed that useful agent work happens between deterministic stages: inspect evidence, review declarations, render candidates, reconcile coverage, ask for missing manufacturing intent, then release.

Why

Without a Draftwright tool boundary, the GRM-03 loop required:

  • shelling into Draftwright's private Python environment;
  • ad hoc build123d/OpenCascade face and edge probing;
  • parsing CLI stdout and Python object reprs;
  • arbitrary script rewrites;
  • manual PNG/PDF comparison;
  • a separate volume reconstruction to compare declarations with the STEP;
  • manually distinguishing geometry facts from material/thread/tolerance assumptions.

Draftwright already owns most of the underlying concepts. MCP would expose them as structured evidence rather than requiring consumers to reverse-engineer the process.

Proposed tool groups

Inspect

  • dw.inspect_step: hashes, units, product metadata, bbox/volume, PMI, recognized families, stable face/edge evidence, and unclassified defining geometry.
  • dw.explain_feature: source faces, measurements, adjacency, classification rationale, alternatives, and a highlighted preview.

Author and validate

  • dw.generate_script: Sheet script plus a machine-readable declaration/evidence manifest.
  • dw.validate_script: syntax/API, source hash, declaration-vs-STEP reconciliation, unsupported render intents, and unproven manufacturing claims.
  • dw.apply_declaration_patch: bounded operations such as reclassify step -> boss, add chamfer from face evidence, consolidate repeated callouts, or set strict scale.

Render and critique

  • dw.render: deterministic artifacts, actual page/scale, view and annotation bounds, and per-requirement outcomes.
  • dw.lint: structured issue IDs with affected SVG/raster crop bounds.
  • dw.try_layouts: candidate thumbnails and comparable drops/overlaps/print-size evidence.

Reconcile and release

  • dw.compare_step_to_drawing: map STEP feature/face -> declaration -> approved measurement -> rendered annotation, with covered/consolidated/omitted/dropped/contradicted/unverifiable outcomes.
  • dw.manufacturing_readiness: separate geometry coverage from missing material, thread, fit, tolerance, finish, and process intent.
  • dw.diff_revision: geometry, requirement, and representation changes.
  • dw.export_shop_package: STEP + released PDF + optional DXF/SVG + manifest and hashes; fail closed on preliminary status or unresolved blockers.

Non-negotiable contracts

Every response should include:

  • stable artifact ID and source hash;
  • units and Draftwright/version identity;
  • provenance per fact: STEP geometry, source PMI, user declaration, or unapproved inference;
  • one explicit outcome for every authored requirement;
  • no invented material/thread/tolerance/finish merely to obtain a passing result.

Writes and release should remain separate. export_shop_package should require explicit authorization after manufacturing_readiness is clear.

Suggested first vertical slice

A useful MVP is five tools:

  1. inspect_step
  2. generate_script
  3. render
  4. compare_step_to_drawing
  5. manufacturing_readiness

Acceptance for the GRM-03 fixture:

  • inspection exposes the three conical faces and the diameter 6 x 0.5 boss evidence;
  • generation records unsupported/unrepresented geometry rather than silently losing it;
  • render returns view/annotation bounds and a complete outcome ledger;
  • comparison identifies any source-profile transition absent from the drawing;
  • readiness blocks manufacture on missing material/thread/tolerance/finish intent without guessing values.

Related architecture: #1202, #1217, #1130, #1002.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions