MCP server reference
C3D-DOCS-02 · REV AThe Creations3D MCP server is a remote server at https://creations3d.com/mcp. It speaks MCP over Streamable HTTP, signs people in with OAuth (or takes an API key), and has six tools: create_model, get_model, wait_for_models, list_models, export_model and account. Nothing is installed locally. For setup in a specific assistant, see Connect your assistant; for a first run, see the quickstart.
Endpoint and transport
- URL:
https://creations3d.com/mcp - Transport: Streamable HTTP, stateless. The endpoint answers GET, POST and DELETE, and allows cross-origin requests.
- Server name: creations3d (title Creations3D). Requests can be up to 16 MB, which matters for photos sent as data URLs.
Sign-in
There are two ways to authenticate. Both act as the same Creations3D account, with its library and credits.
- OAuth (browser sign-in). Add the URL to your client with no key. The first call returns
401with aWWW-Authenticateheader that points tohttps://creations3d.com/.well-known/oauth-protected-resource/mcp. That document names the authorization server and the scopes (openid, profile, email, offline_access). The client opens a browser, the person signs in with their Creations3D email, and the client sends the access token asAuthorization: Bearer ...on every call. - API key. For clients without browser sign-in, scripts or CI: the account owner creates a key on the website in Account, API keys, and the client sends
Authorization: Bearer c3d_sk_.... Keys are made and revoked only on the website, never through MCP.
Browser cookies are never accepted at the MCP endpoint, so every request needs one of these two tokens.
Tools
create_model
Creates one model, or a batch of up to 20, and charges credits when it is accepted. It returns straight away with the model queued, unless you pass wait_seconds. A model usually takes about 1.5 minutes once it starts. A description goes straight to a 3D model: there is no preview picture step over MCP.
| Field | Type | Notes |
|---|---|---|
prompt | string | What to build, up to 1,000 characters. Give a prompt, an image_url, or both. |
image_url | string | A public HTTPS image URL, or a data URL (PNG, JPEG or WebP, under 10 MB). Builds the model from the photo. |
use_for | web | game | print | render | What the model is for. Default web. Sets the default triangle budget and texture size (below). |
style | string | Optional style, up to 200 characters. |
target_size | number | Size of the largest side, in units. Positive, at most 1,000,000. |
units | mm | cm | m | Units for target_size. Default m. |
max_triangles | integer | Triangle budget, 1,000 to 500,000. |
texture_size | 512 | 1024 | 2048 | Texture size in pixels. |
quad | boolean | Ask for a quad mesh. Default false. It takes effect for a prompt with no image_url (any use_for) and for use_for game; a photo with use_for web, print or render ignores it. Check sourceUrl on the ready model: only then can the original quad FBX be exported. |
batch | array of 1 to 20 | Each item takes the fields above. When batch is given, it is used instead of the top-level fields. |
wait_seconds | integer | 0 to 50, default 0. Waits for a single model to finish before returning. |
Default triangle budget and texture size by use_for:
| use_for | Triangles | Texture | Credits |
|---|---|---|---|
| web | 50,000 | 1024 | 8 |
| game | 5,000 | 1024 | 4 |
| 200,000 | 1024 | 8 | |
| render | 500,000 | 2048 | 8 |
A model from a photo costs 6 credits whatever use_for is. A single model returns the model object (below). A batch returns { models: [...] }, where an item that could not be accepted is { error, retryable } and the others still go ahead.
Example call:
{
"name": "create_model",
"arguments": {
"prompt": "chibi dragon figurine",
"use_for": "print",
"target_size": 50,
"units": "mm",
"wait_seconds": 50
}
}get_model
Reads one model: status, preview and signed download links. Fields: id (required) and wait_seconds (0 to 50, default 0) to wait while it is queued or being built. Calling it again refreshes expired links. Returns the model object.
wait_for_models
Waits for a batch. Fields: ids (1 to 20 model ids) and timeout (0 to 50 seconds, default 0). It returns { models: [...] } as soon as any model that was pending when the call began finishes, or when the timeout runs out. Call it again for the rest.
list_models
Lists your models, newest first. Fields: limit (1 to 100, default 20) and cursor (a model id from the previous page). Returns { models: [...], nextCursor }; nextCursor is null on the last page.
export_model
Makes a file from a ready model. Exports are free and are made once, then reused.
| Field | Type | Notes |
|---|---|---|
id | string | A model with status ready. |
format | glb | stl | 3mf | obj | fbx | Default glb. OBJ is geometry only. FBX is the original quad mesh and exists only when the model has a sourceUrl (see quad); otherwise it returns an error. usdz is accepted by the schema but returns an error: USDZ is not available. |
max_triangles | integer | GLB only, 1,000 to 500,000: an optimised lighter copy. |
flat_base | boolean | STL and 3MF. Default true: cuts and caps a shallow 0.2% bottom slice so the model sits flat, keeping the largest size. |
Returns id, format, url (signed, expires in 900 seconds), expiresInSeconds, resourceUri, triangles, fileSizeBytes, dimensions, previewUrl and printReport. STL and 3MF are in millimetres and are automatically repaired. The print report says whether the repair produced one closed solid: watertight, bodies, boundaryEdges, nonManifoldEdges, volume, repairSucceeded and a note. Wall thickness and overhangs are not analysed. File formats, units and print reports lists every report field, and the ChatGPT STL for 3D printing guide shows a real report.
account
No fields. Returns credits, plan, subscriptionStatus, periodEnd, creditPools, the credit cost of each kind of model as costs, and accountUrl. Plans and keys are managed on the website, and no tool returns a payment link.
The model object
| Field | Type | Notes |
|---|---|---|
id | string | Model id, used by every other tool. |
status | string | queued, processing, ready or failed. |
mode | text | image | Built from a description or from a photo. |
useFor | string | web, game, print or render. |
title | string | Short title made from the prompt. |
prompt | string | null | The description you sent. |
format | string | glb. |
modelUrl | string | null | Signed GLB download link once ready. Expires after 15 minutes. |
previewUrl | string | null | The photo you supplied, for photo models. Always null for text models made over MCP. |
pageUrl | string | The model's page on the website. |
sourceUrl, sourceFormat | string | null | The original quad FBX, when a quad mesh was built (see quad above). Null otherwise. |
dimensions | object | null | Size of the model: x, y, z and units. |
triangles, fileSizeBytes | number | null | Mesh size of the GLB. |
creditsUsed | number | Credits charged for this model. |
error, retryable, retryAfterSeconds | Set when the model failed, or tells you when to check again while it is still being built. | |
createdAt, completedAt | string | null | ISO timestamps. |
Resources
creations3d://models/{id}/{format}andcreations3d://models/{id}/{format}{?flat_base,max_triangles}: the exported file itself, base64 encoded, for clients that read MCP resources instead of following links. export_model returns the matching URI.- An interactive 3D viewer that clients supporting MCP Apps show beside create_model and get_model results.
Credits
- Game-ready model (use_for game): 4 credits
- Standard model (web, print or render): 8 credits
- Model from a photo: 6 credits
- Exports and resizing: free
Credits are taken when a model is accepted and go back automatically if the build fails. See pricing for plans.
Limits
- At most two models per account are built at once; the rest wait in the queue. A busy service queues work instead of rejecting it.
- Download links expire after 15 minutes. get_model and export_model give fresh ones.
- Prompts up to 1,000 characters; photos PNG, JPEG or WebP under 10 MB, from a public HTTPS URL or a data URL.
- Exports to STL, 3MF or OBJ are refused for meshes above 500,000 triangles; ask for a lower max_triangles.
- No USDZ. Glass, emission, wall thickness and overhangs are not guaranteed.
Errors
A tool error comes back as a normal tool result with isError: true and three fields: error (a plain sentence), retryable and retryAfterSeconds. Internal errors are never passed through; you get "The service is temporarily unavailable. Retry shortly." with retryable true.
{
"isError": true,
"structuredContent": {
"error": "This needs 8 credits; you have 3.",
"retryable": false,
"retryAfterSeconds": null
}
}- "Provide a prompt or reference image.", "Prompt exceeds 1000 characters.": fix the input.
- "This needs N credits; you have M.": the account is out of credits. The owner adds credits on the website.
- "Model is not ready yet.": export after the status is ready (retryable, retry after 5 seconds).
- "Another model is being processed. Retry shortly.": an export is waiting its turn (retryable).
- "Model not found.": the id is wrong or belongs to another account.
At the HTTP level, a missing or invalid token gets 401 with invalid_token, and a request over 16 MB gets 413.