Koskamo

3DLogo.io MCP

An MCP server that allows AI assistants to interact with the 3DLogo.io browser-based 3D logo maker. It enables agents to build 3D logos, generate 3D coins, create 3D models from photos or prompts, manage projects, and export files in formats like GLB, OBJ, and STL.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

3DLogo.io MCP logo, by 3DLogo.ioCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by 3DLogo.io
You need:OAuth, fullno account
MCP endpoint (Streamable HTTP)
https://3dlogo.io/api/mcp
Vendor documentation

What its tools do

29 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

29 of 29 have a description · 29 of 29 declare behavior hints · 3 of 25 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Build a 3D logo from a wordmark or uploaded image
  • Generate a 3D coin with custom text and materials
  • Create a 3D model from a photo or text prompt
  • Manage saved projects and generate share links

Source and maintenance

Community listingRegistry 1.3.0

Protocol and capabilities

Server
3dlogo 1.3.0
MCP protocol negotiated in check
2025-11-25
Tools
29 advertised
Resources
5 advertised
Resource templates
1 advertised
Prompts
2 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  },
  "completions": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

3DLogo.io is a browser-based 3D logo maker. It makes 3D logos and 3D coins in the browser and turns photos or prompts into 3D meshes. Use build_logo_editor_link / build_coin_studio_link to hand the user a link that opens the studio already set up (text, material, lighting). Material ids come from list_materials; coin looks from list_coin_looks. Links open without an account. Exports on the free plan carry a small 3dlogo.io mark; Pro removes it and adds 4K stills and HD MP4. Generate runs on credits, from a Pro or Ultra plan or a one-time credit pack; get_plans has the ladder. For an existing logo image: upload_logo_image stores it (an attached file, a public image_url, or small base64 image_data) and returns a styled editor link; request_logo_image_upload gives a one-shot PUT URL for a file on the user's machine; build_logo_editor_link with upload=true opens the editor on the upload panel when the file cannot be sent. The account tools (projects, previews, share links, Generate) are listed but this connection is not signed in yet. Calling one makes the host ask the user to connect their 3DLogo.io account; after that the same call works. The catalogue and studio-link tools work now.

Tools

29 advertised

list_materials — List logo materials
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when you need a material id: the presets the 3D logo editor renders (chrome, gold, glass, holographic, neon, clay, wood...), each with its category and whether it needs Pro. Ids are exact strings for build_logo_editor_link, create_text_logo_project and update_project. Do not use to show the user what a look is like; browse_looks has example images.

list_materials input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "category": {
      "enum": [
        "chrome",
        "gold",
        "abstract",
        "holographic",
        "metal",
        "gradient",
        "glass",
        "plastic",
        "clay",
        "neon",
        "fabric",
        "composite",
        "wood",
        "stone",
        "enamel",
        "anodized"
      ],
      "type": "string",
      "description": "Only this category"
    }
  }
}
list_materials output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "materials",
    "categories"
  ],
  "properties": {
    "materials": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "category",
          "categoryLabel",
          "pro"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "pro": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "categoryLabel": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "categories": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
list_materials annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_coin_looks — List coin looks
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use before build_coin_studio_link or a coin restyle: the preset looks (gold, chrome, silver, bronze), blank edges (reeded, milled, smooth), motions, lighting rooms and fonts the coin studio accepts. Read-only, no account needed.

list_coin_looks input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
list_coin_looks output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "looks",
    "blanks",
    "motions",
    "environments",
    "fonts"
  ],
  "properties": {
    "fonts": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "looks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "label",
          "coinColor",
          "logoColor"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "coinColor": {
            "type": "string"
          },
          "logoColor": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "blanks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "label",
          "hint"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "hint": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "motions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "environments": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
list_coin_looks annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
build_logo_editor_link — Build a 3D logo editor link
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns a link that opens the 3D logo editor already styled, from a wordmark (text), from a stored logo image (mark, see upload_logo_image), or on the upload panel (upload=true) when the person will drop the file themselves. Works without an account. Use list_materials for material ids.

build_logo_editor_link input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "font": {
      "enum": [
        "outfit",
        "oswald",
        "montserrat",
        "archivo",
        "bebas",
        "anton",
        "russo",
        "orbitron",
        "blackops",
        "pacifico"
      ],
      "type": "string"
    },
    "mark": {
      "type": "string",
      "pattern": "^m[a-z0-9]{31}$",
      "description": "Mark id from upload_logo_image or request_logo_image_upload"
    },
    "text": {
      "type": "string",
      "maxLength": 40,
      "minLength": 1,
      "description": "The wordmark, up to 40 characters (omit when passing mark or upload)"
    },
    "depth": {
      "type": "number",
      "maximum": 500,
      "minimum": 1,
      "description": "Extrusion depth, default 30"
    },
    "motion": {
      "enum": [
        "none",
        "orbit",
        "rotate",
        "tumble",
        "reveal",
        "pulse"
      ],
      "type": "string"
    },
    "upload": {
      "type": "boolean",
      "description": "Open on the upload panel with the look prepared; the person drops their own file"
    },
    "material": {
      "type": "string",
      "description": "Material id from list_materials (e.g. gold-clean-optimised)"
    },
    "background": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Hex colour, e.g. #1a1a1a"
    },
    "environment": {
      "enum": [
        "studio",
        "sunset",
        "dawn",
        "night",
        "warehouse",
        "forest",
        "apartment",
        "city"
      ],
      "type": "string",
      "description": "Lighting room"
    }
  }
}
build_logo_editor_link output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "url",
    "text",
    "mark",
    "upload",
    "material"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "mark": {
      "type": [
        "string",
        "null"
      ]
    },
    "text": {
      "type": [
        "string",
        "null"
      ]
    },
    "upload": {
      "type": "boolean"
    },
    "material": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
