> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bedrock.cv/llms.txt
> Use this file to discover all available pages before exploring further.

# Parse

> Trigger feature extraction on a sheet, block, drawing, or file.

Trigger asynchronous feature extraction on a target (sheet, block, drawing, or file). Specify which features to extract and optional configuration. Returns a `job_id` for polling.

## When to Use

* Extract specific features from drawings (rooms, walls, symbols, dimensions, etc.)
* Process a newly uploaded file into the Drawing Index
* Re-extract features with different options (e.g., specific symbol exemplars)
* The user asks to "parse", "extract", or "detect" features

<Warning>
  Parse is an async operation that consumes credits. It may take seconds to minutes depending on scope. Use [`PollJob`](/mcp/tools/get-job) to poll for completion.
</Warning>

## Parameters

| Parameter    | Type      | Required    | Description                                    |
| ------------ | --------- | ----------- | ---------------------------------------------- |
| `project_id` | string    | yes         | Project ID                                     |
| `sheet_id`   | string    | conditional | Parse a specific sheet                         |
| `block_id`   | string    | conditional | Parse a specific block                         |
| `drawing_id` | string    | conditional | Parse an entire drawing                        |
| `file_id`    | string    | conditional | Parse an uploaded file (creates a new Drawing) |
| `features`   | string\[] | yes         | Features to extract (see below)                |
| `options`    | object    | no          | Feature-specific configuration (see below)     |

<Info>
  Exactly one of `sheet_id`, `block_id`, `drawing_id`, or `file_id` is required.
</Info>

### Available Features

| Feature            | Description                                                      |
| ------------------ | ---------------------------------------------------------------- |
| `symbols`          | Detect and classify symbols (doors, windows, fixtures, etc.)     |
| `rooms`            | Detect room boundaries and labels                                |
| `walls`            | Detect wall segments and types                                   |
| `scale`            | Extract drawing scale                                            |
| `title_block`      | Extract title block information                                  |
| `dimensions`       | Extract dimension chains and values                              |
| `mep`              | Detect MEP systems (HVAC, plumbing, electrical, fire protection) |
| `text`             | Extract text regions (notes, schedules, specifications)          |
| `annotations`      | Detect annotations (clouds, callouts, redlines, keynotes)        |
| `legend`           | Extract legend entries                                           |
| `schedule`         | Extract schedule tables                                          |
| `notes`            | Extract general/key/sheet notes                                  |
| `grid`             | Detect grid system lines and labels                              |
| `cross_references` | Detect cross-reference callouts between views                    |

### Options

```json theme={null}
{
  "symbols": {
    "exemplars": [{ "label": "Fire Extinguisher", "description": "Wall-mounted FE symbol" }],
    "count": true,
    "legend": [{ "label": "Smoke Detector", "description": "Ceiling-mounted SD" }],
    "legend_block_id": "blk_legend_01"
  },
  "mep": {
    "systems": ["hvac_duct", "plumbing"],
    "measure": true
  },
  "dimensions": {
    "units": "imperial"
  },
  "annotations": {
    "types": ["cloud", "callout"]
  },
  "text": {
    "regions": ["notes", "schedules"]
  }
}
```

<Info>
  When using `block_id` with the `symbols` feature, `options.symbols.legend_block_id` is required to provide symbol definitions.
</Info>

## Response

```json theme={null}
{
  "job_id": "job_parse_01",
  "type": "parse",
  "status": "queued"
}
```

| Field    | Type   | Description                                             |
| -------- | ------ | ------------------------------------------------------- |
| `job_id` | string | Use with [`PollJob`](/mcp/tools/get-job) to poll status |
| `type`   | string | Always `"parse"`                                        |
| `status` | string | Initial status, always `"queued"`                       |

## Workflow

<Steps>
  <Step title="Trigger parsing">
    Call `Parse` with the target and features to extract. Note the returned `job_id`.
  </Step>

  <Step title="Poll for completion">
    Call [`PollJob`](/mcp/tools/get-job) with the `job_id`. The job progresses through `queued` > `started` > `completed`.
  </Step>

  <Step title="Explore results">
    Use [`Query`](/mcp/tools/query) with `entity: "feature"` to browse extracted features. Use `entity: "block"` or `entity: "sheet"` to see the updated structure.
  </Step>
</Steps>

## Examples

### Extract rooms and walls from a sheet

```json theme={null}
{
  "project_id": "prj_abc",
  "sheet_id": "sht_a101",
  "features": ["rooms", "walls"]
}
```

### Detect symbols with exemplars

```json theme={null}
{
  "project_id": "prj_abc",
  "sheet_id": "sht_e201",
  "features": ["symbols"],
  "options": {
    "symbols": {
      "exemplars": [
        { "label": "Duplex Receptacle", "description": "Standard wall outlet" },
        { "label": "GFCI Receptacle", "description": "Ground fault outlet with T-shape" }
      ],
      "count": true
    }
  }
}
```

### Parse a newly uploaded file

```json theme={null}
{
  "project_id": "prj_abc",
  "file_id": "projects/abc/files/arch-set-rev-c.pdf",
  "features": ["rooms", "walls", "symbols", "dimensions", "grid", "title_block"]
}
```

## Related Tools

* [`PollJob`](/mcp/tools/get-job) - Poll the parse job for status and results
* [`Query`](/mcp/tools/query) - Browse extracted features, blocks, and sheets after parsing
* [`ViewImage`](/mcp/tools/get-image) - View images of extracted features
