Skip to content
MCPBytes

3D Models

Describe it.Hold it.

Turn a sentence into a textured 3D model you can drop into a viewer, a scene or a game engine.

From 50 credits · 100 free credits to start

Interactive 3D model of a wooden rocking horse with a red saddle
“a wooden rocking horse with a red saddle”economy

One sentence.

No reference photos, no modelling, no cleanup. Describe the object and its materials; the model arrives as a file.

Standard glTF.

A single .glb with PBR textures that opens in any viewer, Blender, Unity, Unreal or the browser.

Two levels of detail.

Economy gives you a compact model in minutes. High spends longer for around a million faces and 2K textures.

Pricing

Pay per job, in credits.

From 50 credits. 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

Text to 3D

Economy · 1024 px textures
50 credits
High · 2048 px textures
120 credits

Limits

Jobs
20 per rolling 24 hours
Description
Up to 4,000 characters
At a time
1 job
Uploads
Up to 50 MB
Results
Kept for 24 hours

Economy profile: Powered by Stability AI.

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 required parameters as JSON. Options such as description go in the options object.

Requestcreate.sh
# idempotency_key is required: repeating the same request returns the same job
curl https://api.mcpbytes.com/v1/tools/create_3d_model/jobs \
  -H "Authorization: Bearer $MCPBYTES_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "options": {
      "description": "a wooden rocking horse with a red saddle",
      "quality": "economy",
      "seed": 42
    },
    "idempotency_key": "model-example-001"
  }'
Response202 Accepted · trimmed
{
  "tool": "create_3d_model",
  "status": "queued",
  "input_kind": "parameters",
  "options": {
    "description": "a wooden rocking horse with a red saddle",
    "quality": "economy",
    "texture_resolution": 1024,
    "seed": 42
  },
  "workflow": {
    "deadline": "2026-09-22T06:11:39.211Z",
    "cancel_pending": false,
    "refund_pending": false
  },
  "capabilities": {
    "can_cancel": 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": "create_3d_model",
  "status": "succeeded",
  "credits_charged": 50,
  "compute_ms": 51940,
  "result": {
    "files": [
      {
        "name": "reference.png",
        "bytes": 664181,
        "content_type": "image/png",
        "url": "https://api.mcpbytes.com/blob/dl/…"
      },
      {
        "name": "model.glb",
        "bytes": 945388,
        "content_type": "model/gltf-binary",
        "url": "https://api.mcpbytes.com/blob/dl/…"
      },
      {
        "name": "generation.json",
        "bytes": 2831,
        "content_type": "application/json",
        "url": "https://api.mcpbytes.com/blob/dl/…"
      }
    ]
  }
}

MCP

Connect once. Your agent calls create_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
create_3d_model
Create a textured 3D model from a description. Returns model.glb, reference.png and generation.json. This is an asynchronous job; use get_job to follow progress. A failed job is refunded. quality: economy, texture_resolution: 1024: 50 credits. quality: high, texture_resolution: 2048: 120 credits.
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"