> For the complete documentation index, see [llms.txt](https://agpt.co/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://agpt.co/docs/integrations/block-integrations/dfm.md).

# Rmfg Dfm

Blocks that check manufacturability (design for manufacturing) of a configured design. A DFM report says whether the configuration is ready, needs input or is blocked, and reports what each part and hole can take.

## RMFG Create DFM Report

### What it is

Runs an RMFG manufacturability (DFM) check on a configured design. A blocked finding such as a hole close to a bend can be accepted with accepted\_risks once the customer agrees; requires\_input means a material or profile is still missing

### How it works

Posts the design ID and a manufacturing configuration to `/v1/dfm` with an `Idempotency-Key`. Precedence is per-part override, then `defaults`; the `material_id` input is a shortcut that sets `defaults.material_id`. RMFG answers with a status per part and overall: `ready`, `requires_input` (a selection is missing, listed in `requirements`) or `blocked` (the geometry or configuration cannot be made). Neither of the latter is an error; they are results for the graph to act on. Findings carry a severity, and warning-level ones such as a hole near a bend can be accepted by listing their code in `accepted_risks`. Each part's `capabilities` list which finishes, colors and hardware fit that part and each of its holes.

Unknown design, material or hardware IDs are rejected by RMFG and surfaced as `RMFG <code>: <message> (field: <path>)`. By default production files (laser DXF, corrected STEP) are also prepared; their status arrives on the report and can be re-read with Get DFM Report. Reports are immutable, so a changed configuration means a new report. `review_url` is emitted only when RMFG provides one.

### Inputs

| Input                       | Description                                                                                                                                                      | Type                       | Required |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | -------- |
| design\_id                  | Design ID from Analyze Design                                                                                                                                    | str                        | Yes      |
| material\_id                | Sheet-metal stock for every sheet part, from List Materials. Leave empty for tube-only designs or when configuration sets it.                                    | str                        | No       |
| configuration               | Per-part material, tube profile, finish, powder coat, hole operations, welds and accepted risks. A non-empty material\_id above overrides defaults.material\_id. | ManufacturingConfiguration | No       |
| generate\_production\_files | Also prepare laser DXF and corrected STEP files.                                                                                                                 | bool                       | No       |
| idempotency\_key            | Stable key for identical retries; defaults to the node execution ID.                                                                                             | str                        | No       |

### Outputs

| Output        | Description                                                                                          | Type                                      |
| ------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| error         | Error message if the request failed                                                                  | str                                       |
| report        | The full DFM report                                                                                  | DFMReport                                 |
| dfm\_id       | Report ID, for review links and re-reads                                                             | str                                       |
| status        | ready, requires\_input (a selection is missing) or blocked                                           | "requires\_input" \| "ready" \| "blocked" |
| is\_ready     | True when nothing prevents ordering                                                                  | bool                                      |
| configuration | The configuration that was evaluated; feed it to a quote                                             | ManufacturingConfiguration                |
| issues        | Every finding across all parts and the assembly                                                      | List\[DFMIssue]                           |
| issue         | One finding at a time                                                                                | DFMIssue                                  |
| requirements  | Selections still needed before the design can be quoted                                              | List\[Requirement]                        |
| parts         | Per-part status, findings, capabilities and images                                                   | List\[PartDFM]                            |
| review\_url   | Website page showing this exact configuration for a person to adjust; emitted when RMFG provides one | str                                       |

### Possible use case

**Resolving requires\_input**: Read the `material_required` requirement and each part's capabilities, pick a compatible material, and re-run.

**Accepting a Known Risk**: After the customer approves a hole-near-bend warning, re-run with its code in `accepted_risks`.

**Production File Prep**: Generate laser DXF and corrected STEP files for a configuration that is already priced.

***

## RMFG Get DFM Report

### What it is

Fetches an RMFG DFM report by ID

### How it works

Fetches `/v1/dfm/{id}` and emits the same outputs as Create DFM Report. Findings never change, but the `production_files` status does, so re-reading tells you when DXF and STEP files are ready or whether preparation failed with a manual-review warning.

An unknown or foreign report ID is reported as `RMFG not_found_error: <message>`. `issue` is emitted once per finding, so a clean report yields none, and `review_url` only when present.

### Inputs

| Input   | Description                      | Type | Required |
| ------- | -------------------------------- | ---- | -------- |
| dfm\_id | Report ID from Create DFM Report | str  | Yes      |

### Outputs

| Output        | Description                                                                                          | Type                                      |
| ------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| error         | Error message if the request failed                                                                  | str                                       |
| report        | The full DFM report                                                                                  | DFMReport                                 |
| dfm\_id       | Report ID, for review links and re-reads                                                             | str                                       |
| status        | ready, requires\_input (a selection is missing) or blocked                                           | "requires\_input" \| "ready" \| "blocked" |
| is\_ready     | True when nothing prevents ordering                                                                  | bool                                      |
| configuration | The configuration that was evaluated; feed it to a quote                                             | ManufacturingConfiguration                |
| issues        | Every finding across all parts and the assembly                                                      | List\[DFMIssue]                           |
| issue         | One finding at a time                                                                                | DFMIssue                                  |
| requirements  | Selections still needed before the design can be quoted                                              | List\[Requirement]                        |
| parts         | Per-part status, findings, capabilities and images                                                   | List\[PartDFM]                            |
| review\_url   | Website page showing this exact configuration for a person to adjust; emitted when RMFG provides one | str                                       |

### Possible use case

**Production Files Ready**: After a `dfm_report.production_files.ready` event, read the report and forward the file links to the shop floor.

**Audit Trail**: Re-read the report a quote was based on to show the customer exactly what was checked.

**Failed Preparation**: Detect a `production_files` failure and route the design to a person for review.

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://agpt.co/docs/integrations/block-integrations/dfm.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