build_logo_editor_link annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
build_coin_studio_link — Build a 3D coin studio link
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns a link that opens the 3D coin studio with a mark struck into a coin. Looks: gold, chrome, silver, bronze. Works without an account.

build_coin_studio_link input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "text"
  ],
  "properties": {
    "font": {
      "enum": [
        "outfit",
        "oswald",
        "montserrat",
        "archivo",
        "bebas",
        "anton",
        "russo",
        "orbitron",
        "blackops",
        "pacifico"
      ],
      "type": "string"
    },
    "look": {
      "enum": [
        "gold",
        "chrome",
        "silver",
        "bronze"
      ],
      "type": "string"
    },
    "text": {
      "type": "string",
      "maxLength": 24,
      "minLength": 1,
      "description": "The mark text, up to 24 characters"
    },
    "blank": {
      "enum": [
        "reeded",
        "milled",
        "smooth"
      ],
      "type": "string"
    },
    "motion": {
      "enum": [
        "none",
        "rotate",
        "tumble",
        "reveal",
        "float",
        "bounce"
      ],
      "type": "string"
    },
    "coinColor": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Hex colour, e.g. #1a1a1a"
    },
    "logoColor": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Hex colour, e.g. #1a1a1a"
    },
    "background": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Hex colour, e.g. #1a1a1a"
    },
    "environment": {
      "enum": [
        "studio",
        "sunset",
        "dawn",
        "night",
        "warehouse",
        "forest",
        "apartment",
        "city"
      ],
      "type": "string",
      "description": "Lighting room"
    }
  }
}
build_coin_studio_link output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "url",
    "text"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "text": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
build_coin_studio_link annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_plans — Compare plans and credit packs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks what is free, what Pro or Ultra add, or what a Generate run costs in credits: the plan features (exports, watermark, credits, saves) and the one-time credit packs, with what packs do and do not unlock. Read-only. Do not use to check the connected user's own plan; get_account does that.

