Skip to main content
Glama

MCP for Blender

Connect Blender to any LLM

Disclaimer: This is a third-party integration and not made by Blender

Prompt-assisted 3D modeling, scene creation, and manipulation — driven by AI.

PyPI Downloads PyPI Version License: MIT Discord

Website · Full Tutorial · Discord · Sponsor · Buy me a coffee · Feedback

Supporters

CodeRabbit Kevin Guanche Darias

All supporters: Support this project


Quickstart

Three steps: install uv, point your MCP client at the server, install the Blender addon.

1. Install uv

# macOS
brew install uv

# Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Warning: Do not proceed before installing uv. Use the official installer — not pip install uv.

2. Add the MCP server to your client

{
    "mcpServers": {
        "blender": {
            "command": "uvx",
            "args": ["blender-mcp"]
        }
    }
}
claude mcp add blender uvx blender-mcp
codex mcp add blender -- uvx blender-mcp

See MCP Client Setup below for per-client instructions and one-click install buttons.

3. Install the Blender addon

uvx blender-mcp install-addon

Then in Blender: Edit → Preferences → Add-ons → enable Interface: MCP for Blender.

4. Connect

In Blender's 3D viewport, press N → open the MCP for Blender tab → click Start MCP Server. That's it — ask Claude to build something.

Note: Only run one instance of the MCP server (either Cursor or Claude Desktop), not both.


Related MCP server: BlenderMCP

Table of Contents


Features

Two-way communication

Connect Claude AI to Blender through a socket-based server

Object manipulation

Create, modify, and delete 3D objects in Blender

Material control

Apply and modify materials and colors

Scene inspection

Get detailed information about the current Blender scene

Code execution

Run arbitrary Python code in Blender from Claude

Asset & model generation

Poly Haven assets, Sketchfab models, Poly Pizza low-poly models, and AI-generated 3D models via Hyper3D Rodin and Hunyuan3D

Components

The system consists of two main components:

  1. Blender Addon (addon.py) — a Blender addon that creates a socket server within Blender to receive and execute commands

  2. MCP Server (src/blender_mcp/server.py) — a Python server that implements the Model Context Protocol and connects to the Blender addon


Installation

Prerequisites

  • Blender 3.0 or newer

  • Python 3.10 or newer

  • uv package manager

macOS

brew install uv

Windows

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Then add uv to the user path in Windows (you may need to restart Claude Desktop after):

$localBin = "$env:USERPROFILE\.local\bin"
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$userPath;$localBin", "User")

Linux

curl -LsSf https://astral.sh/uv/install.sh | sh

It lands in ~/.local/bin — open a new shell so it's on your PATH.

Otherwise, installation instructions are on their website: Install uv

On every OS, use uv's official installer above — not pip install uv, which may not create the uvx command and can hide uv inside an environment your client can't see.

Warning: Do not proceed before installing uv.

Make your client find uvx

MCP clients started from a GUI (Claude Desktop, Cursor, VS Code from the Dock/Start menu) do not inherit your terminal's PATH, so a bare "command": "uvx" can fail with spawn uvx ENOENT even though uvx works in your terminal. If that happens:

  • Find uvx's full path — which uvx (macOS/Linux) or where uvx (Windows) — and use it as "command", e.g. /opt/homebrew/bin/uvx or C:\Users\<you>\.local\bin\uvx.exe.

  • On Windows you can instead wrap it: "command": "cmd", "args": ["/c", "uvx", "blender-mcp"].

  • After any PATH or config change, fully quit and relaunch the client (Windows: quit from the system tray, not just the window; macOS: Cmd+Q).

Pin the Python version

Avoid conda / pyenv / version conflicts.

uv chooses which Python runs the server. On machines with conda (auto-activated base), pyenv, or asdf — or with a newer CPython release that some dependencies do not have wheels for yet — uv can grab an interpreter that makes installation fail. Pin Python 3.11 and prefer uv-managed interpreters to avoid using whatever is on your PATH:

{
    "mcpServers": {
        "blender": {
            "command": "uvx",
            "args": ["--python", "3.11", "blender-mcp"],
            "env": { "UV_PYTHON_PREFERENCE": "only-managed" }
        }
    }
}

--python 3.11 still satisfies this package's requires-python >=3.10, and UV_PYTHON_PREFERENCE=only-managed keeps uv from selecting conda, pyenv, asdf, or system Python first. (The repo's .python-version is only a hint for contributors and does not affect uvx.)

If a previous failed attempt keeps replaying after a fix, clear the cache:

uv cache clean blender-mcp && uvx --refresh blender-mcp

Install without uv

On locked-down machines you can skip uvx entirely with pipx, then point your client at the installed command:

pipx install blender-mcp
pipx ensurepath          # then restart your shell / client

Use the resulting absolute path as "command" (find it with which blender-mcp / where blender-mcp) and omit args.

Run with Docker

You can run the MCP server in a container instead of installing it. Blender itself still runs on your machine — the container only hosts the MCP server, which connects out to the Blender addon.

Build the image from the repo root:

docker build -t blender-mcp .

Then point your MCP client at it (the -i flag is required — the server talks to the client over stdin/stdout):

{
    "mcpServers": {
        "blender": {
            "command": "docker",
            "args": ["run", "-i", "--rm", "blender-mcp"]
        }
    }
}

The image defaults to BLENDER_HOST=host.docker.internal, which reaches the host's Blender out of the box with Docker Desktop on macOS and Windows.

On Linux, host.docker.internal doesn't exist and the addon only listens on localhost, so use host networking instead:

{
    "mcpServers": {
        "blender": {
            "command": "docker",
            "args": ["run", "-i", "--rm", "--network=host", "-e", "BLENDER_HOST=localhost", "blender-mcp"]
        }
    }
}

To enable safe mode in the container, add "-e", "BLENDER_MCP_SAFE_MODE=1" to args.

Environment Variables

The following environment variables can be used to configure the Blender connection:

Variable

Default

Description

BLENDER_HOST

localhost

Host address for Blender socket server

BLENDER_PORT

9876

Port number for Blender socket server

BLENDER_MCP_SAFE_MODE

off

Set to 1 to validate scripts before they run in Blender (see below)

Example:

export BLENDER_HOST='host.docker.internal'
export BLENDER_PORT=9876

You can also pass the connection as CLI flags, which take precedence over the environment variables. This is handy for running several Blender instances side by side, since each MCP client entry can point at a different port with plain arguments instead of env vars:

uvx blender-mcp --port 9877

In an MCP client config that means a second entry differing only in args:

