Search/download 7,000+ PBR materials, HDRIs, decals, 3D assets; generate PBR materials and HDRIs.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. "Bearer <API key>" from https://3dtexel.com/api-keys/ to download and generate. Search works without it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Cancel a running generation; its credits are refunded.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Cancel a running generation; its credits are refunded.
| Argument | Type | Description |
|---|---|---|
| generation_id* | string |
{
"type": "object",
"required": [
"generation_id"
],
"properties": {
"generation_id": {
"type": "string"
}
}
}Returns a 3dtexel.com link where THE USER buys a credit pack and pays himself. This tool never pays and never touches payment details. Give the link to the user, then check get_balance.
| Argument | Type | Description |
|---|---|---|
| bundle* | string | |
| currency | string |
{
"type": "object",
"required": [
"bundle"
],
"properties": {
"bundle": {
"enum": [
"starter",
"popular",
"pro",
"ultra"
],
"type": "string"
},
"currency": {
"enum": [
"eur",
"usd"
],
"type": "string",
"default": "eur"
}
}
}Get signed download URLs for an asset (valid about 30 minutes). Free CC0 assets: no cost. AI assets: charges their price ONCE (then free forever, added to the user's library) — pass max_credits after the user accepted the price. Requires a connected account.
| Argument | Type | Description |
|---|---|---|
| asset_id* | integer | |
| resolution | string | Optional, e.g. 2k, 4k, 8k when the asset offers several. |
| max_credits | integer | Highest price the user accepted. Required when the asset is not free. |
{
"type": "object",
"required": [
"asset_id"
],
"properties": {
"asset_id": {
"type": "integer"
},
"resolution": {
"type": "string",
"description": "Optional, e.g. 2k, 4k, 8k when the asset offers several."
},
"max_credits": {
"type": "integer",
"minimum": 0,
"description": "Highest price the user accepted. Required when the asset is not free."
}
}
}Textured 3D model (GLB) from an image or a text prompt. texel-3d-pro = state of the art, highest quality, HD texture with PBR maps (base color, metal/roughness, normal); texel-3d-alt = another excellent option, PBR maps; texel-3d-express = fast, decent quality (~20K triangles, PBR); texel-3d-draft = very fast drafts and distant props, color texture only, not for final quality. Without image_url, a reference image is generated from the prompt first. Asynchronous: returns a generation id; poll get_generation. Spends credits (refunded automatically on failure). Typical time: 180 s.
| Argument | Type | Description |
|---|---|---|
| mesh | string | texel-3d-alt only: triangle count. |
| faces | integer | texel-3d-pro only: target face count. Omit for automatic (maximum detail). |
| model | string | texel-3d-pro (default, best), texel-3d-alt, texel-3d-express (fast), texel-3d-draft (cheapest, color only). |
| object | string | texel-3d-draft only: name of the object to extract (e.g. "chair"). Omit on a plain background. |
| prompt | string | Object to create, e.g. "a medieval wooden treasure chest". Required when no image_url is given. |
| image_url | string | Optional https URL of a reference image (one object, plain background works best). |
| max_credits* | integer |
360-degree equirectangular HDRI panorama / skybox from a text prompt, true HDR (.hdr) plus an LDR preview image. Realistic or stylized skies, interiors, landscapes. Asynchronous: returns a generation id; poll get_generation. Spends credits (refunded automatically on failure). Typical time: 150 s.
| Argument | Type | Description |
|---|---|---|
| seed | integer | Optional, for reproducibility. |
| prompt* | string | Scene, e.g. "golden hour over a misty pine forest, clear sky". |
| resolution | string | 2k = 2048x1024, 4k = 4096x2048, 8k = 8192x4096. |
| max_credits* | integer | Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing. |
| idempotency_key | string | Optional. Same key = same generation, never charged twice. Default: derived from the parameters for 10 minutes; pass a new value to intentionally run the same prompt again. |
| save_to_library | boolean | Optional. When the generation succeeds, publish it in the public 3DTexel community library and add it to the user's library (free). Only if the user asked for it. |
{
"type": "object",
"required": [
"prompt",
"max_credits"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 999999,
"minimum": 0,
"description": "Optional, for reproducibility."
},
"prompt": {
"type": "string",
"maxLength": 1000,
"description": "Scene, e.g. \"golden hour over a misty pine forest, clear sky\"."
},
"resolution": {
"enum": [
"2k",
"4k",
"8k"
],
"type": "string",
"default": "4k",
"description": "2k = 2048x1024, 4k = 4096x2048, 8k = 8192x4096."
},
"max_credits": {
"type": "integer",
"minimum": 1,
"description": "Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing."
},
"idempotency_key": {
"type": "string",
"maxLength": 80,
"description": "Optional. Same key = same generation, never charged twice. Default: derived from the parameters for 10 minutes; pass a new value to intentionally run the same prompt again."
},
"save_to_library": {
"type": "boolean",
"default": false,
"description": "Optional. When the generation succeeds, publish it in the public 3DTexel community library and add it to the user's library (free). Only if the user asked for it."
}
}
}Seamless PBR material from a text prompt: albedo (base color), normal, roughness and height maps. Realistic or stylized. Precise layouts (herringbone, chevron, Versailles parquet, basket weave, hexagon tiles...) are drawn exactly so they tile. Asynchronous: returns a generation id; poll get_generation. Spends credits (refunded automatically on failure). Typical time: 120 s.
| Argument | Type | Description |
|---|---|---|
| model | string | texel-quality = best (1K / 2K / 4K), texel-express = fastest and cheapest (1K only: any other resolution is delivered and charged in 1K), texel-classic = alternative look (1K / 2K / 4K). The 4K is native. |
| style | string | |
| prompt* | string | Material description, e.g. "mossy medieval cobblestone, wet". |
| resolution | string | 4k_native is accepted as 4k (the 4K is native). texel-express always runs in 1K. |
| max_credits* | integer | Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing. |
| output_format | string | |
| idempotency_key | string | Optional. Same key = same generation, never charged twice. Default: derived from the parameters for 10 minutes; pass a new value to intentionally run the same prompt again. |
One AI image from a text prompt (optionally from a reference image): sprites, flipbooks, emissive or UI textures, concept images. No PBR maps: use pbr-material for tileable materials. Asynchronous: returns a generation id; poll get_generation. Spends credits (refunded automatically on failure). Typical time: 60 s.
| Argument | Type | Description |
|---|---|---|
| model | string | texel-quality (default) or texel-classic. |
| prompt* | string | What to draw. |
| image_url | string | Optional public https reference image (image-to-image). |
| resolution | string | |
| max_credits* | integer | Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing. |
| aspect_ratio | string | e.g. 1:1, 16:9, 9:16. |
| idempotency_key | string | Optional. Same key = same generation, never charged twice. Default: derived from the parameters for 10 minutes; pass a new value to intentionally run the same prompt again. |
| save_to_library | boolean | Optional. When the generation succeeds, publish it in the public 3DTexel community library and add it to the user's library (free). Only if the user asked for it. |
Full details of one asset: description, tags, license, price, whether it can be downloaded through the API and whether the user already owns it.
| Argument | Type | Description |
|---|---|---|
| asset_id* | integer |
{
"type": "object",
"required": [
"asset_id"
],
"properties": {
"asset_id": {
"type": "integer"
}
}
}Credit balance, spending limits of this connection and recent credit movements.
No arguments.
{
"type": "object",
"properties": {}
}Status of a generation: queued, running (with progress and poll_after_seconds), succeeded (with file URLs and license) or failed/canceled (with refund information).
| Argument | Type | Description |
|---|---|---|
| generation_id* | string |
{
"type": "object",
"required": [
"generation_id"
],
"properties": {
"generation_id": {
"type": "string"
}
}
}Credit packs and prices (EUR/USD). Credits never expire.
No arguments.
{
"type": "object",
"properties": {}
}The user's recent API generations.
| Argument | Type | Description |
|---|---|---|
| limit | integer |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1
}
}
}All 3D Texel AI generators: which ones run through this API (with parameters and price examples) and which ones are website-only (with their URL).
No arguments.
{
"type": "object",
"properties": {}
}Assets the user owns (re-download for free).
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| per_page | integer |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1
},
"per_page": {
"type": "integer",
"default": 50
}
}
}Exact credit price of a generation before running it (and the user's balance when connected). Always show this price to the user before generating.
| Argument | Type | Description |
|---|---|---|
| params* | object | |
| generator* | string |
{
"type": "object",
"required": [
"generator",
"params"
],
"properties": {
"params": {
"type": "object"
},
"generator": {
"enum": [
"pbr-material",
"hdri",
"texture",
"3d-model"
],
"type": "string"
}
}
}Publishes a succeeded generation (PBR material, HDRI) in the public 3DTexel community library and adds it to the user's library. Free. Only when the user asks.
| Argument | Type | Description |
|---|---|---|
| generation_id* | string |
{
"type": "object",
"required": [
"generation_id"
],
"properties": {
"generation_id": {
"type": "string"
}
}
}Search 7,000+ assets: free CC0 handmade PBR materials, HDRIs, decals, 3D models, IES, atlases, landscapes, and AI-generated materials, HDRIs/skyboxes, decals, atlases, heightmaps, animations (UE5/Mixamo), 3D models, alpha brushes. Returns id, title, type, license, price in credits (0 = free), thumbnail and page URL.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| type | string | Optional asset type filter. |
| query | string | Keywords, e.g. "mossy stone wall", "sunset skybox", "walk cycle". |
| source | string | handmade = free CC0; ai = community AI assets (credits). |
| per_page | integer |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1
},
"type": {
"enum": [
"pbr",
"hdri",
"3d",
"decal",
"ies",
"atlas",
"landscape",
"premium-3d",
"ai-pbr",
"ai-decal",
"ai-atlas",
"ai-hdri",
"ai-heightmap",
"ai-backdrop",
"ai-motion",
"ai-3d",
"alpha-brush",
"ai-ies"
],
"type": "string",
"description": "Optional asset type filter."
},
"query": {
"type": "string",
"description": "Keywords, e.g. \"mossy stone wall\", \"sunset skybox\", \"walk cycle\"."
},
"source": {
"enum": [
"handmade",
"ai",
"premium"
],
"type": "string",
"description": "handmade = free CC0; ai = community AI assets (credits)."
},
"per_page": {
"type": "integer",
"default": 12,
"maximum": 50,
"minimum": 1
}
}
}| Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing. |
| idempotency_key | string | Optional. Same key = same generation, never charged twice. Default: derived from the parameters for 10 minutes; pass a new value to intentionally run the same prompt again. |
| save_to_library | boolean | Optional. When the generation succeeds, publish it in the public 3DTexel community library and add it to the user's library (free). Only if the user asked for it. |
{
"type": "object",
"required": [
"max_credits"
],
"properties": {
"mesh": {
"enum": [
"20k",
"50k",
"150k",
"500k",
"1m"
],
"type": "string",
"default": "500k",
"description": "texel-3d-alt only: triangle count."
},
"faces": {
"type": "integer",
"maximum": 2000000,
"minimum": 10000,
"description": "texel-3d-pro only: target face count. Omit for automatic (maximum detail)."
},
"model": {
"enum": [
"texel-3d-pro",
"texel-3d-alt",
"texel-3d-express",
"texel-3d-draft"
],
"type": "string",
"default": "texel-3d-pro",
"description": "texel-3d-pro (default, best), texel-3d-alt, texel-3d-express (fast), texel-3d-draft (cheapest, color only)."
},
"object": {
"type": "string",
"maxLength": 60,
"description": "texel-3d-draft only: name of the object to extract (e.g. \"chair\"). Omit on a plain background."
},
"prompt": {
"type": "string",
"maxLength": 1000,
"description": "Object to create, e.g. \"a medieval wooden treasure chest\". Required when no image_url is given."
},
"image_url": {
"type": "string",
"format": "uri",
"description": "Optional https URL of a reference image (one object, plain background works best)."
},
"max_credits": {
"type": "integer",
"minimum": 1,
"description": "Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing."
},
"idempotency_key": {
"type": "string",
"maxLength": 80,
"description": "Optional. Same key = same generation, never charged twice. Default: derived from the parameters for 10 minutes; pass a new value to intentionally run the same prompt again."
},
"save_to_library": {
"type": "boolean",
"default": false,
"description": "Optional. When the generation succeeds, publish it in the public 3DTexel community library and add it to the user's library (free). Only if the user asked for it."
}
}
}| save_to_library | boolean | Optional. When the generation succeeds, publish it in the public 3DTexel community library and add it to the user's library (free). Only if the user asked for it. |
{
"type": "object",
"required": [
"prompt",
"max_credits"
],
"properties": {
"model": {
"enum": [
"texel-quality",
"texel-express",
"texel-classic"
],
"type": "string",
"default": "texel-quality",
"description": "texel-quality = best (1K / 2K / 4K), texel-express = fastest and cheapest (1K only: any other resolution is delivered and charged in 1K), texel-classic = alternative look (1K / 2K / 4K). The 4K is native."
},
"style": {
"enum": [
"realistic",
"stylized"
],
"type": "string",
"default": "realistic"
},
"prompt": {
"type": "string",
"maxLength": 1000,
"description": "Material description, e.g. \"mossy medieval cobblestone, wet\"."
},
"resolution": {
"enum": [
"1k",
"2k",
"4k",
"4k_native"
],
"type": "string",
"default": "4k",
"description": "4k_native is accepted as 4k (the 4K is native). texel-express always runs in 1K."
},
"max_credits": {
"type": "integer",
"minimum": 1,
"description": "Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing."
},
"output_format": {
"enum": [
"png",
"jpeg",
"tga"
],
"type": "string",
"default": "png"
},
"idempotency_key": {
"type": "string",
"maxLength": 80,
"description": "Optional. Same key = same generation, never charged twice. Default: derived from the parameters for 10 minutes; pass a new value to intentionally run the same prompt again."
},
"save_to_library": {
"type": "boolean",
"default": false,
"description": "Optional. When the generation succeeds, publish it in the public 3DTexel community library and add it to the user's library (free). Only if the user asked for it."
}
}
}{
"type": "object",
"required": [
"prompt",
"max_credits"
],
"properties": {
"model": {
"enum": [
"texel-quality",
"texel-classic"
],
"type": "string",
"default": "texel-quality",
"description": "texel-quality (default) or texel-classic."
},
"prompt": {
"type": "string",
"maxLength": 2000,
"description": "What to draw."
},
"image_url": {
"type": "string",
"format": "uri",
"description": "Optional public https reference image (image-to-image)."
},
"resolution": {
"enum": [
"1k",
"2k",
"4k"
],
"type": "string",
"default": "2k"
},
"max_credits": {
"type": "integer",
"minimum": 1,
"description": "Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing."
},
"aspect_ratio": {
"type": "string",
"default": "1:1",
"description": "e.g. 1:1, 16:9, 9:16."
},
"idempotency_key": {
"type": "string",
"maxLength": 80,
"description": "Optional. Same key = same generation, never charged twice. Default: derived from the parameters for 10 minutes; pass a new value to intentionally run the same prompt again."
},
"save_to_library": {
"type": "boolean",
"default": false,
"description": "Optional. When the generation succeeds, publish it in the public 3DTexel community library and add it to the user's library (free). Only if the user asked for it."
}
}
}