Skip to content
MCPBytes

One model in.Every part, separated.

Break a 3D model into its parts, each saved as its own file and ready for games, animation and simulation.

From 20 credits300 free credits to start

Available
  • API
  • MCP
MCP tool: split_3d_model

Before

airplane.glb1 mesh

After

7 parts
  • meshes/part_000.glb
  • meshes/part_001.glb
  • meshes/part_002.glb
  • meshes/part_003.glb
  • meshes/part_004.glb
  • meshes/part_005.glb
  • meshes/part_006.glb
A8Split a 3D model into partsExample output. Parts are numbered by size; the parts returned depend on the model.

Finds the parts. Hands them back.

Many 3D models arrive as a single piece. Send one and get each part back as its own file (the wings, the wheels, the lid), ready to move, swap or animate. Every part also gets a simple collision shape for physics, and a report describes how the parts fit together: their size, what touches what, which parts mirror each other and an estimate of their mass. The parts found depend on the model.

Drag the slider to split the example model. Hover or select a part to isolate it.

airplane.glb1 mesh · 480 faces
Drag to rotate
After
Input formats
.glb .gltf .obj .ply .stl .off .blend
Part formats
GLB (default), OBJ or PLY
Detail
low, medium (default) or high
Outputs
Part meshes, convex colliders, segmented.glb, manifest.json, face_to_part.bin, and all of them as one .zip
Metadata
Bounds, contacts, symmetry, mass and inertia estimates

Every part, its own file.

Wings, wheels, handles: each part comes back separately, in the format you choose.

Ready for physics.

Each part gets its own collision shape and estimated mass, so it can fall, stack and collide in a game or simulation.

Knows how it fits.

A report maps what touches what and which parts mirror each other, so your code knows the model's layout.

Pay by the job.

Costs 20 credits up to 50,000 faces, 50 credits up to 200,000 faces. A job that fails costs nothing.

Pricing details

Start free

Available now

300free credits when you sign up

  • Every MCPBytes tool, one credit balance
  • Sign in with GitHub or email, no card required
  • Each tool states its price before you run it
  • Failed API jobs cost nothing

Price per job

Split a 3D model into parts

Up to 50,000 faces
20 credits
Up to 200,000 faces
50 credits

Limits

Largest model
200,000 faces

Limits by account

Most parts
Free32
Pay as you go64
Monthly bundle64
Jobs at once
Free3 jobs
Pay as you go5 jobs
Monthly bundle8 jobs
Results kept
Free1 day
Pay as you go7 days
Monthly bundle30 days
Largest upload
Free50 MB
Pay as you go100 MB
Monthly bundle100 MB
Longest run
Free10 min
Pay as you go14 min 30 s
Monthly bundle14 min 30 s

Free until your first purchase; any credit pack moves you to Pay as you go; a monthly bundle while it lasts. Compare accounts

Your agent or your code.

Connect your agent and it can use this tool right away, or call it from your own code. One key works for both.

Start a job

Send a file body, or JSON containing an upload ID or public URL. Options such as detail go in the JSON options object, or the query string for a file body.

# The model file is the request body
curl "https://api.mcpbytes.com/v1/tools/split_3d_model/jobs?filename=airplane.glb" \
  -H "Authorization: Bearer $MCPBYTES_API_KEY" \
  --data-binary @airplane.glb
Response202 Accepted
{
  "id": "j_4f7k2m9x1q8w3e6r5t0y2u7i9o",
  "tool": "split_3d_model",
  "status": "queued",
  "input": {
    "name": "airplane.glb",
    "bytes": 2481152,
    "source": "body"
  },
  "options": {
    "detail": "medium",
    "min_part_faces": 0,
    "min_part_area": null,
    "format": "glb",
    "preprocess": "auto",
    "segmented": true,
    "density": null,
    "max_parts": 32
  },
  "error": null,
  "result": null,
  "compute_ms": null,
  "credits_charged": null,
  "created_at": "2026-09-19T12:00:00.000Z",
  "started_at": null,
  "finished_at": null,
  "outputs_expire_at": "2026-09-20T12:00:00.000Z"
}

Get the result

Poll until the status is final. Download files only after success.

