3D Texel

Search/download 7,000+ PBR materials, HDRIs, decals, 3D assets; generate PBR materials and HDRIs.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
74%
Naming quality
99%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'list_generations' description lacks action verbin list_generations
  • LOWTool 'list_credit_packs' description lacks action verbin list_credit_packs

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,652Tokens (tool definitions)
~1.1 KBTypical response size
Significant attention impact (2.07% of 128k context)

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-http

What it can do

Tool inventory

Tools (16)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded16 tools