{
  "mcpServers": {
    "blender": { "command": "uvx", "args": ["blender-mcp"] },
    "blender-b": { "command": "uvx", "args": ["blender-mcp", "--port", "9877"] }
  }
}

Each instance needs its own port set in the Blender addon panel to match.

Note: the addon's socket server has no authentication or encryption, so anyone who can reach that port can run Python inside Blender. Keep it on localhost unless you are on a trusted network, and prefer an SSH tunnel over pointing --host/BLENDER_HOST at a remote machine directly.

Safe mode

By default, the AI can run any Python code in Blender. Set BLENDER_MCP_SAFE_MODE=1 to check every script before it runs and block risky code — things like reading or writing files directly, running other programs, accessing the network, or installing code that keeps running after the script ends. Normal Blender work (modeling, materials, rendering, saving, import/export) still works. Blocked scripts are sent back to the AI with the reason, so it can try again with a corrected version.


MCP Client Setup

Claude for Desktop

Watch the setup instruction video (assuming you have already installed uv)

Go to Claude → Settings → Developer → Edit Config → claude_desktop_config.json and include the following:

{
    "mcpServers": {
        "blender": {
            "command": "uvx",
            "args": [
                "blender-mcp"
            ]
        }
    }
}

Use the Claude Code CLI to add the MCP for Blender server:

claude mcp add blender uvx blender-mcp

Codex

The Codex CLI, desktop app, and IDE extension all share the same config file (~/.codex/config.toml), so setting the server up once covers all three.

Register the server with the Codex CLI:

codex mcp add blender -- uvx blender-mcp

Or add it by hand to ~/.codex/config.toml (or $CODEX_HOME/config.toml):

[mcp_servers.blender]
command = "uvx"
args = ["blender-mcp"]

Or in the Codex desktop app: Settings → MCP servers → Add server → name it blender, pick STDIO, enter uvx blender-mcp as the command, then Save and restart. If the app can't find uvx, use its full path instead — see Make your client find uvx.

Check it registered with codex mcp list — the blender server should show as enabled. The tools become available the next time you start Codex.

To set environment variables (e.g. a non-default Blender host/port), pass --env KEY=VALUE flags to codex mcp add, or add them in the config file:

[mcp_servers.blender]
command = "uvx"
args = ["blender-mcp"]
env = { BLENDER_HOST = "localhost", BLENDER_PORT = "9876" }

Cursor

Install MCP Server

macOS — go to Settings → MCP and paste the following:

  • To use as a global server, use the "add new global MCP server" button and paste

  • To use as a project-specific server, create .cursor/mcp.json in the root of the project and paste

{
    "mcpServers": {
        "blender": {
            "command": "uvx",
            "args": [
                "blender-mcp"
            ]
        }
    }
}

Windows — go to Settings → MCP → Add Server, add a new server with the following settings:

{
    "mcpServers": {
        "blender": {
            "command": "cmd",
            "args": [
                "/c",
                "uvx",
                "blender-mcp"
            ]
        }
    }
}

Cursor setup video

Note: Only run one instance of the MCP server (either on Cursor or Claude Desktop), not both.

Visual Studio Code

Prerequisites: Make sure you have Visual Studio Code installed before proceeding.

Install in VS Code

OpenCode

{
  "mcp": {
    "blender-mcp": {
      "type": "local",
      "command": ["uvx", "blender-mcp"],
      "enabled": true,
      "environment": {
        "BLENDER_HOST": "localhost",
        "BLENDER_PORT": "9876"
      }
    }
  }
}

Antigravity

{
  "mcpServers": {
    "blender-mcp": {
      "command": "uvx",
      "args": ["blender-mcp"],
      "env": {
        "BLENDER_HOST": "localhost",
        "BLENDER_PORT": "9876"
      }
    }
  }
}

Installing the Blender Addon

1. Recommended — from a terminal, run:

uvx blender-mcp install-addon

This copies the addon into your Blender addons folder as blender_mcp.py. It prints where it wrote to, and keeps a .bak of any file it replaces.

Optional: uvx blender-mcp addon-paths lists detected Blender addons folders. Override the destination with BLENDERMCP_ADDONS_DIR=/path/to/scripts/addons.

2. Open Blender

3. Go to Edit → Preferences → Add-ons

4. Enable Interface: MCP for Blender (search "MCP for Blender"). If it doesn't appear yet, click Install… and select the copied blender_mcp.py / addon.py, or restart Blender.

5. Manual alternative — if the command above can't find your Blender install, or you prefer doing it by hand: download addon.py from this repo → in Blender, Edit → Preferences → Add-ons → Install… → select the downloaded addon.py → enable it.

Then open the MCP for Blender tab in Blender's sidebar (press N in the 3D viewport) and click Start MCP Server. See Starting the Connection below.

Upgrading (existing users)

For newcomers, go straight to Quickstart. For existing users, see below.

1. Update the addon file by running:

uvx blender-mcp install-addon
uvx blender-mcp addon-paths   # optional: list detected Blender addons folders

2. In Blender: Preferences → Add-ons → disable and re-enable Interface: MCP for Blender (or restart Blender), then click Start MCP Server again.

3. Delete the MCP server from Claude and add it back again if the server package itself needs a refresh.

Note: the MCP server never modifies your Blender addon files on its own. When it starts, it checks whether the installed addon is behind the bundled copy and logs how to update; install-addon is what actually writes, and it keeps a .bak of the file it replaces. Trajectory capture still works on older loaded addons via an execute_code fallback.


Usage

Starting the Connection

MCP for Blender in the sidebar

  1. In Blender, go to the 3D View sidebar (press N if not visible)

  2. Find the MCP for Blender tab

  3. Turn on the checkboxes you'd like to use (see more under Capabilities below)

  4. Click Connect to Claude

  5. Make sure the MCP server is running in your terminal

Using with Claude

Once the config file has been set on Claude, and the addon is running on Blender, you will see a hammer icon with tools for MCP for Blender.

MCP for Blender in the sidebar

Capabilities

  • Get scene and object information

  • Create, delete and modify shapes

  • Apply or create materials for objects

  • Execute any Python code in Blender

  • Export the scene, the selection or named objects to GLB/FBX for other applications (export_scene)

  • Look up node schemas and the bpy API reference instead of guessing socket order or enum names

  • Download the right models, assets and HDRIs through Poly Haven

  • Search and download models from Sketchfab

  • Search and download low-poly models from Poly Pizza

  • AI generated 3D models through Hyper3D Rodin and Hunyuan3D

Hunyuan3D on Tencent Cloud (Official API mode)

Which Tencent Cloud service the addon must call depends on where your account lives:

Account

Service the addon calls

Region

Sidebar toggle

Mainland (cloud.tencent.com)