get_plans input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
get_plans output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "free",
    "pro",
    "ultra",
    "creditPacks",
    "creditPackNotes",
    "pricingUrl"
  ],
  "properties": {
    "pro": {
      "type": "object",
      "required": [
        "priceUsd",
        "features"
      ],
      "properties": {
        "features": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "included"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "included": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          }
        },
        "priceUsd": {
          "type": "object",
          "required": [
            "monthly",
            "yearly"
          ],
          "properties": {
            "yearly": {
              "type": "object",
              "required": [
                "amountUsd",
                "label",
                "period",
                "monthlyEquivalent"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "period": {
                  "type": "string"
                },
                "amountUsd": {
                  "type": "number"
                },
                "monthlyEquivalent": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "monthly": {
              "type": "object",
              "required": [
                "amountUsd",
                "label",
                "period"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "period": {
                  "type": "string"
                },
                "amountUsd": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "free": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label",
          "included"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "included": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "ultra": {
      "type": "object",
      "required": [
        "priceUsd",
        "features"
      ],
      "properties": {
        "features": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "included"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "included": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          }
        },
        "priceUsd": {
          "type": "object",
          "required": [
            "monthly",
            "yearly"
          ],
          "properties": {
            "yearly": {
              "type": "object",
              "required": [
                "amountUsd",
                "label",
                "period",
                "monthlyEquivalent"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "period": {
                  "type": "string"
                },
                "amountUsd": {
                  "type": "number"
                },
                "monthlyEquivalent": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "monthly": {
              "type": "object",
              "required": [
                "amountUsd",
                "label",
                "period"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "period": {
                  "type": "string"
                },
                "amountUsd": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "pricingUrl": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "creditPacks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "priceUsd",
          "credits"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "credits": {
            "type": "number"
          },
          "priceUsd": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "creditPackNotes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
get_plans annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
browse_looks — Browse example looks
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user wants to see what is possible or pick a style before designing: the example looks (chrome, gold, glass, holographic, brushed metal, gradient, 3D text, animated), each with a rendered example image, what it is best for, the presets behind it, and an editor link that applies it. Works without an account. Do not use to get material ids for another tool; list_materials has the full catalogue.

browse_looks input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
browse_looks output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "looks"
  ],
  "properties": {
    "looks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "summary",
          "imageUrl",
          "editorUrl",
          "guideUrl",
          "bestFor",
          "presets"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "bestFor": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presets": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "note",
                "editorUrl"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                },
                "editorUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "Absolute https URL the user can open"
                }
              },
              "additionalProperties": false
            }
          },
          "summary": {
            "type": "string"
          },
          "guideUrl": {
            "type": "string",
            "format": "uri",
            "description": "The guide page for the look"
          },
          "imageUrl": {
            "type": "string",
            "format": "uri",
            "description": "A render of the look"
          },
          "editorUrl": {
            "type": "string",
            "format": "uri",
            "description": "Opens the editor with the look applied"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
browse_looks annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
upload_logo_image — Upload a logo image
Advertised by the server during the last successful anonymous check.

Stores a logo image (PNG, JPEG, GIF, WebP up to 8 MB; SVG up to 1 MB) so the 3D logo editor can extrude it, and returns a mark id plus an editor link already styled. Give exactly one source: image (a file the user attached in chat), image_url (a public https link to the image file itself, not a page), or image_data (a base64 data URL, small files only). Marks expire after 7 days. For a file on the user's own machine use request_logo_image_upload instead.

upload_logo_image input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "depth": {
      "type": "number",
      "maximum": 500,
      "minimum": 1,
      "description": "Extrusion depth, default 30"
    },
    "image": {
      "type": "object",
      "required": [
        "download_url",
        "file_id"
      ],
      "properties": {
        "file_id": {
          "type": "string",
          "minLength": 1,
          "description": "The host's file id"
        },
        "file_name": {
          "type": "string"
        },
        "mime_type": {
          "type": "string"
        },
        "download_url": {
          "type": "string",
          "format": "uri",
          "description": "Temporary download URL for the attached file"
        }
      },
      "description": "The image the user attached in chat"
    },
    "motion": {
      "enum": [
        "none",
        "orbit",
        "rotate",
        "tumble",
        "reveal",
        "pulse"
      ],
      "type": "string"
    },
    "material": {
      "type": "string",
      "description": "Material id from list_materials (e.g. gold-clean-optimised)"
    },
    "file_name": {
      "type": "string",
      "maxLength": 120,
      "description": "Shown in the editor; defaults to the file name"
    },
    "image_url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "Public https URL of the image file"
    },
    "background": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Hex colour, e.g. #1a1a1a"
    },
    "image_data": {
      "type": "string",
      "maxLength": 3000000,
      "description": "data:image/png;base64,... for small images only; most hosts cap this well under 1 MB"
    },
    "environment": {
      "enum": [
        "studio",
        "sunset",
        "dawn",
        "night",
        "warehouse",
        "forest",
        "apartment",
        "city"
      ],
      "type": "string",
      "description": "Lighting room"
    }
  }
}
upload_logo_image output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "markId",
    "editorUrl",
    "contentType",
    "bytes",
    "fileName",
    "expiresAt",
    "material"
  ],
  "properties": {
    "bytes": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "markId": {
      "type": "string"
    },
    "fileName": {
      "type": "string"
    },
    "material": {
      "type": [
        "string",
        "null"
      ]
    },
    "editorUrl": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "expiresAt": {
      "type": "string"
    },
    "contentType": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
upload_logo_image annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
request_logo_image_upload — Request an upload URL for a logo file
Advertised by the server during the last successful anonymous check.

For a logo file on the user's machine that cannot be sent inside a tool call: returns a mark id and a one-shot HTTPS PUT URL. Upload the raw file bytes to it (for example `curl -T logo.png "<uploadUrl>"`), then call build_logo_editor_link with the mark id (or create_image_logo_project when signed in). Accepts PNG, JPEG, GIF, WebP (8 MB) and SVG (1 MB).

request_logo_image_upload input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "file_name": {
      "type": "string",
      "maxLength": 120,
      "description": "The file name, used as the project title later"
    }
  }
}
request_logo_image_upload output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "markId",
    "uploadUrl",
    "method",
    "accept",
    "maxBytes",
    "maxSvgBytes",
    "example",
    "next"
  ],
  "properties": {
    "next": {
      "type": "string"
    },
    "accept": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "markId": {
      "type": "string"
    },
    "method": {
      "type": "string",
      "const": "PUT"
    },
    "example": {
      "type": "string"
    },
    "maxBytes": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "uploadUrl": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "maxSvgBytes": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    }
  },
  "additionalProperties": false
}
request_logo_image_upload annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
get_account — Get account and plan
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use to know what the connected account can do before acting: plan, remaining Generate credits (period and purchased), project and share-link counts against their caps, and export limits. Read-only.

get_account input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
get_account output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "name",
    "email",
    "plan",
    "isPro",
    "isUltra",
    "creditsRemaining",
    "periodCreditsRemaining",
    "purchasedCredits",
    "purchasedCreditsExpireAt",
    "creditsRollOver",
    "canUsePaidDensity",
    "creditsExpireAt",
    "projectCount",
    "projectLimit",
    "shareLimit",
    "exportWatermark",
    "canExportHdVideo",
    "maxImagePx",
    "accountUrl"
  ],
  "properties": {
    "name": {
      "type": [
        "string",
        "null"
      ]
    },
    "plan": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "isPro": {
      "type": "boolean"
    },
    "isUltra": {
      "type": "boolean"
    },
    "accountUrl": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "maxImagePx": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "shareLimit": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "projectCount": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "projectLimit": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "creditsExpireAt": {
      "type": [
        "string",
        "null"
      ]
    },
    "creditsRollOver": {
      "type": "boolean"
    },
    "exportWatermark": {
      "type": "boolean"
    },
    "canExportHdVideo": {
      "type": "boolean"
    },
    "creditsRemaining": {
      "type": "number"
    },
    "purchasedCredits": {
      "type": "number"
    },
    "canUsePaidDensity": {
      "type": "boolean"
    },
    "periodCreditsRemaining": {
      "type": "number"
    },
    "purchasedCreditsExpireAt": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
get_account annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_projects — List saved projects
Advertised by the server during the last successful anonymous check.
Advertised read-only

The user's saved logos, coins and generated meshes, newest first. Optional title search and kind filter.

list_projects input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "page": {
      "type": "integer",
      "default": 1,
      "maximum": 9007199254740991,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "maxLength": 40,
      "description": "Match against the title"
    }
  }
}
list_projects output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "projects",
    "total",
    "page",
    "totalPages"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "total": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "kind",
          "kindLabel",
          "inputType",
          "isPublic",
          "url",
          "shareUrl",
          "modelUrl",
          "thumbnailUrl",
          "updatedAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Opens the project in its studio"
          },
          "kind": {
            "enum": [
              "logo",
              "coin",
              "mesh"
            ],
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "isPublic": {
            "type": "boolean"
          },
          "modelUrl": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Public GLB, for published meshes"
          },
          "shareUrl": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Public page, when published"
          },
          "inputType": {
            "type": [
              "string",
              "null"
            ]
          },
          "kindLabel": {
            "type": "string"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Saved thumbnail; needs the owner's browser session"
          }
        },
        "additionalProperties": false
      }
    },
    "totalPages": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    }
  },
  "additionalProperties": false
}
list_projects annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_project — Get a project
Advertised by the server during the last successful anonymous check.
Advertised read-only

