3D Texel
Search/download 7,000+ PBR materials, HDRIs, decals, 3D assets; generate PBR materials and HDRIs.
Should I use this
Quality & Safety
Findings (2)
- LOWin list_generations
- LOWin list_credit_packs
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"mcp": {
"url": "https://3dtexel.com/wp-json/3dtexel-api/v1/mcp"
}
}
}Remote endpoints
https://3dtexel.com/wp-json/3dtexel-api/v1/mcpstreamable-httpWhat it can do
Tool inventory
Tools (16)
🟢search_assets(query, type, source, page, per_page)
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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Keywords, e.g. \"mossy stone wall\", \"sunset skybox\", \"walk cycle\"."
},
"type": {
"type": "string",
"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"
],
"description": "Optional asset type filter."
},
"source": {
"type": "string",
"enum": [
"handmade",
"ai",
"premium"
],
"description": "handmade = free CC0; ai = community AI assets (credits)."
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 12
}
}
}🟢get_asset(asset_id)
Full details of one asset: description, tags, license, price, whether it can be downloaded through the API and whether the user already owns it.
Input Schema
{
"type": "object",
"properties": {
"asset_id": {
"type": "integer"
}
},
"required": [
"asset_id"
]
}🟢download_asset(asset_id, max_credits, resolution)
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.
Input Schema
{
"type": "object",
"properties": {
"asset_id": {
"type": "integer"
},
"max_credits": {
"type": "integer",
"minimum": 0,
"description": "Highest price the user accepted. Required when the asset is not free."
},
"resolution": {
"type": "string",
"description": "Optional, e.g. 2k, 4k, 8k when the asset offers several."
}
},
"required": [
"asset_id"
]
}🟢list_generators
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).
Input Schema
{
"type": "object",
"properties": {}
}🟢quote_generation(generator, params)
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.
Input Schema
{
"type": "object",
"properties": {
"generator": {
"type": "string",
"enum": [
"pbr-material",
"hdri",
"texture"
]
},
"params": {
"type": "object"
}
},
"required": [
"generator",
"params"
]
}🟢generate_pbr_material(prompt, style, model, resolution, enhance_seamless, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"maxLength": 1000,
"description": "Material description, e.g. \"mossy medieval cobblestone, wet\"."
},
"style": {
"type": "string",
"enum": [
"realistic",
"stylized"
],
"default": "realistic"
},
"model": {
"type": "string",
"enum": [
"texel-quality",
"texel-express",
"texel-classic"
],
"default": "texel-quality",
"description": "texel-quality = best (2K/4K/4K native), texel-express = fastest (2K/4K), texel-classic = alternative look."
},
"resolution": {
"type": "string",
"enum": [
"2k",
"4k",
"4k_native"
],
"default": "4k"
},
"enhance_seamless": {
"type": "boolean",
"default": false,
"description": "Beta: second AI pass that repaints the edges (+5 to +10 credits, about 1 minute longer)."
},
"output_format": {
"type": "string",
"enum": [
"png",
"jpeg",
"tga"
],
"default": "png"
},
"max_credits": {
"type": "integer",
"minimum": 1,
"description": "Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing."
},
"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."
},
"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."
}
},
"required": [
"prompt",
"max_credits"
]
}🟢generate_hdri(prompt, resolution, seed, max_credits, save_to_library, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"maxLength": 1000,
"description": "Scene, e.g. \"golden hour over a misty pine forest, clear sky\"."
},
"resolution": {
"type": "string",
"enum": [
"2k",
"4k",
"8k"
],
"default": "4k",
"description": "2k = 2048x1024, 4k = 4096x2048, 8k = 8192x4096."
},
"seed": {
"type": "integer",
"minimum": 0,
"maximum": 999999,
"description": "Optional, for reproducibility."
},
"max_credits": {
"type": "integer",
"minimum": 1,
"description": "Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing."
},
"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."
},
"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."
}
},
"required": [
"prompt",
"max_credits"
]
}🟢generate_texture(prompt, resolution, model, aspect_ratio, image_url, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"maxLength": 2000,
"description": "What to draw."
},
"resolution": {
"type": "string",
"enum": [
"1k",
"2k",
"4k"
],
"default": "2k"
},
"model": {
"type": "string",
"enum": [
"chatgpt",
"banana2"
],
"default": "chatgpt",
"description": "chatgpt = GPT Image 2 (default), banana2 = Nano Banana 2."
},
"aspect_ratio": {
"type": "string",
"default": "1:1",
"description": "e.g. 1:1, 16:9, 9:16."
},
"image_url": {
"type": "string",
"format": "uri",
"description": "Optional public https reference image (image-to-image)."
},
"max_credits": {
"type": "integer",
"minimum": 1,
"description": "Highest price the user accepted (from quote_generation). The call fails with confirmation_required if missing."
},
"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."
},
"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."
}
},
"required": [
"prompt",
"max_credits"
]
}🟢get_generation(generation_id)
Status of a generation: queued, running (with progress and poll_after_seconds), succeeded (with file URLs and license) or failed/canceled (with refund information).
Input Schema
{
"type": "object",
"properties": {
"generation_id": {
"type": "string"
}
},
"required": [
"generation_id"
]
}🟡save_generation_to_library(generation_id)
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.
Input Schema
{
"type": "object",
"properties": {
"generation_id": {
"type": "string"
}
},
"required": [
"generation_id"
]
}🟢list_generations(limit)
The user's recent API generations.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 10
}
}
}🔴cancel_generation(generation_id)
Cancel a running generation; its credits are refunded.
Input Schema
{
"type": "object",
"properties": {
"generation_id": {
"type": "string"
}
},
"required": [
"generation_id"
]
}🟢get_balance
Credit balance, spending limits of this connection and recent credit movements.
Input Schema
{
"type": "object",
"properties": {}
}🟢list_my_library(page, per_page)
Assets the user owns (re-download for free).
Input Schema
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1
},
"per_page": {
"type": "integer",
"default": 50
}
}
}🟢list_credit_packs
Credit packs and prices (EUR/USD). Credits never expire.
Input Schema
{
"type": "object",
"properties": {}
}🟢create_checkout_link(bundle, currency)
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.
Input Schema
{
"type": "object",
"properties": {
"bundle": {
"type": "string",
"enum": [
"starter",
"popular",
"pro",
"ultra"
]
},
"currency": {
"type": "string",
"enum": [
"eur",
"usd"
],
"default": "eur"
}
},
"required": [
"bundle"
]
}Community
Evidence