AI3D 3.0 (ai3d, version 2025-05-13)

ap-guangzhou

leave International (Pro) account off (default)

International (tencentcloud.com), Hunyuan-to-3D (Professional)

hunyuan, version 2023-09-01, PBR enabled

ap-singapore

tick International (Pro) account

International credentials sent to the mainland endpoint fail with AuthFailure.SignatureFailure or ResourceUnavailable, so tick the toggle when your SecretId/SecretKey come from tencentcloud.com. The toggle sits under Tencent Hunyuan 3D → Official API in the sidebar.

Poly Pizza

Poly Pizza hosts roughly 10,600 free low-poly models, including the rescued Google Poly archive. It is the best source for stylised game assets: every model is a single self-contained .glb, and the geometry is far lighter than Sketchfab's.

  1. Get a free API key at poly.pizza/settings/api

  2. In the 3D View sidebar, tick Use assets from Poly Pizza

  3. Paste the key into the API Key field that appears (or store it permanently under Edit → Preferences → Add-ons → MCP for Blender)

Worked example:

"Search Poly Pizza for a low-poly chair under a CC0 licence and import one at 1 metre tall"

Claude calls search_polypizza_models(query="chair", licence="CC0"), which returns each match with its licence and triangle count, then download_polypizza_model(model_id="...", normalize_size=True, target_size=1.0).

You can also filter by category ("Animals", "Furniture & Decor", "Transport", "Nature", "Buildings", "People & Characters", "Food & Drink", "Weapons", "Clutter", "Objects", "Scenes & Levels", "Other") or ask for animated models only.

Attribution: about 69% of the Poly Pizza catalogue is CC-BY, which requires you to credit the creator wherever the model appears. On import, the ready-formatted credit line is written onto each imported root object as the custom property polypizza_attribution (alongside polypizza_id and polypizza_licence), so it is saved into your .blend and survives the session. Filter with licence="CC0" if you would rather use models that need no credit.

Example Commands

Here are some examples of what you can ask Claude to do:

Prompt

Demo

"Create a low poly scene in a dungeon, with a dragon guarding a pot of gold"

Watch

"Create a beach vibe using HDRIs, textures, and models like rocks and vegetation from Poly Haven"

Watch

Give a reference image, and create a Blender scene out of it

Watch

"Get information about the current scene, and make a threejs sketch from it"

Watch

"Generate a 3D model of a garden gnome through Hyper3D"

"Fill this room with low-poly furniture from Poly Pizza"

"Make this car red and metallic"

"Create a sphere and place it above the cube"

"Make the lighting like a studio"

"Point the camera at the scene, and make it isometric"


Persistent API Credentials

MCP for Blender supports persistent credentials via Blender Add-on Preferences:

Edit → Preferences → Add-ons → MCP for Blender

You can store these values there so they survive Blender restarts:

  • Sketchfab API Key

  • Poly Pizza API Key

  • Hyper3D API Key

  • Hunyuan3D SecretId / SecretKey

  • Hunyuan3D API URL

For headless setups or CI, credentials can also be injected by environment variables:

Variable

BLENDERMCP_SKETCHFAB_API_KEY

BLENDERMCP_POLYPIZZA_API_KEY

BLENDERMCP_HYPER3D_API_KEY

BLENDERMCP_HUNYUAN3D_SECRET_ID

BLENDERMCP_HUNYUAN3D_SECRET_KEY

BLENDERMCP_HUNYUAN3D_API_URL


Troubleshooting

Problem

Fix

Connection issues

Make sure the Blender addon server is running, and the MCP server is configured on Claude. Do not run the uvx command in the terminal. Sometimes the first command won't go through, but after that it starts working.

Timeout errors

Try simplifying your requests or breaking them into smaller steps.

Poly Haven integration

Claude is sometimes erratic with its behaviour.

Poly Pizza download fails with a Cloudflare challenge

static.poly.pizza is behind bot protection and blocks datacenter, VPN and cloud IPs. Your API key is fine - the CDN never sees it. Retry from a normal connection, or download the .glb by hand and use File → Import → glTF 2.0.

Have you tried turning it off and on again?

If you're still having connection errors, try restarting both Claude and the Blender server.

Technical Details

Communication Protocol

The system uses a simple JSON-based protocol over TCP sockets:

  • Commands are sent as JSON objects with a type and optional params

  • Responses are JSON objects with a status and result or message

Limitations & Security Considerations

Warning: The execute_blender_code tool allows running arbitrary Python code in Blender, which can be powerful but potentially dangerous. Use with caution in production environments. ALWAYS save your work before using it.

  • Poly Haven requires downloading models, textures, and HDRI images. If you do not want to use it, please turn it off in the checkbox in Blender.

  • Complex operations might need to be broken down into smaller steps.

Telemetry Control

MCP for Blender collects anonymous usage data to help improve the tool. Telemetry consent is on by default, and you can turn it off in two ways:

1. In Blender — go to Edit → Preferences → Add-ons → MCP for Blender and uncheck the telemetry consent checkbox.

  • With consent (checked, the default): view the TnC for more details on data collected.

2. Environment Variable — completely disable all telemetry by running:

DISABLE_TELEMETRY=true uvx blender-mcp

Or add it to your MCP config:

{
    "mcpServers": {
        "blender": {
            "command": "uvx",
            "args": ["blender-mcp"],
            "env": {
                "DISABLE_TELEMETRY": "true"
            }
        }
    }
}

Telemetry data is not linked to your name or account. It may be used to improve MCP for Blender, for research, and to train AI models.

Full detail on what is collected, and the license you grant by leaving telemetry on, is in TERMS_AND_CONDITIONS.md.


Feedback

We are actively looking for feedback on MCP for Blender. If you have thoughts, share them here.

If you have more detailed feedback, you can schedule a call with us here — we will credit you in the project.

Join the Community

Give feedback, get inspired, and build on top of the MCP: Discord

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Disclaimer

This is a third-party integration and not made by Blender. Made by Siddharth.


Star History

If MCP for Blender is useful to you, consider starring the repo

Available Tools

21 tools
download_polyhaven_assetA

Download and import a Polyhaven asset into Blender.

Parameters:

  • asset_id: The ID of the asset to download

  • asset_type: The type of asset (hdris, textures, models)

  • resolution: The resolution to download (e.g., 1k, 2k, 4k)

  • file_format: Optional file format (e.g., hdr, exr for HDRIs; jpg, png for textures; gltf, fbx for models)