Details and links for one saved project by id: where it opens, its public page if published, the GLB for meshes, and with include_config the saved workspace settings (material, lighting, motion). For a picture of it, call get_project_preview.

get_project input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "include_config": {
      "type": "boolean",
      "default": false,
      "description": "Also return the saved workspace config (large)"
    }
  }
}
get_project output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "kind",
    "kindLabel",
    "inputType",
    "isPublic",
    "url",
    "shareUrl",
    "modelUrl",
    "thumbnailUrl",
    "updatedAt",
    "accessRole",
    "canEdit",
    "hasArtwork"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Opens the project in its studio"
    },
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "config": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "canEdit": {
      "type": "boolean"
    },
    "isPublic": {
      "type": "boolean"
    },
    "modelUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public GLB, for published meshes"
    },
    "shareUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public page, when published"
    },
    "inputType": {
      "type": [
        "string",
        "null"
      ]
    },
    "kindLabel": {
      "type": "string"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 8601"
    },
    "accessRole": {
      "type": "string"
    },
    "hasArtwork": {
      "type": "boolean",
      "description": "False until the project has been opened and saved once in the studio"
    },
    "thumbnailUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Saved thumbnail; needs the owner's browser session"
    }
  },
  "additionalProperties": false
}
get_project annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_text_logo_project — Create a text logo project
Advertised by the server during the last successful anonymous check.

Saves a new 3D logo project from a wordmark with a material and lighting, so it appears in the user's Projects and opens in the editor. Does not spend credits.

create_text_logo_project input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "text"
  ],
  "properties": {
    "font": {
      "enum": [
        "outfit",
        "oswald",
        "montserrat",
        "archivo",
        "bebas",
        "anton",
        "russo",
        "orbitron",
        "blackops",
        "pacifico"
      ],
      "type": "string"
    },
    "text": {
      "type": "string",
      "maxLength": 40,
      "minLength": 1
    },
    "depth": {
      "type": "number",
      "maximum": 500,
      "minimum": 1
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Project name; defaults to the text"
    },
    "motion": {
      "enum": [
        "none",
        "orbit",
        "rotate",
        "tumble",
        "reveal",
        "pulse"
      ],
      "type": "string"
    },
    "material": {
      "type": "string",
      "description": "Material id from list_materials"
    },
    "background": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Hex colour, e.g. #1a1a1a"
    },
    "environment": {
      "enum": [
        "studio",
        "sunset",
        "dawn",
        "night",
        "warehouse",
        "forest",
        "apartment",
        "city"
      ],
      "type": "string",
      "description": "Lighting room"
    }
  }
}
create_text_logo_project output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "kind",
    "kindLabel",
    "inputType",
    "isPublic",
    "url",
    "shareUrl",
    "modelUrl",
    "thumbnailUrl",
    "updatedAt",
    "note"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Opens the project in its studio"
    },
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "isPublic": {
      "type": "boolean"
    },
    "modelUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public GLB, for published meshes"
    },
    "shareUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public page, when published"
    },
    "inputType": {
      "type": [
        "string",
        "null"
      ]
    },
    "kindLabel": {
      "type": "string"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 8601"
    },
    "thumbnailUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Saved thumbnail; needs the owner's browser session"
    }
  },
  "additionalProperties": false
}
create_text_logo_project annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
create_image_logo_project — Create a logo project from an uploaded image
Advertised by the server during the last successful anonymous check.

Saves a new 3D logo project from a mark stored with upload_logo_image or request_logo_image_upload, with a material and lighting, so it appears in the user's Projects. The image is traced into 3D the first time the project opens; open it once and save before publishing. Does not spend credits.

create_image_logo_project input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "mark"
  ],
  "properties": {
    "mark": {
      "type": "string",
      "pattern": "^m[a-z0-9]{31}$",
      "description": "Mark id from upload_logo_image or request_logo_image_upload"
    },
    "depth": {
      "type": "number",
      "maximum": 500,
      "minimum": 1,
      "description": "Extrusion depth, default 30"
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Project name; defaults to the file name"
    },
    "motion": {
      "enum": [
        "none",
        "orbit",
        "rotate",
        "tumble",
        "reveal",
        "pulse"
      ],
      "type": "string"
    },
    "material": {
      "type": "string",
      "description": "Material id from list_materials (e.g. gold-clean-optimised)"
    },
    "background": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Hex colour, e.g. #1a1a1a"
    },
    "environment": {
      "enum": [
        "studio",
        "sunset",
        "dawn",
        "night",
        "warehouse",
        "forest",
        "apartment",
        "city"
      ],
      "type": "string",
      "description": "Lighting room"
    }
  }
}
create_image_logo_project output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "kind",
    "kindLabel",
    "inputType",
    "isPublic",
    "url",
    "shareUrl",
    "modelUrl",
    "thumbnailUrl",
    "updatedAt",
    "mark",
    "note"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Opens the project in its studio"
    },
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "mark": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "isPublic": {
      "type": "boolean"
    },
    "modelUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public GLB, for published meshes"
    },
    "shareUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public page, when published"
    },
    "inputType": {
      "type": [
        "string",
        "null"
      ]
    },
    "kindLabel": {
      "type": "string"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 8601"
    },
    "thumbnailUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Saved thumbnail; needs the owner's browser session"
    }
  },
  "additionalProperties": false
}
create_image_logo_project annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
create_invite_link — Create a collaborator invite link
Advertised by the server during the last successful anonymous check.

