Skip to content
MCPBytes
Available3D Models

3D Model Simplification

Fewer triangles. Same look.

  • API
  • MCP
From 10 creditsMCP tool: simplify_3d_model
Examplesimplify_3d_model

Before

model.glb998,190 triangles, one textured mesh

After

249,985 triangles · textures unchanged
  • model.glb
  • model.web.glb
  • simplify.json
A create_3d_model output at target_faces 250000 with web_copy. 29 s including the runner's cold start; the reported error is 0.004 of the model's extent.

What it does

Lighter models that still look like the original.

Simplification collapses edges while weighing normals, texture coordinates and vertex colours, so materials and textures pass through untouched and stay aligned. Ask for a triangle count or a ratio, optionally cap the deviation, and read the achieved count and error in simplify.json. A million-triangle generated model becomes a quarter of its size in seconds, ready for web viewers, engines and AR.

Formats
.glb .gltf .obj .ply .stl .off
Outputs
model.glb, simplify.json and, on request, model.web.glb (Draco + WebP)
Textures
Materials and images unchanged; UVs, normals and vertex colours carried through
Targets
target_faces or ratio; optional max_error as a fraction of the model's extent
Aggressive mode
Continues across texture seams and topology when the target matters more than fidelity

Textures stay put

The collapse cost includes texture coordinates, so seams and texel alignment survive and the original images are reused as they are.

You see the error

simplify.json reports the achieved count and meshoptimizer's combined error per mesh, relative to the extent and in model units.

Honest about the floor

The collapse respects texture seams, which on atlas-textured generated models stops around 15 to 25 % of the triangles with the look intact. aggressive=true forces lower counts, at the cost of visible texture damage.

Pricing

Pay per job, in credits.

Costs 10 credits up to 200,000 faces, 20 credits up to 1,000,000 faces, 40 credits up to 2,000,000 faces. A job that fails costs nothing.

Pricing details

Start free

Available now

100free 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
  • A job that fails costs nothing

Price per job

Simplification

Up to 200,000 faces
10 credits
Up to 1,000,000 faces
20 credits
Up to 2,000,000 faces
40 credits

Limits

Geometry
Up to 1,000,000 faces per model
At a time
1 job
Uploads
Up to 50 MB
Results
Kept for 24 hours

API

Call it from code or from an agent.

The same tool runs over the REST API and as MCP tools. One API key works for both.

Start a job

Send the file as the request body. Options such as target_faces go in the query string.

Requestsimplify.sh
curl "https://api.mcpbytes.com/v1/tools/simplify_3d_model/jobs?filename=model.glb&target_faces=250000&web_copy=true" \
  -H "Authorization: Bearer $MCPBYTES_API_KEY" \
  --data-binary @model.glb
Response202 Accepted · trimmed
{
  "tool": "simplify_3d_model",
  "status": "queued",
  "options": {
    "target_faces": 250000,
    "aggressive": false,
    "lock_borders": true,
    "remove_debris": false,
    "web_copy": true
  },
  "result": null
}

Get the result

Poll the job until it succeeds or fails, then download the files.

Requestread.sh
# JOB_ID is the id from the create response; poll until status is final
curl "https://api.mcpbytes.com/v1/jobs/$JOB_ID" \
  -H "Authorization: Bearer $MCPBYTES_API_KEY"

# Once status is succeeded, download the model from result.files[].url
curl -fsSLo model.glb "$MODEL_URL"
Response200 OK · trimmed
{
  "tool": "simplify_3d_model",
  "status": "succeeded",
  "credits_charged": 20,
  "compute_ms": 29433,
  "result": {
    "schema_version": 1,
    "input_faces": 998190,
    "output_faces": 249985,
    "ratio": 0.2504,
    "max_error_units": 0.004151,
    "mesh_count": 1,
    "notes": [],
    "files": [
      {
        "name": "model.glb",
        "bytes": 21496536,
        "content_type": "model/gltf-binary",
        "url": "https://api.mcpbytes.com/blob/dl/…"
      },
      {
        "name": "model.web.glb",
        "bytes": 9527664,
        "content_type": "model/gltf-binary",
        "url": "https://api.mcpbytes.com/blob/dl/…"
      },
      {
        "name": "simplify.json",
        "bytes": 831,
        "content_type": "application/json",
        "url": "https://api.mcpbytes.com/blob/dl/…"
      }
    ]
  }
}

MCP

Connect once. Your agent calls simplify_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
simplify_3d_model
Reduces the triangle count of a 3D model by attribute-aware edge collapse: materials and textures pass through unchanged, and UVs, normals and vertex colours are carried along so the original textures stay aligned. Choose target_faces or ratio; an optional max_error caps the deviation as a fraction of the model's extent. Returns model.glb, simplify.json (per-mesh counts and the achieved error) and, with web_copy, model.web.glb (Draco geometry, WebP textures). Geometry is never smoothed or re-textured. Costs 10 credits up to 200,000 faces, 20 credits up to 1,000,000 faces, 40 credits up to 2,000,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
Request cancellation when the job advertises can_cancel; 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.

From API key to first call in minutes.

Sign in with GitHub, create a key, and point your agent or code at MCPBytes. Your first 100 credits are free.

# Sign in with GitHub when prompted
claude mcp add --transport http mcpbytes \
  https://api.mcpbytes.com/mcp

# Or use an API key
claude mcp add --transport http mcpbytes \
  https://api.mcpbytes.com/mcp \
  --header "Authorization: Bearer $MCPBYTES_API_KEY"