Returns a message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYes
asset_typeYes
resolutionNo1k
file_formatNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It does state that the tool downloads and imports into Blender and returns a success/failure message. However, it does not disclose side effects like modifying the current Blender scene, network requirements, or whether the operation could overwrite existing objects. This is adequate but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a one-sentence purpose, a concise parameter block with examples, and a return-value note. It is front-loaded and every line adds value given the schema has no descriptions. The parameter list is slightly long but justified by the lack of schema documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are covered and the return behavior is stated, which is good for a tool with no output schema. However, the description omits useful context such as where asset_id comes from, whether the import modifies the existing scene, and any dependency on Blender being open. Given no annotations and no output schema, this is a clear gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the parameter list in the description is the primary source of semantic information. It provides meaningful examples and allowed values for asset_type, resolution, and file_format, including asset-type-specific formats. Asset_id is under-specified (only 'The ID of the asset to download'), but the overall parameter documentation compensates well for the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Download and import a Polyhaven asset into Blender.' This clearly distinguishes the tool from siblings like search_polyhaven_assets (searching) and download_sketchfab_model (different source platform). No ambiguity about what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear this is for Polyhaven assets, which implies when to use it versus Sketchfab or Hunyuan tools. However, it does not explicitly state when to prefer this over search_polyhaven_assets or set_texture, nor does it mention preconditions such as needing an asset_id from a prior search. Usage context is present but only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_sketchfab_modelA

Download and import a Sketchfab model by its UID.

Parameters:

  • uid: The unique identifier of the Sketchfab model

Returns a message indicating success or failure. The model must be downloadable and you must have proper access rights.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description only mentions return type (message) and prerequisites. It does not disclose side effects (e.g., scene modification), idempotency, rate limits, or error handling beyond success/failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short and presents action first, then parameter and return. It could group the prerequisite line more efficiently, but overall is well-structured and not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, description covers the basic action and prerequisites but lacks usage guidance and behavioral context, making it minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Coverage is 0%, so description must compensate. However, it merely restates 'uid: The unique identifier of the Sketchfab model' from the schema without adding format, examples, or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it downloads and imports a Sketchfab model by UID, distinguishing it from sibling tools like search_sketchfab_models and download_polyhaven_asset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies prerequisites (model must be downloadable, proper access rights) and return value, but does not explicitly mention when to use this tool over alternatives or that the UID likely comes from search_sketchfab_models.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_blender_codeB

Execute arbitrary Python code in Blender. Make sure to do it step-by-step by breaking it into smaller chunks.

Parameters:

  • code: The Python code to execute

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the burden falls on the description. It does disclose that the tool can run arbitrary Python code, which implies broad power and risk, and the 'step-by-step' warning hints that long or complex executions need caution. However, it does not mention possible destructive scene mutations, absence of undo, execution limits, or error behavior, so the disclosure is only partially complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose. The step-by-step instruction is useful, and the parameter note is simple. The phrase 'step-by-step by breaking it into smaller chunks' is slightly redundant, but overall the text is efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an arbitrary code execution tool with no annotations and no output schema, the description leaves important gaps: there is no indication of what the tool returns, how failures surface, what Python objects are available in scope, or whether the execution mutates the Blender scene permanently. The minimal description does not give an agent enough context to safely and correctly invoke this powerful tool in varied situations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The line 'code: The Python code to execute' adds only marginally more than the schema property title 'Code' and the tool name itself. It does not explain expected code environment details such as whether Blender's bpy module is pre-imported, how results or errors are returned, or whether there are execution limits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action and resource: 'Execute arbitrary Python code in Blender.' The word 'arbitrary' signals this is a general-purpose escape hatch, and no sibling tool has the same role, so an agent can immediately distinguish it from the other scene, asset, and model-generation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to prefer this tool over the many specialized sibling tools. The instruction to break work into smaller chunks is about how to structure execution, not about choosing this tool over alternatives. The only implied guidance is that 'arbitrary' means it can be used for tasks the other tools don't cover, but that is not made explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_hunyuan3d_modelA

Generate 3D asset using Hunyuan3D by providing either text description, image reference, or both for the desired asset, and import the asset into Blender. The 3D asset has built-in materials.

Parameters:

  • text_prompt: (Optional) A short description of the desired model in English/Chinese.

  • input_image_url: (Optional) The local or remote url of the input image. Accepts None if only using text prompt.

Returns:

  • When successful, returns a JSON with job_id (format: "job_xxx") indicating the task is in progress

  • When the job completes, the status will change to "DONE" indicating the model has been imported

  • Returns error message if the operation fails

ParametersJSON Schema
NameRequiredDescriptionDefault
text_promptNo
input_image_urlNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden and does well: it discloses asynchronous job submission via job_id, eventual DONE status meaning the model has been imported, error returns, and built-in materials. Could mention scene impact, but key behavior is covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with front-loaded purpose, a compact Parameters section, and a Returns section. Every sentence adds value with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Provides enough context for a generation-and-import workflow: inputs, async behavior, success condition, and error handling. It does not explicitly point to poll_hunyuan_job_status for status checking, but the job_id and DONE status make the flow inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully compensates by defining text_prompt as an optional short English/Chinese description and input_image_url as an optional local/remote URL that accepts None. It also clarifies the relationship between the two: either text, image, or both.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action, resource, and method: generate a 3D asset using Hunyuan3D from text, image, or both, and import it into Blender. This distinguishes it from sibling generation tools like generate_hyper3d_model_via_text/images and from standalone import tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly indicates when to use the tool (Hunyuan3D generation with auto-import) and how to choose inputs (text, image, or both). It does not explicitly name sibling alternatives or state when-not-to-use, but the context is clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_hyper3d_model_via_imagesA

Generate 3D asset using Hyper3D by giving images of the wanted asset, and import the generated asset into Blender. The 3D asset has built-in materials. The generated model has a normalized size, so re-scaling after generation can be useful.

Parameters:

  • input_image_paths: The absolute paths of input images. Even if only one image is provided, wrap it into a list. Required if Hyper3D Rodin in MAIN_SITE mode.

  • input_image_urls: The URLs of input images. Even if only one image is provided, wrap it into a list. Required if Hyper3D Rodin in FAL_AI mode.

  • bbox_condition: Optional. If given, it has to be a list of ints of length 3. Controls the ratio between [Length, Width, Height] of the model.