A link that lets a signed-in person join the project as an editor or viewer (up to 50 uses, 7 days). Owner only.

create_invite_link input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "role": {
      "enum": [
        "editor",
        "viewer"
      ],
      "type": "string",
      "default": "editor"
    }
  }
}
create_invite_link output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "url",
    "role",
    "expiresAt"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "role": {
      "enum": [
        "editor",
        "viewer"
      ],
      "type": "string"
    },
    "expiresAt": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
create_invite_link annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
delete_project — Delete a project
Advertised by the server during the last successful anonymous check.
Advertised destructive

Permanently deletes a saved project, its share page and invites. Confirm with the user first. Owner only.

delete_project input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "confirm"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true"
    }
  }
}
delete_project output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "deleted"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "deleted": {
      "type": "boolean",
      "const": true
    }
  },
  "additionalProperties": false
}
delete_project annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
quote_generation — Quote a Generate run
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use before generate_3d_model so the user knows the cost: the credits a text or image run charges at a density. Read-only, spends nothing.

quote_generation input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "mode"
  ],
  "properties": {
    "mode": {
      "enum": [
        "text",
        "image"
      ],
      "type": "string"
    },
    "density": {
      "enum": [
        "fast",
        "standard",
        "pro",
        "ultra"
      ],
      "type": "string",
      "default": "standard"
    }
  }
}
quote_generation output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "mode",
    "density",
    "quote"
  ],
  "properties": {
    "mode": {
      "enum": [
        "text",
        "image"
      ],
      "type": "string"
    },
    "quote": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Credits the run will charge"
    },
    "density": {
      "enum": [
        "fast",
        "standard",
        "pro",
        "ultra"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
quote_generation annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
generate_3d_model — Generate a 3D model
Advertised by the server during the last successful anonymous check.
Open-world

Starts an AI generate from a text prompt or a public image URL. Spends the user's credits (see quote_generation). Returns a run id to poll with get_generation_status.

generate_3d_model input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "mode"
  ],
  "properties": {
    "mode": {
      "enum": [
        "text",
        "image"
      ],
      "type": "string"
    },
    "prompt": {
      "type": "string",
      "maxLength": 1024,
      "description": "For text mode"
    },
    "density": {
      "enum": [
        "fast",
        "standard",
        "pro",
        "ultra"
      ],
      "type": "string",
      "default": "standard"
    },
    "texture": {
      "type": "boolean",
      "default": true
    },
    "image_url": {
      "type": "string",
      "format": "uri",
      "description": "For image mode: a public https image (PNG/JPEG/WebP)"
    }
  }
}
generate_3d_model output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "runId",
    "status",
    "creditsCharged",
    "statusUrl"
  ],
  "properties": {
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "type": "string"
    },
    "statusUrl": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "creditsCharged": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
generate_3d_model annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_generation_status — Check a Generate run
Advertised by the server during the last successful anonymous check.
Advertised read-only

Status of a run started by generate_3d_model (or from the user's history). When completed, save it with save_generation_as_project.

get_generation_status input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "run_id"
  ],
  "properties": {
    "run_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
get_generation_status output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "runId",
    "status",
    "modelName",
    "queuePosition",
    "creditsCharged",
    "refunded",
    "error",
    "openUrl",
    "hasPreview"
  ],
  "properties": {
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "status": {
      "enum": [
        "queued",
        "processing",
        "completed",
        "failed",
        "cancelled",
        "expired"
      ],
      "type": "string"
    },
    "openUrl": {
      "type": "string",
      "format": "uri",
      "description": "The run in the Generate studio"
    },
    "refunded": {
      "type": "boolean"
    },
    "modelName": {
      "type": "string"
    },
    "hasPreview": {
      "type": "boolean",
      "description": "True once a render of the mesh exists; get_generation_preview returns it"
    },
    "queuePosition": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "creditsCharged": {
      "type": [
        "number",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
get_generation_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_generations — List recent Generate runs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use to find an earlier Generate run (to check, preview or save it): the recent runs with status, prompt and whether a render exists, newest first. Read-only.

list_generations input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 12,
      "maximum": 24,
      "minimum": 1
    }
  }
}
list_generations output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "runs"
  ],
  "properties": {
    "runs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "runId",
          "mode",
          "status",
          "prompt",
          "modelName",
          "createdAt",
          "hasPreview",
          "openUrl"
        ],
        "properties": {
          "mode": {
            "type": "string"
          },
          "runId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "openUrl": {
            "type": "string",
            "format": "uri",
            "description": "Absolute https URL the user can open"
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "modelName": {
            "type": "string"
          },
          "hasPreview": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
list_generations annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
save_generation_as_project — Save a generated mesh as a project
Advertised by the server during the last successful anonymous check.

Keeps a completed run in Projects (idempotent per run). With public=true it is also published, which gives a share page and a public GLB URL the user can download.

save_generation_as_project input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "run_id"
  ],
  "properties": {
    "title": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1
    },
    "public": {
      "type": "boolean",
      "default": false
    },
    "run_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