Requestjob.sh
# JOB_ID is the id from the create response
curl https://api.mcpbytes.com/v1/jobs/$JOB_ID \
  -H "Authorization: Bearer $MCPBYTES_API_KEY"
Response200 OK · trimmed
{
  "id": "j_4f7k2m9x1q8w3e6r5t0y2u7i9o",
  "tool": "split_3d_model",
  "status": "succeeded",
  "result": {
    "files": [
      {
        "name": "airplane_parts.zip",
        "bytes": 1873410,
        "sha256": "…",
        "url": "https://api.mcpbytes.com/blob/dl/j_4f7k2m9x1q8w3e6r5t0y2u7i9o/airplane_parts.zip?t=…"
      },
      {
        "name": "collision/part_000.glb",
        "bytes": 4212,
        "sha256": "…",
        "url": "https://api.mcpbytes.com/blob/dl/j_4f7k2m9x1q8w3e6r5t0y2u7i9o/collision/part_000.glb?t=…"
      },
      {
        "name": "manifest.json",
        "bytes": 20931,
        "sha256": "…",
        "url": "https://api.mcpbytes.com/blob/dl/j_4f7k2m9x1q8w3e6r5t0y2u7i9o/manifest.json?t=…"
      },
      {
        "name": "meshes/part_000.glb",
        "bytes": 512604,
        "sha256": "…",
        "url": "https://api.mcpbytes.com/blob/dl/j_4f7k2m9x1q8w3e6r5t0y2u7i9o/meshes/part_000.glb?t=…"
      }
    ],
    "schema_version": 2,
    "part_count": 7,
    "input_faces": 48210,
    "exported_faces": 48210,
    "notes": [],
    "timings_s": {
      "total": 12.4
    }
  },
  "compute_ms": 14210,
  "credits_charged": 20,
  "finished_at": "2026-09-19T12:00:16.000Z",
  "outputs_expire_at": "2026-09-20T12:00:00.000Z"
}

MCP

Connect once. Your agent calls split_3d_model and gets the download URLs back. This endpoint has only this tool's family, which keeps your agent's tool list short; one endpoint has every tool.

Claude Code

The first form signs in through the browser when you run /mcp. In .mcp.json (project root), ${MCPBYTES_API_KEY} is read from the environment when Claude Code connects. Claude Code docs

claude mcp add --transport http mcpbytes \
  https://api.mcpbytes.com/mcp/3d
Codex (CLI, IDE extension, ChatGPT desktop)

Codex reads the key from the environment variable each time it connects. The same table can go in ~/.codex/config.toml by hand; codex mcp add has no --header flag. Codex docs

codex mcp add mcpbytes --url https://api.mcpbytes.com/mcp/3d \
  --bearer-token-env-var MCPBYTES_API_KEY
Cursor

~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). Remote servers take no "type". Without the header, the client signs you in with GitHub or an email link (OAuth). Cursor docs

~/.cursor/mcp.json
{
  "mcpServers": {
    "mcpbytes": {
      "url": "https://api.mcpbytes.com/mcp/3d",
      "headers": {
        "Authorization": "Bearer ${env:MCPBYTES_API_KEY}"
      }
    }
  }
}
11 more clients in the docs →
MCP tools
split_3d_model
Starts a job that splits a 3D model into separate part meshes, each with a convex collider, plus manifest.json (bounds, contacts, symmetry, mass estimates). Give upload_id (from create_upload) or a public https url. Waits up to wait_seconds for the result. Costs 20 credits up to 50,000 faces, 50 credits up to 200,000 faces.
create_upload
Returns a one-hour URL to PUT a local file to; then call the tool with the upload_id.
get_job
Status and results of a job; waits up to wait_seconds for it to finish.
cancel_job
Cancel a queued job or a workflow whose can_cancel is true; repeated calls never delete results.
list_jobs
Your most recent jobs, newest first.
read_job_file
Reads a text output (.txt .json .md .csv) of a succeeded job in chunks.
Full reference: inputs, options, outputs, limits and errors

Your first jobs are on us.

Start with 300 free credits. Sign in with GitHub or email and try a tool in your browser. No card required.