Only one of {input_image_paths, input_image_urls} should be given at a time, depending on the Hyper3D Rodin's current mode. Returns a message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_image_pathsNo
input_image_urlsNo
bbox_conditionNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It usefully mentions built-in materials, normalized sizing that may require re-scaling, that the asset is imported into Blender, and that a success/failure message is returned. However, it does not disclose whether generation is asynchronous, whether a job ID is produced, or what side effects occur beyond the import, which could be significant for an agent deciding how to proceed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a clear one-line purpose, a few meaningful behavioral notes, and a bullet-like parameter section. Every sentence adds value without redundancy, and the most important invocation constraints are placed prominently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the key parameters and gives relevant behavioral context, but it does not explain how an agent can determine the current Hyper3D Rodin mode, what image requirements exist, or what the success/failure message contains. Since there is no output schema and sibling polling tools exist, the lack of async/job details leaves some ambiguity for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description fully compensates. It explains that input_image_paths must be absolute paths, that single values must still be wrapped in a list, that the three-element bbox_condition controls Length/Width/Height ratio, and that the two input parameters are mutually exclusive based on the current mode. This is strong parameter-level guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Generate 3D asset using Hyper3D by giving images' and 'import the generated asset into Blender.' It clearly distinguishes itself from the sibling text-based generation tool by emphasizing image input, so an agent can identify when this tool is relevant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete guidance on parameter selection: input_image_paths is for MAIN_SITE mode, input_image_urls is for FAL_AI mode, and exactly one must be provided. It does not explicitly name alternative generation tools or state when not to use this tool, but the image-vs-text distinction is clear enough to infer the primary use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_hyper3d_model_via_textA

Generate 3D asset using Hyper3D by giving description of the desired asset, and import the asset into Blender. The 3D asset has built-in materials. The generated model has a normalized size, so re-scaling after generation can be useful.

Parameters:

  • text_prompt: A short description of the desired model in English.

  • bbox_condition: Optional. If given, it has to be a list of floats of length 3. Controls the ratio between [Length, Width, Height] of the model.

Returns a message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
text_promptYes
bbox_conditionNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by disclosing that the tool imports the asset into Blender, that materials are built-in, that the model size is normalized and may need rescaling, and that it returns a success/failure message. It does not mention whether generation is asynchronous, whether it blocks, or how the imported object can be referenced afterward, but it provides substantial useful behavior context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: purpose and side effect first, then relevant model characteristics, then parameter details, then return value. Every sentence adds information, and there is no redundant restatement of schema fields or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no annotations and no output schema, the description is nearly complete. It covers input semantics, generated asset characteristics, the Blender import side effect, and the return message. Minor gaps are lack of clarification about asynchronous behavior and how the agent can locate or reference the imported asset after success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description's parameter notes are essential. It explains that text_prompt must be a short English description, and that bbox_condition is optional, must be a list of floats of length 3, and controls the Length/Width/Height ratio. This adds meaningful semantic detail beyond the raw schema, though ranges or a more precise ratio explanation would strengthen it further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Generate'), the specific service (Hyper3D), the input mode (description/text), and the side effect (import into Blender). It also adds useful purpose details: built-in materials and normalized size. This clearly distinguishes it from image-based generation like generate_hyper3d_model_via_images, even though that sibling is not named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you have a textual description of a 3D asset and want it generated and imported into Blender. However, it does not explicitly contrast with generate_hyper3d_model_via_images, import_generated_asset, or the other generation tools. No when-not-to-use guidance or alternative selection criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hunyuan3d_statusA

Check if Hunyuan3D integration is enabled in Blender. Returns a message indicating whether Hunyuan3D features are available.

Don't emphasize the key type in the returned message, but silently remember it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose that the tool returns a message about Hunyuan3D feature availability, but it does not explain the message format, the meaning of 'key type,' or any side effects/auth requirements. The instruction to 'silently remember it' is ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and the core purpose is front-loaded. However, the first two sentences are somewhat redundant ('Check if enabled' vs 'Returns message indicating whether available'), and the final sentence about not emphasizing the key type is unclear and may confuse rather than help.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status check with no output schema, the description gives enough to invoke the tool correctly: it checks Hunyuan3D integration and returns an availability message. The incomplete area is the vague 'key type' mention, but the low complexity keeps the gap minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the empty input schema covers 100% of the parameter space. With no params, the description does not need to add param semantics beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Check if Hunyuan3D integration is enabled in Blender.' It also specifies the return value as a message about feature availability. This clearly differentiates it from sibling status tools such as get_hyper3d_status and get_sketchfab_status by naming the Hunyuan3D integration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied from the description: call it when you need to know whether Hunyuan3D is enabled. However, it does not explicitly mention alternatives or provide when-not-to-use guidance, relying on sibling names to distinguish which status tool to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hyper3d_statusA

Check if Hyper3D Rodin integration is enabled in Blender. Returns a message indicating whether Hyper3D Rodin features are available.

Don't emphasize the key type in the returned message, but sliently remember it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It does disclose that the tool returns a status message and includes an unusual instruction about not emphasizing the 'key type' and silently remembering it. However, 'key type' is undefined, and the description does not explicitly confirm the operation is read-only or mention any prerequisites or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are concise and front-loaded with the core purpose and return behavior. The third sentence about the 'key type' is short but confusing, contains a typo ('sliently'), and is not clearly connected to the rest of the description, preventing a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status tool with no output schema, the description gives the essential high-level behavior: it checks integration availability and returns a message. Still, the meaning of 'key type' is unexplained and no guidance is offered about what the agent should do with that remembered information, leaving some context incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema already provides complete parameter information. The description adds no parameter details, but none are needed; this matches the baseline of 4 for tools with no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Check if Hyper3D Rodin integration is enabled'), a specific resource ('in Blender'), and the expected result ('Returns a message indicating whether Hyper3D Rodin features are available'). This clearly distinguishes it from sibling tools like get_sketchfab_status and get_hunyuan3d_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is reasonably clear from the tool name and the phrase 'Hyper3D Rodin integration', and sibling tools imply alternatives for other services. However, there is no explicit guidance about when to prefer this tool over siblings or exclusions, so the usage guidance remains mostly implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_object_infoB

Get detailed information about a specific object in the Blender scene.

Parameters:

  • object_name: The name of the object to get information about

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description is the only source for behavior. 'Get' implies a read-only operation, which is helpful, but there is no disclosure about errors, missing objects, or what 'detailed information' includes. This is adequate but leaves room for surprise.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose, and the parameter note earns its place given the schema's lack of documentation. The parameter list is slightly redundant with the schema, but it does not waste words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool, the description provides the essential calling information and a clear purpose. However, with no output schema, it does not clarify what 'detailed information' returns, leaving an agent without expectations about the response contents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides only the parameter name with no description (0% coverage), but the tool description adds a functional definition: 'object_name: The name of the object to get information about'. This meaningfully clarifies the sole parameter, though it does not address exact-name matching or behavior for nonexistent objects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'detailed information', and the specific scope 'specific object in the Blender scene'. It distinguishes this from scene-level tools like get_scene_info, though it does not explicitly name or contrast siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives. Sibling tools like execute_blender_code or get_scene_info could overlap, but the description provides no exclusions or contextual selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_polyhaven_categoriesA