save_generation_as_project output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "kind",
    "kindLabel",
    "inputType",
    "isPublic",
    "url",
    "shareUrl",
    "modelUrl",
    "thumbnailUrl",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Opens the project in its studio"
    },
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "isPublic": {
      "type": "boolean"
    },
    "modelUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public GLB, for published meshes"
    },
    "shareUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public page, when published"
    },
    "inputType": {
      "type": [
        "string",
        "null"
      ]
    },
    "kindLabel": {
      "type": "string"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 8601"
    },
    "thumbnailUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Saved thumbnail; needs the owner's browser session"
    }
  },
  "additionalProperties": false
}
save_generation_as_project annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_project_preview — Get a picture of a project
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user wants to see a saved project, or you need to describe it: returns a signed URL of the studio's last saved render, valid for an hour, and the PNG inline when include_image_data is true (only on hosts that display image content; elsewhere it costs many tokens for nothing). Nothing to show until the project has been opened and saved once. Do not use for Generate runs; get_generation_preview covers those.

get_project_preview input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "include_image_data": {
      "type": "boolean",
      "default": false,
      "description": "Also return the image inline as image content"
    }
  }
}
get_project_preview output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "imageUrl",
    "expiresAt",
    "contentType",
    "bytes",
    "openUrl",
    "projectId"
  ],
  "properties": {
    "bytes": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "openUrl": {
      "type": "string",
      "format": "uri",
      "description": "The studio page for it"
    },
    "imageUrl": {
      "type": "string",
      "format": "uri",
      "description": "Signed image URL, valid about an hour; fetch or show it before then"
    },
    "expiresAt": {
      "type": "string",
      "description": "ISO 8601, when imageUrl stops working"
    },
    "projectId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "contentType": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_project_preview annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_generation_preview — Get a picture of a generated mesh
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use once get_generation_status reports completed with hasPreview true: returns a signed URL of the provider's render of the mesh, valid for an hour, and the image inline when include_image_data is true (only on hosts that display image content). Do not use for saved logo or coin projects; get_project_preview covers those.

get_generation_preview input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "run_id"
  ],
  "properties": {
    "run_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "include_image_data": {
      "type": "boolean",
      "default": false,
      "description": "Also return the image inline as image content"
    }
  }
}
get_generation_preview output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "imageUrl",
    "expiresAt",
    "contentType",
    "bytes",
    "openUrl",
    "runId"
  ],
  "properties": {
    "bytes": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "openUrl": {
      "type": "string",
      "format": "uri",
      "description": "The studio page for it"
    },
    "imageUrl": {
      "type": "string",
      "format": "uri",
      "description": "Signed image URL, valid about an hour; fetch or show it before then"
    },
    "expiresAt": {
      "type": "string",
      "description": "ISO 8601, when imageUrl stops working"
    },
    "contentType": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_generation_preview annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_share_link — Create a share link and embed code
Advertised by the server during the last successful anonymous check.
Open-world

Use when the user wants to send a saved design to someone, post it, or embed it on a site: returns the share page, the iframe embed snippet, the oEmbed endpoint and a poster image URL. Unlisted (default) works for anyone holding the link without making the project public; public makes the page indexable. Reuses the project's active link of the same visibility, so calling twice is safe. The project must have been opened and saved once. Owner only. Do not use to let someone edit; create_invite_link does that.

create_share_link input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Title on the share page; defaults to the project title"
    },
    "visibility": {
      "enum": [
        "unlisted",
        "public"
      ],
      "type": "string",
      "default": "unlisted"
    },
    "allow_download": {
      "type": "boolean",
      "default": true,
      "description": "Let viewers download the file from the page"
    }
  }
}
create_share_link output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "token",
    "url",
    "embedUrl",
    "posterUrl",
    "videoUrl",
    "modelUrl",
    "oembedUrl",
    "embedHtml",
    "kind",
    "title",
    "visibility",
    "status",
    "expiresAt",
    "allowDownload",
    "embedEnabled",
    "viewCount",
    "projectId",
    "createdAt"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The share page"
    },
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "token": {
      "type": "string"
    },
    "status": {
      "enum": [
        "active",
        "revoked",
        "expired",
        "removed"
      ],
      "type": "string"
    },
    "embedUrl": {
      "type": "string",
      "format": "uri",
      "description": "The iframe source"
    },
    "modelUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "The GLB, for shares of generated meshes"
    },
    "videoUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Turntable MP4, when one has been rendered"
    },
    "createdAt": {
      "type": "string"
    },
    "embedHtml": {
      "type": "string",
      "description": "Copy-paste iframe snippet with attribution"
    },
    "expiresAt": {
      "type": [
        "string",
        "null"
      ]
    },
    "oembedUrl": {
      "type": "string",
      "format": "uri",
      "description": "oEmbed endpoint for this share"
    },
    "posterUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Rendered still of the design, when one exists"
    },
    "projectId": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "null"
        }
      ]
    },
    "viewCount": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "visibility": {
      "enum": [
        "unlisted",
        "public"
      ],
      "type": "string"
    },
    "embedEnabled": {
      "type": "boolean"
    },
    "allowDownload": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
create_share_link annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_share_links — List share links
Advertised by the server during the last successful anonymous check.
Advertised read-only

The account's active share links, or one project's when id is given, each with page, embed and poster URLs and a view count.

