---
title: "Format Bridge — convert any asset to the format your tool needs"
tier: hero
format: 3d-asset
theme: interop pro-tool-spine convert mesh image cad format
persona: game artist, product designer, 3D generalist, anyone moving assets between tools
duration: "any hosted asset → the format your tool needs, in seconds"
budget_usd: "$0.01 per conversion (deterministic format-convert cap)"
caps: ["format-convert"]
verbs: ["convert"]
skills: ["pro-pipeline-3d", "cad-pipeline"]
showcases: ["/chapters/format-bridge-example.html"]
status: "live (2026-06-20) — format-convert cap on tool-staging-1; all three conversions below rendered E2E on production."
requires: "PRO_PIPELINE_ENABLED on the MCP server (the convert verb)."
reliability: 4.8 # deterministic cap (assimp/Pillow); −0.2 lossy-edge formats need the warning surfaced; +0.5 proven E2E (png/glb/stl)
---

# Format Bridge — convert anything (US-X1)

The connective tissue of the pro-tool spine: take **any hosted asset** and get
it in the format the next tool needs — mesh, image, or CAD — with an honest
warning on any lossy step. One verb, deterministic, ~$0.01.

## What you'll get

> **A converted asset URL in seconds**, plus a clear note if anything was lost
> in translation (e.g. "FBX lost glTF PBR material extensions"). Use it to feed
> an engine, a slicer, a DCC, or the web.

## The verb (two modes)

```
# Mode 1 — a raw hosted URL (one-shot, no project needed):
convert  source_url=<url>  to=<format>  [from=<ext if ambiguous>]

# Mode 2 — a project scene (appends a lineage-linked scene; original stays):
convert  project_id=<proj>  scene_index=<i>  to=<format>
```

CLI: `livepeer convert --source-url <url> --to fbx`  ·  `livepeer convert <proj> <i> --to glb`

## The format matrix

| Family | Conversions | Lossy note |
|---|---|---|
| mesh | glb ↔ fbx ↔ obj ↔ usdz | FBX/OBJ may drop glTF PBR extensions |
| image | png ↔ exr ↔ jpg ↔ webp ↔ tiff | jpg/webp = lossy codec; EXR→PNG clips HDR |
| cad | stl ↔ glb ↔ 3mf | STEP (parametric) is the FreeCAD fast-follow |

## How the agent should run this (interaction contract)

1. **CONFIRM target (≤1 line):** "convert <asset> → <format>?" Pick the format the
   *destination tool* wants (engine → GLB; slicer → STL; older pipeline → FBX).
2. **RUN:** call `convert`; it routes to the deterministic format-convert cap.
3. **SURFACE the lossy warning** if present — never let a lossy conversion pass
   silently. Offer to keep the lossless master.

## Proven conversions (rendered live, see the example)

- **image** `sample.png` → `sample.jpg` (lossy-codec warning)
- **mesh** `chest-gameready.glb` → `chest-gameready.fbx` (PBR-extension warning)
- **cad** `bracket.stl` → `bracket.glb` (web/AR preview of a printable part)

## Notes / honesty

- The cap is a pure transcoder (assimp for mesh, Pillow for image). Deterministic
  + cacheable + cheap.
- Parametric STEP needs a BREP kernel (FreeCAD/OCC fast-follow); today CAD→STEP
  is a tessellated shell, flagged as such.
- This is the **US-X1** ("convert anything") capability of the pro-tool spine —
  the same `convert` step the game (`concept-to-game-asset`) and CAD
  (`idea-to-printable-part`) loops use.