Get a list of categories for a specific asset type on Polyhaven.

Parameters:

  • asset_type: The type of asset to get categories for (hdris, textures, models, all)

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_typeNohdris

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It accurately signals a read-only operation ('Get a list'), but it does not disclose return format, network dependency, or error behavior. For a simple list operation this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, with the core action front-loaded and a structured parameter list. However, the parameter list partially duplicates the schema, even though it adds the allowed values.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one optional parameter and no output schema, the description covers the main semantic need: what categories are for and the allowed asset types. It lacks an explicit return-format note, but 'list of categories' implies an array of names. Minor gap: no statement about the default when asset_type is omitted, though the schema covers this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description's Parameters section provides the accepted values for asset_type (hdris, textures, models, all), which the schema omits. This adds critical meaning beyond the schema's bare string type and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get a list of categories for a specific asset type on Polyhaven' – a precise verb+resource. This clearly distinguishes it from siblings like search_polyhaven_assets, download_polyhaven_asset, and get_polyhaven_status, which concern asset search, download, and service status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not specify a workflow (e.g., fetch categories before searching assets) or any exclusions. The parameter list is not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_polyhaven_statusA

Check if PolyHaven integration is enabled in Blender. Returns a message indicating whether PolyHaven features are available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states the tool 'returns a message' about feature availability, which implies a read-only status query, but it does not disclose whether it queries Blender state or makes network calls, nor possible errors. The non-mutating nature is inferred from 'Check' rather than stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The primary action is front-loaded, and the return behavior is separated in the second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status check, the description provides the essential purpose and return information. It lacks an explicit statement of the message format or error behavior, and no output schema compensates, so it is not fully specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing to document. The baseline of 4 applies because schema coverage is complete and the description correctly says nothing about parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Check' with the resource 'PolyHaven integration in Blender', making the operation immediately clear. It names PolyHaven, distinguishing it from sibling status tools like get_sketchfab_status and get_hyper3d_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is a capability check but gives no explicit guidance on when to invoke it or when to prefer a sibling status tool. There is no mention of using it before PolyHaven asset operations or an alternative. This is acceptable but relies on inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scene_infoB

Get detailed information about the current Blender scene

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. 'Get' weakly implies a read-only operation, but it does not disclose what 'detailed information' contains, whether it errors under certain conditions, or whether it requires a valid Blender context. It provides very little beyond the tool name itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single clear sentence with no filler or redundancy. The key components—verb, resource, and scope—are all present and front-loaded. Nothing extra needs to be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a zero-parameter tool with no annotations and no output schema, so the description is the only source of behavioral and return-value information. Saying only 'detailed information' leaves the agent uncertain about what fields or values will be returned, making the definition incomplete for a tool that provides scene info.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty, so there are no parameters to document. With a parameter count of 0, the baseline of 4 is appropriate because no parameter meaning needs to be added by the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get') and resource ('current Blender scene'), making the basic purpose understandable. However, 'detailed information' is vague about exactly what scene data is included, and it does not explicitly differentiate from get_object_info, though scene vs. object is an implied distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is implied: use this when you need detailed scene-level information. But there is no guidance on when not to use it, no mention of alternatives like get_object_info, and no prerequisites such as requiring an open Blender scene or active session.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sketchfab_statusA

Check if Sketchfab integration is enabled in Blender. Returns a message indicating whether Sketchfab features are available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral transparency burden. It does communicate a non-mutating status check and a message return, but it does not state whether the check is local-only or queries Sketchfab, nor any side-effect or error behavior. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose and followed by the return behavior. No filler or duplication beyond a mild redundancy between 'enabled' and 'available'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status check with no output schema, the description covers the essential aspects: what is checked and what the caller receives. It could be more specific about the exact structure/form of the returned message, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing for the description to document. The schema already covers 100% of the empty parameter surface, earning the zero-parameter baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') and resource ('Sketchfab integration in Blender'), and clarifies the outcome ('Returns a message indicating whether Sketchfab features are available'). It is unambiguous and distinguishable from sibling status tools for other integrations by naming the exact integration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: an agent would call this when it needs to know whether Sketchfab is available in Blender. However, there is no explicit guidance about when not to use it, nor any comparison with sibling status tools like get_hyper3d_status or get_polyhaven_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_viewport_screenshotA

Capture a screenshot of the current Blender 3D viewport.

Parameters:

  • max_size: Maximum size in pixels for the largest dimension (default: 800)

Returns the screenshot as an Image.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_sizeNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the basic behavior (captures viewport, returns an Image) but does not mention whether the scene is modified, what image format is used, or any viewport/display requirements. For a screenshot tool this is adequate but not deeply transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and well-structured: a one-sentence purpose, a compact parameter definition, and a return note. Every part earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description is nearly complete: it states what it captures, how max_size behaves, and that it returns an Image. Minor missing details like image format or whether overlays are included keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single parameter. It does so effectively by explaining that max_size is 'Maximum size in pixels for the largest dimension' and noting the default. This adds meaning beyond the bare schema property.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific verb and resource: 'Capture a screenshot of the current Blender 3D viewport.' This unambiguously identifies the tool's function and distinguishes it from the generation/status/polyhaven/sketchfab siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource: use this when an image of the current Blender viewport is needed. However, there is no explicit guidance about when not to use it or how it relates to alternatives, though no sibling tool appears to provide the same screenshot capability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_generated_assetA

Import the asset generated by Hyper3D Rodin after the generation task is completed.

Parameters:

  • name: The name of the object in scene

  • task_uuid: For Hyper3D Rodin mode MAIN_SITE: The task_uuid given in the generate model step.

  • request_id: For Hyper3D Rodin mode FAL_AI: The request_id given in the generate model step.