list_share_links input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Only this project's links"
    }
  }
}
list_share_links output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "shares"
  ],
  "properties": {
    "shares": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "token",
          "url",
          "embedUrl",
          "posterUrl",
          "videoUrl",
          "modelUrl",
          "oembedUrl",
          "embedHtml",
          "kind",
          "title",
          "visibility",
          "status",
          "expiresAt",
          "allowDownload",
          "embedEnabled",
          "viewCount",
          "projectId",
          "createdAt"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The share page"
          },
          "kind": {
            "enum": [
              "logo",
              "coin",
              "mesh"
            ],
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "revoked",
              "expired",
              "removed"
            ],
            "type": "string"
          },
          "embedUrl": {
            "type": "string",
            "format": "uri",
            "description": "The iframe source"
          },
          "modelUrl": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "The GLB, for shares of generated meshes"
          },
          "videoUrl": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Turntable MP4, when one has been rendered"
          },
          "createdAt": {
            "type": "string"
          },
          "embedHtml": {
            "type": "string",
            "description": "Copy-paste iframe snippet with attribution"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "oembedUrl": {
            "type": "string",
            "format": "uri",
            "description": "oEmbed endpoint for this share"
          },
          "posterUrl": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "Rendered still of the design, when one exists"
          },
          "projectId": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "viewCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "visibility": {
            "enum": [
              "unlisted",
              "public"
            ],
            "type": "string"
          },
          "embedEnabled": {
            "type": "boolean"
          },
          "allowDownload": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
list_share_links annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
revoke_share_link — Turn off a share link
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Turns a share link off by token: the page, the embed and the poster stop serving within minutes. Cannot be undone; create_share_link makes a fresh one. Owner only.

revoke_share_link input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "token"
  ],
  "properties": {
    "token": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{22}$"
    }
  }
}
revoke_share_link output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "token",
    "url",
    "embedUrl",
    "posterUrl",
    "videoUrl",
    "modelUrl",
    "oembedUrl",
    "embedHtml",
    "kind",
    "title",
    "visibility",
    "status",
    "expiresAt",
    "allowDownload",
    "embedEnabled",
    "viewCount",
    "projectId",
    "createdAt"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The share page"
    },
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "token": {
      "type": "string"
    },
    "status": {
      "enum": [
        "active",
        "revoked",
        "expired",
        "removed"
      ],
      "type": "string"
    },
    "embedUrl": {
      "type": "string",
      "format": "uri",
      "description": "The iframe source"
    },
    "modelUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "The GLB, for shares of generated meshes"
    },
    "videoUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Turntable MP4, when one has been rendered"
    },
    "createdAt": {
      "type": "string"
    },
    "embedHtml": {
      "type": "string",
      "description": "Copy-paste iframe snippet with attribution"
    },
    "expiresAt": {
      "type": [
        "string",
        "null"
      ]
    },
    "oembedUrl": {
      "type": "string",
      "format": "uri",
      "description": "oEmbed endpoint for this share"
    },
    "posterUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Rendered still of the design, when one exists"
    },
    "projectId": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "null"
        }
      ]
    },
    "viewCount": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "visibility": {
      "enum": [
        "unlisted",
        "public"
      ],
      "type": "string"
    },
    "embedEnabled": {
      "type": "boolean"
    },
    "allowDownload": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
revoke_share_link annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
update_project — Update a saved project
Advertised by the server during the last successful anonymous check.
Open-world

Use when the user wants an existing project changed without opening the studio: its title, whether it is public (a public project has a share page and, for meshes, a public GLB URL), and on logo and coin projects the style: material, lighting room, background, motion, depth, font, the wordmark on text projects; on coins also the look, coin and mark colours, and the blank edge. Only the fields given change. Making a project public needs a saved render. Style changes render the next time the project is opened and saved. Do not use for a share link that keeps the project private (create_share_link) or to make something new (create_text_logo_project, duplicate_project).

update_project input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "font": {
      "enum": [
        "outfit",
        "oswald",
        "montserrat",
        "archivo",
        "bebas",
        "anton",
        "russo",
        "orbitron",
        "blackops",
        "pacifico"
      ],
      "type": "string"
    },
    "look": {
      "enum": [
        "gold",
        "chrome",
        "silver",
        "bronze"
      ],
      "type": "string",
      "description": "Coin projects"
    },
    "text": {
      "type": "string",
      "maxLength": 40,
      "minLength": 1,
      "description": "New wordmark; text projects only (coins: 24 characters)"
    },
    "blank": {
      "enum": [
        "reeded",
        "milled",
        "smooth"
      ],
      "type": "string",
      "description": "Coin projects: the edge"
    },
    "depth": {
      "type": "number",
      "maximum": 500,
      "minimum": 1,
      "description": "Extrusion depth; logo projects"
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "New project title"
    },
    "motion": {
      "enum": [
        "none",
        "orbit",
        "rotate",
        "tumble",
        "reveal",
        "pulse",
        "float",
        "bounce"
      ],
      "type": "string"
    },
    "public": {
      "type": "boolean",
      "description": "Turn the public page on or off; owner only"
    },
    "material": {
      "type": "string",
      "description": "Material id from list_materials; logo projects"
    },
    "background": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Hex colour, e.g. #1a1a1a"
    },
    "coin_color": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Coin projects: the coin body"
    },
    "logo_color": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "description": "Coin projects: the struck mark"
    },
    "environment": {
      "enum": [
        "studio",
        "sunset",
        "dawn",
        "night",
        "warehouse",
        "forest",
        "apartment",
        "city"
      ],
      "type": "string",
      "description": "Lighting room"
    }
  }
}
update_project output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "kind",
    "kindLabel",
    "inputType",
    "isPublic",
    "url",
    "shareUrl",
    "modelUrl",
    "thumbnailUrl",
    "updatedAt",
    "changed",
    "note"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Opens the project in its studio"
    },
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "changed": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "isPublic": {
      "type": "boolean"
    },
    "modelUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public GLB, for published meshes"
    },
    "shareUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public page, when published"
    },
    "inputType": {
      "type": [
        "string",
        "null"
      ]
    },
    "kindLabel": {
      "type": "string"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 8601"
    },
    "thumbnailUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Saved thumbnail; needs the owner's browser session"
    }
  },
  "additionalProperties": false
}
update_project annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
duplicate_project — Duplicate a project
Advertised by the server during the last successful anonymous check.