Only give one of {task_uuid, request_id} based on the Hyper3D Rodin Mode! Return if the asset has been imported successfully.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
task_uuidNo
request_idNo

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does the work: it states the prerequisite ('after the generation task is completed'), the mode-dependent parameter behavior, and that it returns a success/failure indicator. However, it does not disclose side effects on the scene, such as whether importing with an existing name replaces or adds an object, nor does it describe error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly structured: one sentence of purpose, a bullet-style parameter list, a prominent mutual-exclusivity warning, and a return statement. Every line adds needed operational information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter tool with no output schema, it covers the prerequisite, parameter meaning, mode-based selection, and return status. Minor gaps remain: the exact return type is not specified ('Return if...' could be read as 'whether' versus 'the asset'), and behavior when neither/both ID fields are supplied is only partially covered by the instruction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% coverage for parameter descriptions, but the tool description fully documents all three parameters: name as the scene object name, task_uuid for MAIN_SITE mode, request_id for FAL_AI mode, plus the critical rule that exactly one of the two IDs should be provided based on mode.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and target: 'Import the asset generated by Hyper3D Rodin after the generation task is completed.' This clearly distinguishes the tool from the sibling import_generated_asset_hunyuan and from polling/status tools, so an agent knows exactly what this tool is for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context: call after the generation task is completed, and choose task_uuid or request_id according to the Hyper3D Rodin mode (MAIN_SITE vs FAL_AI). It stops short of explicitly contrasting with alternative tools such as import_generated_asset_hunyuan, so it does not quite earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_generated_asset_hunyuanA

Import the asset generated by Hunyuan3D after the generation task is completed.

Parameters:

  • name: The name of the object in scene

  • zip_file_url: The zip_file_url given in the generate model step.

Return if the asset has been imported successfully.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
zip_file_urlYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It discloses the timing prerequisite and the return behavior ('Return if the asset has been imported successfully'), and the mutation is implied by 'import'. However, it does not mention failure modes, whether an existing object with the same name is overwritten, or any side effects on the current scene.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the main action, and uses a clear parameter list and return statement. Every sentence contributes; the only minor issue is slight redundancy between 'after the generation task is completed' and the parameter note about the generate step, but overall it is well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema or annotations, the description covers the core purpose, parameters, timing, and return value. It is missing explicit edge-case behavior (e.g., invalid zip_file_url, generation not finished, duplicate names) and does not clarify the exact return format, leaving moderate gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must provide meaning for both parameters, and it does: 'name' is clarified as the scene object name, and 'zip_file_url' is explicitly tied to the generate model step. This adds practical semantics beyond the bare schema titles, though the URL format could be more precise.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Import') and names the exact resource ('asset generated by Hunyuan3D after the generation task is completed'), which clearly distinguishes it from other generation/import tools. However, it does not explicitly contrast itself with the sibling 'import_generated_asset', leaving some ambiguity about which import variant to use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a clear precondition ('after the generation task is completed') and references the 'generate model step' for obtaining zip_file_url, which gives an agent a concrete workflow. It does not explicitly name alternatives or when not to use this tool, but for a focused import tool this is adequate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

poll_hunyuan_job_statusA

Check if the Hunyuan3D generation task is completed.

For Hunyuan3D: Parameters: - job_id: The job_id given in the generate model step.

Returns the generation task status. The task is done if status is "DONE".
The task is in progress if status is "RUN".
If status is "DONE", returns ResultFile3Ds, which is the generated ZIP model path
When the status is "DONE", the response includes a field named ResultFile3Ds that contains the generated ZIP file path of the 3D model in OBJ format.
This is a polling API, so only proceed if the status are finally determined ("DONE" or some failed state).
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of explaining behavior. It discloses the status values DONE and RUN, the ResultFile3Ds field on success, and the generated ZIP/OBJ path. The polling nature and 'only proceed if final' guidance are also transparent, though failure statuses remain vaguely described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is mostly clear and front-loaded, but it repeats the same DONE-result detail twice in slightly different wording ('If status is DONE, returns...' and 'When the status is DONE, the response includes...'). This redundancy weakens an otherwise reasonably sized description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter polling tool with no output schema, the description covers the essential context: the source of job_id, meaningful statuses, and what the successful response contains. It does not enumerate all possible failed states, but 'some failed state' is sufficient for the agent to know when to stop polling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no description coverage for job_id, so the description's explanation that job_id comes from the generate model step adds necessary semantic meaning. It could be stronger by stating whether the parameter is required, but the source and usage are clear enough for a single-parameter polling tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks whether a Hunyuan3D generation task is completed and explains the relevant statuses. It does not explicitly differentiate itself from get_hunyuan3d_status, though the polling-focused wording and name provide some distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It indicates this is a polling API and tells the agent to proceed only when the status is final, which gives useful context. However, it does not describe when to prefer this tool over get_hunyuan3d_status or other status-checking siblings, nor does it state explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

poll_rodin_job_statusA

Check if the Hyper3D Rodin generation task is completed.

For Hyper3D Rodin mode MAIN_SITE: Parameters: - subscription_key: The subscription_key given in the generate model step.

Returns a list of status. The task is done if all status are "Done".
If "Failed" showed up, the generating process failed.
This is a polling API, so only proceed if the status are finally determined ("Done" or "Canceled").

For Hyper3D Rodin mode FAL_AI: Parameters: - request_id: The request_id given in the generate model step.

Returns the generation task status. The task is done if status is "COMPLETED".
The task is in progress if status is "IN_PROGRESS".
If status other than "COMPLETED", "IN_PROGRESS", "IN_QUEUE" showed up, the generating process might be failed.
This is a polling API, so only proceed if the status are finally determined ("COMPLETED" or some failed state).
ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_keyNo
request_idNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that this is a polling API, explains expected status values, final versus in-progress states, and failure conditions. It does not cover error handling or whether the call blocks, but it provides substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well organized with mode sections and bulleted parameters. The purpose is front-loaded, and each status and guideline is relevant. Minor redundancy in the polling warnings is acceptable given the two-mode structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-mode polling tool with no output schema and no annotations, the description covers the main behavioral contract: statuses, final states, and mode-specific inputs. It does not explain how to determine which mode applies or how to handle API errors, but it is largely complete for normal usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage, so the description compensates by explaining that subscription_key belongs to MAIN_SITE and request_id belongs to FAL_AI, and that both come from a previous generate step. It could add format or requiredness details, but it gives enough meaning to choose the right parameter per mode.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'Check if the Hyper3D Rodin generation task is completed.' It also distinguishes the two Rodin modes, but does not explicitly differentiate this polling tool from the sibling get_hyper3d_status, so it stops short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives mode-specific instructions and explicitly states when to proceed based on final statuses ('Done', 'Canceled', 'COMPLETED', or failed states). It does not name alternative tools or when not to use this one, but the polling guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_polyhaven_assetsA

Search for assets on Polyhaven with optional filtering.

Parameters:

  • asset_type: Type of assets to search for (hdris, textures, models, all)

  • categories: Optional comma-separated list of categories to filter by