Use when the user wants a variant without touching the original ("a gold version of this one"): copies a saved logo or coin project with its artwork, optionally under a new title; restyle the copy with update_project. Counts against the project cap. Does not spend credits.

duplicate_project input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1
    }
  }
}
duplicate_project output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "kind",
    "kindLabel",
    "inputType",
    "isPublic",
    "url",
    "shareUrl",
    "modelUrl",
    "thumbnailUrl",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Opens the project in its studio"
    },
    "kind": {
      "enum": [
        "logo",
        "coin",
        "mesh"
      ],
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "isPublic": {
      "type": "boolean"
    },
    "modelUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public GLB, for published meshes"
    },
    "shareUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Public page, when published"
    },
    "inputType": {
      "type": [
        "string",
        "null"
      ]
    },
    "kindLabel": {
      "type": "string"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 8601"
    },
    "thumbnailUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ],
      "description": "Saved thumbnail; needs the owner's browser session"
    }
  },
  "additionalProperties": false
}
duplicate_project annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
search — Search projects
Advertised by the server during the last successful anonymous check.
Advertised read-only

Searches the user's saved projects by title and returns ids with links (the ChatGPT search contract). Use fetch for the detail of one result; list_projects for browsing with filters.

search input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 40,
      "minLength": 1
    }
  }
}
search output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Absolute https URL the user can open"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch — Fetch a project
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full detail for one project id returned by search (the ChatGPT fetch contract): a text summary, the opening URL and metadata.

fetch input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  }
}
fetch output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "text",
    "url",
    "metadata"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL the user can open"
    },
    "text": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "metadata": {
      "type": "object",
      "required": [
        "kind",
        "isPublic",
        "shareUrl",
        "modelUrl"
      ],
      "properties": {
        "kind": {
          "enum": [
            "logo",
            "coin",
            "mesh"
          ],
          "type": "string"
        },
        "isPublic": {
          "type": "boolean"
        },
        "modelUrl": {
          "anyOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "null"
            }
          ]
        },
        "shareUrl": {
          "anyOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
fetch annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

2 advertised

design-3d-logo — Design a 3D logo

Advertised by the server during the last successful anonymous check.

Guides a short brief for a wordmark, then produces an editor link.

brand
Brand or product name (required)
vibe
Mood, e.g. luxury, playful, tech
design-3d-coin — Design a 3D coin

Advertised by the server during the last successful anonymous check.

Guides a short brief for a struck coin or medal, then produces a coin studio link.

mark
The text to strike: a name, initials, or a year (required)
look
gold, chrome, silver, or bronze

Resources

5 advertised

materials — Logo materials

Advertised by the server during the last successful anonymous check.

All material presets with ids and categories

materials URI
logo3d://materials

MIME type: application/json

coin-looks — Coin looks and blanks

Advertised by the server during the last successful anonymous check.

Preset looks, blank edges, motions, rooms and fonts for the coin studio

coin-looks URI
logo3d://coin-looks

MIME type: application/json

plans — Plans and credit packs

Advertised by the server during the last successful anonymous check.

What Free, Pro and Ultra include, and the one-time credit packs

plans URI
logo3d://plans

MIME type: application/json

looks — Example looks

Advertised by the server during the last successful anonymous check.

The example looks with a render, best uses, presets and an editor link each

looks URI
logo3d://looks

MIME type: application/json

preview-app — 3DLogo.io preview card

Advertised by the server during the last successful anonymous check.

Inline card for previews, share links, example looks and published meshes (MCP Apps).

preview-app URI
ui://3dlogo/preview

MIME type: text/html;profile=mcp-app

project — Saved project

Advertised by the server during the last successful anonymous check.

A saved project by id

project URI template
logo3d://projects/{id}

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
4620 ms
95th percentile latency
4620 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · registry · passed · metadata changed · Source metadata updated
  • · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
  • · probe · passed · 4620 ms · metadata changed · 29 tool(s), 5 resource(s), 1 resource template(s), 2 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http 3dlogo-io-mcp https://3dlogo.io/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add 3dlogo-io-mcp --url https://3dlogo.io/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable 3dlogo-io-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "3dlogo-io-mcp": {
      "url": "https://3dlogo.io/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "3dlogo-io-mcp": {
      "type": "streamableHttp",
      "url": "https://3dlogo.io/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start 3dlogo-io-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "3dlogo-io-mcp": {
      "type": "http",
      "url": "https://3dlogo.io/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http 3dlogo-io-mcp https://3dlogo.io/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://3dlogo.io/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "3dlogo-io-mcp": {
      "serverUrl": "https://3dlogo.io/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like 3DLogo.io MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.