Returns a list of matching assets with basic information.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_typeNoall
categoriesNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It correctly conveys a read-only search operation and states that it 'Returns a list of matching assets with basic information', which is useful context. However, it does not mention pagination, result limits, required authentication, or that actual asset files are not downloaded by this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose. The parameter list is minimal and useful, and the return statement is a single line. No redundant prose or filler exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with only two optional parameters and no output schema, the description covers the basic call contract. However, 'basic information' is vague about the exact return fields, and it does not tell the agent that valid category values can be obtained from get_polyhaven_categories. These are notable gaps given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does so well by documenting asset_type with its allowed values (hdris, textures, models, all) and categories as an 'optional comma-separated list'. This adds real meaning beyond the bare schema property names and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search for assets on Polyhaven'. Combined with the asset_type values (hdris, textures, models, all), it clearly distinguishes this tool from sibling search tools like search_sketchfab_models and from download/category tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when the agent needs to discover Polyhaven assets, and it mentions optional filtering. However, it does not explicitly contrast with siblings such as get_polyhaven_categories or download_polyhaven_asset, nor does it state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_sketchfab_modelsA

Search for models on Sketchfab with optional filtering.

Parameters:

  • query: Text to search for

  • categories: Optional comma-separated list of categories

  • count: Maximum number of results to return (default 20)

  • downloadable: Whether to include only downloadable models (default True)

Returns a formatted list of matching models.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
categoriesNo
countNo
downloadableNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It mentions that the tool returns a formatted list of matching models, which is helpful, but it does not disclose whether it calls an external API, potential rate limits, pagination behavior, or error conditions. The read-only nature is implied by 'search' but not made explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose, followed by a clean bullet-style parameter list. Every sentence adds value and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The parameter documentation is complete, but the return value is only described as a 'formatted list', which is vague given that no output schema exists. Missing details include what fields each model entry contains, how categories combine, and what happens on errors or empty results. It is adequate for a basic search tool, but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, but the description compensates fully by explaining every parameter: query text, comma-separated categories, maximum result count, and downloadable filtering. This goes well beyond the bare schema definitions and gives the agent actionable meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search for models on Sketchfab') and the resource, making the tool's purpose immediately understandable. It does not explicitly contrast itself with sibling tools, but the verb 'search' naturally distinguishes it from download, preview, and status tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening sentence gives clear context for when to use the tool: to search Sketchfab for models. It does not provide explicit exclusions or alternatives, but the sibling tool names make it evident that this is the search step before downloading or previewing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_textureA

Apply a previously downloaded Polyhaven texture to an object.

Parameters:

  • object_name: Name of the object to apply the texture to

  • texture_id: ID of the Polyhaven texture to apply (must be downloaded first)

Returns a message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYes
texture_idYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It discloses the prerequisite of a prior download and states that the tool returns a success/failure message. However, it does not explain what happens on failure, whether existing textures are replaced, or whether the object must exist, leaving moderate behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the main purpose, and structured cleanly into purpose, parameters, and return behavior. There is no filler or redundant content beyond what is needed given the 0% schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-string-parameter tool, the description covers the essential inputs, the prerequisite, and the return behavior. It could be slightly more complete by noting that the object must exist or that the operation may overwrite the object's current texture, but the core invocation context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully define the parameters. It does exactly that: object_name is the target object and texture_id is the already-downloaded Polyhaven texture ID. This adds the necessary meaning that the bare schema property names omit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb-plus-resource statement: 'Apply a previously downloaded Polyhaven texture to an object.' The 'previously downloaded' qualifier clearly distinguishes this from the sibling download_polyhaven_asset and makes the scope of the tool immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage condition: the texture 'must be downloaded first.' This implies the correct sequence with download_polyhaven_asset, but it does not explicitly name that sibling or state when not to use this tool, so it falls just short of full alternative routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • Addedgenerate_hunyuan3d_model
    • Addedget_hunyuan3d_status
    • Addedimport_generated_asset_hunyuan
    • Addedpoll_hunyuan_job_status
  2. 17 tool updates
    • First observeddownload_polyhaven_asset
    • First observeddownload_sketchfab_model
    • First observedexecute_blender_code
    • First observedgenerate_hyper3d_model_via_images
    • First observedgenerate_hyper3d_model_via_text
    • First observedget_hyper3d_status
    • First observedget_object_info
    • First observedget_polyhaven_categories
    • First observedget_polyhaven_status
    • First observedget_scene_info
    • First observedget_sketchfab_status
    • First observedget_viewport_screenshot
    • First observedimport_generated_asset
    • First observedpoll_rodin_job_status
    • First observedsearch_polyhaven_assets
    • First observedsearch_sketchfab_models
    • First observedset_texture

TDQS

B3.3/5.0

Scored across 21 tools

Disambiguation3/5

The tool set has clear thematic grouping (download, generate, status check, import, poll, search, scene operations), but there is notable overlap within groups. For example, generate_hunyuan3d_model, generate_hyper3d_model_via_images, and generate_hyper3d_model_via_text all generate 3D assets via different methods, which could cause confusion. Similarly, import_generated_asset and import_generated_asset_hunyuan serve similar purposes for different backends. Descriptions help differentiate, but the boundaries are not perfectly distinct.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., download_polyhaven_asset, get_scene_info, search_sketchfab_models), with clear and descriptive names. However, there are minor deviations: execute_blender_code uses 'execute' instead of a more specific verb like 'run', and set_texture is a simple verb_noun without a prefix, slightly breaking the pattern. Overall, the naming is highly consistent and predictable.

Tool Count3/5

With 21 tools, the count is on the higher side for a Blender integration server, bordering on heavy. While the tools cover multiple functionalities (asset downloading, 3D generation, status checks, scene management), it might feel overwhelming or redundant, such as having separate status and polling tools for each backend. A more streamlined set could improve usability without losing core capabilities.

Completeness4/5

The tool surface comprehensively covers the domain of Blender asset management and scene manipulation, including downloading from sources (Polyhaven, Sketchfab), generating 3D assets (Hunyuan3D, Hyper3D), checking statuses, importing assets, polling jobs, searching, and scene info. Minor gaps exist, such as no direct tools for modifying objects or scenes beyond applying textures, but agents can work around this using execute_blender_code. Overall, it supports core workflows effectively.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Connects Blender to Claude AI through the Model Context Protocol, enabling AI-assisted 3D modeling, scene creation, and manipulation through natural language commands.
    17
    2
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Connects Blender to Claude AI through the Model Context Protocol (MCP), enabling prompt-assisted 3D modeling, scene creation, and manipulation.
    17
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Connects Blender to Claude AI through the Model Context Protocol (MCP), enabling prompt-assisted 3D modeling, scene creation, and manipulation directly from Claude.
    17
    MIT