Meshy MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Meshy MCP ServerCreate a 3D model of a low-poly tree from text"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Meshy MCP Server
Model Context Protocol (MCP) server for the Meshy AI 3D generation platform. Enables AI agents to create, manage, and download 3D models, textures, images, rigged characters, and animations through natural conversation.
Features
28 tools covering the full Meshy API:
Category | Tools |
3D Generation |
|
Creative Lab |
|
Post-Processing |
|
Rigging & Animation |
|
Conversion |
|
Image Generation |
|
Task Management |
|
Workspace |
|
3D Printing |
|
Account |
|
Key Capabilities
Safe retries (v0.6.3): a create request is never resent after a timeout or server error, so a task is never created and billed twice; status checks retry at the API's suggested interval
Text to 3D: Generate 3D models from text descriptions (preview + refine pipeline)
Image to 3D: Convert single or multiple images into 3D models
Meshy 7.1 (v0.6.0):
ai_model: "meshy-7.1"(andlatest) on text-to-3d, image-to-3d and multi-image-to-3d.geometry_resolution: "standard" | "2k" | "4k"picks the geometry pass (+5 credits for 2k/4k; multi-image supports standard/2k).ultra_modeis deprecatedMeshy 6 Lite (v0.6.0):
ai_model: "meshy-6-lite"— fast, 5-credit mesh (15 textured, 2K textures only) on every generation endpointSmart Topology:
model_type: "smart-topology"withai_model: "meshy-t2"on text-to-3d (new in v0.6.0) and image-to-3d. Clean, part-separated triangle mesh generated directly at 100–15,000 faces (default 4,000) for 5 credits of mesh.meshy-t2.5(v0.6.4) is the newest Smart Topology model, with sharper detail for game assets: 100–30,000 faces (default 15,000), same costMulti-view texture on multi-image (v0.6.0):
texture_image_urls— 1–4 views of the same object drive the texture (Meshy 7.1)8K Textures (v0.5.0):
texture_resolution: "2k" | "4k" | "8k"on image-to-3d, multi-image-to-3d, text-to-3d refine and retexture (8K costs 15 credits vs 10). Replaces the now-deprecatedhd_textureflagMulti-view Retexture (v0.5.0):
multiview_image_urls— 1–4 ordered views of the same object drive the texture instead of a single style reference (requires Meshy 7)Auto-Rigging & Animation: Add skeletons and animations to humanoid characters.
meshy_animatetakes one preset action, up to 10 actions as clips in one file, or a generated motion (v0.6.3);meshy_list_animationsfinds action idsText to Motion (v0.6.3): generate a motion clip from a description (
primeFBX, 10 credits /swiftBVH, 3 credits) and apply it to a rigged characterCreative Lab: One tool — a photo → a finished, print-ready product. 9 products: figure, lamp, keychain (with engraved
name_text), fridge-magnet, vinyl-figure, brick-figure, keycap, and (v0.6.3) fidget-pixel and fidget-collapsible. Runs the whole pipeline and returns only the final 3D model; build options and output format are configurableFormat & Size Utilities:
convert(format conversion incl. 3MF, 1 credit),resize(real-world dimensions, 1 credit),uv_unwrap(clean UV layout for external texturing, 5 credits)2D Image Models:
text_to_image/image_to_imagesupportnano-banana,nano-banana-2,nano-banana-2-lite,nano-banana-2-1,nano-banana-pro,gpt-image-2,gpt-image-2-5-flareandgpt-image-2-5-sunburst, with transparent-background output (remove_background). Image-to-image can edit an earlier result byinput_task_id3D Printability Suite:
analyze_printability— free check (watertight, volume, holes, non-manifold edges, degenerate faces), plus a wall-thickness check for a given printer type and print size (v0.6.3)repair_printability— 10-credit topology repair (.glb / .gltf / .obj / .fbx / .stl) that can also thicken thin wallsprocess_multicolor— 10-credit multi-color 3MF for AMS/MMU printers,realisticorcartoonstyle, with a slicer preset for 9 printer brandsauto_split(v0.6.3) — 10 credits: cut a model into printable parts automatically, by named parts, or by color, with optional connectors
Usage reporting (v0.6.3):
list_usagelists finished API tasks with their credits (Studio / Enterprise teams)Task and model listing (v0.6.3):
list_taskslists tasks of any status from text-to-3d, image-to-3d, multi-image-to-3d, text-to-image and image-to-image by default (passtask_typesfor printing, rigging, animation, motion, post-processing or Creative Lab tasks);list_modelslists finished 3D models of any model-producing type (image-to-3d by default), each with thetask_typeand formats to download. Before 0.6.3,list_tasksqueried every type andlist_modelslisted text-to-3d only; see the CHANGELOG's behavior changesSlicer Integration: Auto-detect 7 installed slicers (OrcaSlicer, Bambu, Creality, Elegoo, Anycubic, PrusaSlicer, Cura; all but Cura open multi-color 3MF) and return launch commands the agent can execute
Smart File Organization: Auto-saves to
meshy_output/with project folders, metadata, and history trackingBuilt-in Workflow Intelligence: Server instructions guide the agent through correct tool chains for each use case
Models & Credits
ai_model is not the same set on every endpoint, and latest does not resolve to the same model everywhere (text, image, multi-image, retexture):
Endpoint | Accepted |
|
|
| Meshy 7.1 |
|
| Meshy 7.1 |
|
| Meshy 7.1 |
|
| Meshy 7 |
Legacy ids still accepted: meshy-7 on generation (deprecated, billed like meshy-7.1) and single-image meshy-t1 (deprecated; use meshy-t2). meshy-5 is retired and no longer accepted.
Generation cost (pricing):
| Mesh only | + 2K/4K texture | + 8K texture |
| 20 | 30 | 35 |
| 20 | 30 | 35 |
| 5 | 15 | — (2K only) |
| 5 | 15 | 20 |
Text-to-3D preview is billed mesh-only; refine adds 10 (15 at 8K). geometry_resolution: "2k" or "4k" (Ultra pass, Meshy 7.1 / latest) adds +5; multi-image supports "2k" only. ultra_mode is deprecated and maps to "2k". model_type: "lowpoly" retires on 2026-10-30: use smart-topology + meshy-t2.
Smart Topology generates directly at target_polycount and skips remeshing: meshy-t2 100–15,000 faces (default 4,000), meshy-t2.5 100–30,000 (default 15,000). Without ai_model, model_type: "smart-topology" uses meshy-t2. Output is triangle-only. For standard models, target_polycount needs should_remesh: true and is overridden by decimation_mode.
Retexture is 10 credits (15 at 8K). Creative Lab is 36 credits per product (6 + 30; lamp is 30 + 6) except keycap, 62 (12 + 50) and fidget-collapsible, 6 (single stage). Images: nano-banana 3, nano-banana-2 6, nano-banana-2-lite 3, nano-banana-2-1 4, nano-banana-pro 9, GPT Image models 9 (text) / 12 (image). Other tools: remesh 5, rig 5, animate 3 per action, text-to-motion 10 (prime) / 3 (swift), convert 1, resize 1, uv-unwrap 5, analyze-printability free, repair-printability 10, multicolor 10, auto-split 10.
Related MCP server: Meshy MCP Server
Prerequisites
Node.js >= 18
A Meshy API key (get one here — requires Pro plan or above)
Installation
Pick whichever fits your workflow — they all produce the same config.
Option 1 · One-Command Install · Recommended
add-mcp auto-detects every AI client on your machine (Cursor, Claude Code, Claude Desktop, Windsurf, Codex, VS Code, Cline, …) and writes the right config to each:
npx add-mcp @meshy-ai/meshy-mcp-server --env MESHY_API_KEY=msy_YOUR_API_KEYAfter it finishes, jump to Activate for your client.
Option 2 · Install by Asking Your AI Agent
Already chatting with Cursor / Claude Code / Codex? Paste this prompt:
Install the Meshy MCP server for me. Docs: https://github.com/meshy-dev/meshy-mcp-server
Use this env var: MESHY_API_KEY=msy_YOUR_API_KEYThe agent will run add-mcp (or write mcp.json directly) and tell you when it's ready. You'll still need the Activate step for your client.
Option 3 · Manual Install
Paste into .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"meshy": {
"command": "npx",
"args": ["-y", "@meshy-ai/meshy-mcp-server"],
"env": { "MESHY_API_KEY": "msy_YOUR_API_KEY" }
}
}
}Windows: replace
"command": "npx"with"command": "cmd"and"args": ["/c", "npx", "-y", "@meshy-ai/meshy-mcp-server"].
claude mcp add-json meshy '{"command":"npx","args":["-y","@meshy-ai/meshy-mcp-server"],"env":{"MESHY_API_KEY":"msy_YOUR_API_KEY"}}'Use Option 1 — add-mcp writes the correct config for each.
Activate After Install
Most clients auto-load the new server, but Cursor and VS Code require a manual toggle:
Client | What to do | Verify |
Cursor | Restart → |
|
Claude Code | Nothing — auto-loads on next message |
|
Claude Desktop | Quit & relaunch the app |
|
Windsurf | Refresh in the Cascade panel's MCP section |
|
VS Code | Run command |
|
Codex | Nothing — auto-loads on next session |
|
Troubleshooting
MESHY_API_KEY environment variable is required— returned by every tool when the key didn't reach the server. Make sure it sits inside an"env": {...}block in yourmcp.json, not inargs. Restart the server after fixing it.spawn npx ENOENT(Windows) — wrap withcmd /c(see Cursor block above).error: unknown option '-y'(Claude Code on Windows) — useclaude mcp add-jsoninstead ofclaude mcp add … -- npx -y ….Cursor doesn't list
meshy— make suremcp.jsonis valid JSON (no trailing commas), then fully restart Cursor.Authentication failed: the Meshy API rejected MESHY_API_KEY (401)— the key is mistyped, revoked or expired. Regenerate at https://www.meshy.ai/developers/keys, update your config and restart the server.
Configuration
Environment Variable | Description | Default |
| Required. Your Meshy API key (starts with | — |
| API base URL |
|
| Transport mode: |
|
| Port for HTTP transport |
|
| Max response size in characters |
|
Development
# Clone and install
git clone https://github.com/meshy-dev/meshy-mcp-server.git
cd meshy-mcp-server
npm ci
# Development with hot reload
npm run dev
# Build
npm run build
# Type check
npm run lint
# Build and run offline mocked-request tests (no API key or credits required)
npm test
# Run
npm startMaintaining a local checkout
See setup, updates, and rollback for running a reviewed local build, pinning package versions, testing model routing without paid API calls, and reconnecting a client safely.
HTTP Transport
For remote access, run in HTTP mode:
TRANSPORT=http PORT=3000 npm startEndpoints:
POST /mcp— MCP protocol endpointGET /health— Health check
License
Available Tools
28 toolsmeshy_analyze_printabilityAnalyze Model PrintabilityA
Check whether a model is printable: watertightness, non-manifold edges, holes, degenerate faces and volume — plus thin walls when printer_type and/or a print size is given (FDM, SLA/resin or full-color). FREE. This is the authoritative answer to "is it printable?".
The finished task (task_type "print-analyze") reports printability.status:
error → meshy_repair_printability (pass this analyze task as input_task_id to reuse its printer and size)
warning → repair is optional
healthy → download the analyzed source task's model (the analyze task has none)
Example: { input_task_id: "abc-123", printer_type: "sla", intended_print_height_mm: 100 }
| Name | Required | Description | Default |
|---|---|---|---|
| model_url | No | Public URL of a .glb / .gltf / .obj / .fbx / .stl model (max 400 MB), or a GLB data URI (max 100 MB). | |
| printer_type | No | Sets the minimum wall: fdm 1.0 mm, sla 0.8 mm, full_color 2.0 mm (fdm when only a size is sent). Without a size: 150 mm tall for GLB / tasks, an STL's own size, else 150 mm longest side. | |
| input_task_id | No | A SUCCEEDED text-to-3d, image-to-3d, multi-image-to-3d, remesh or retexture task on Meshy 6 or newer, or a print-repair task. Wins over model_url. | |
| response_format | No | markdown (default) or json | markdown |
| intended_print_height_mm | No | Print height in mm (1–1000); GLB / input_task_id only. At most one print size. | |
| intended_print_longest_side_mm | No | Print's longest side in mm (1–1000); any format. At most one print size. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the safety profile is covered. Beyond that, the description adds meaningful context: the operation is FREE, it produces an async task (task_type 'print-analyze') whose status field drives next steps, and the analyze task itself carries no model, so a healthy result means downloading the source task's model. It does not explain polling/async completion timing, which keeps this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by the conditional routing as scannable bullets and a compact example call. Every sentence earns its place: the FREE note, the status semantics, and the download caveat all change agent behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and zero required parameters, the description explains the report field the agent must act on (printability.status), its three values and the branch each implies, and where the model comes from after a healthy result. An agent has everything needed to invoke the tool and interpret its outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including enum semantics for printer_type (1.0/0.8/2.0 mm minimum walls) and the size defaults, so the schema does the heavy lifting. The description only restates that thin-wall analysis is added when printer_type and/or a size is supplied, plus a single example object. That is a marginal gain over the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check whether a model is printable') and enumerates exactly what is analyzed: watertightness, non-manifold edges, holes, degenerate faces, volume, and conditional thin-wall checks. It explicitly positions itself as 'the authoritative answer to "is it printable?"', which distinguishes it from the sibling meshy_repair_printability and from the generation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use routing keyed on the reported status: error routes to meshy_repair_printability (with the instruction to pass this analyze task as input_task_id), warning means repair is optional, healthy means download the analyzed source task's model. It names the alternative tool and the exact condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_animateAnimate Rigged 3D CharacterA
Animate a rigged character (rig_task_id). Cost: 3 credits per action. Give exactly ONE of action_id, action_ids or motion_task_id.
meshy_rig already returns walking and running free, as separate files; include their ids in action_ids only to bundle them into one multi-clip file. meshy_download_model (task_type "animation") returns the file URLs.
Example: { rig_task_id: "abc-123", action_ids: [1, 4, 92] }
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | No | One preset action; find ids with meshy_list_animations (free), never guess. | |
| action_ids | No | 1–10 unique preset ids, returned as ONE file with one clip per action, in this order (e.g. for a game-engine state machine). | |
| rig_task_id | Yes | The SUCCEEDED rigging task | |
| post_process | No | Optional post-processing | |
| motion_task_id | No | A SUCCEEDED meshy_text_to_motion task (biped rigs only; within 3 days, before the clip expires). | |
| response_format | No | markdown (default) or json | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), and the description adds genuinely useful context the annotations don't: the 3-credits-per-action cost and the fact that file URLs come from a separate download tool, implying a task-based async flow. It stops short of stating task/polling behavior explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded blocks: core action and cost first, the mode constraint second, then the sibling workflow note and a compact example. No sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% schema description coverage, the description needn't explain return values, and it does supply the key non-schema facts (cost, mutual exclusion, download path). It could be slightly more explicit that the call creates an asynchronous task, but coverage is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema by declaring the mutual exclusion of the three animating inputs and explaining why action_ids bundles clips into one file. The example object reinforces the intended call shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Animate a rigged character (rig_task_id)'. It distinguishes itself from siblings by referencing meshy_rig (which produces the rig) and meshy_download_model (which retrieves files), so an agent can tell what this tool is responsible for without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit either/or constraint ('exactly ONE of action_id, action_ids or motion_task_id') that selects the correct mode, and it clarifies the workflow boundary with meshy_rig (walking/running are already free) and how to retrieve results via meshy_download_model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_auto_splitAuto Split Model into Printable PartsA
Cut a model into separately printable parts: when it is too big for the bed, parts need different colors/materials, or it should be assembled. Cost: 10 credits. The texture is not kept.
There is no bed-size parameter: cuts follow mode and prompt, not your printer, so resize the model to the print size first (meshy_resize) when parts must fit a bed, then check the part sizes and re-split by_parts if one is still too big. Then meshy_download_model (3mf if requested) and meshy_send_to_slicer.
Example: { input_task_id: "abc-123", mode: "by_parts", prompt: "the figure and the base", target_formats: ["3mf"], connectors: true }
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'auto' (default; Meshy picks the cuts), 'by_parts' (the parts named in prompt), or 'by_color' (the color regions named in prompt; image-to-3d / multi-image-to-3d sources only). | |
| layout | No | 'assembled' (default) or 'on_plate' (parts laid flat, ready to slice). | |
| prompt | No | Required for by_parts / by_color: name 1–10 parts, e.g. 'head, torso, arms, legs'; the rest becomes one more part. If unreadable, the task falls back to auto, still charges, and reports prompt_ignored. | |
| connectors | No | Add mortise-and-tenon connectors at each cut so the parts fit together. | |
| input_task_id | Yes | A SUCCEEDED image-to-3d, multi-image-to-3d, text-to-3d preview, remesh, convert or resize task made with meshy-6, meshy-7, meshy-7.1 or latest (not low-poly or Smart Topology). | |
| connector_size | No | Relative to the cut surface (default 0.5). | |
| connector_type | No | Connector shape (default cube). | |
| target_formats | No | Extra formats (glb is always made). 3mf gives separately selectable parts in a slicer; stl fuses them into one solid. | |
| response_format | No | markdown (default) or json | markdown |
| connector_height | No | Relative extension from the cut (default 0.1). |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: cost (10 credits), the fact that texture is not preserved, and the architectural constraint that cuts follow mode/prompt rather than printer geometry. Annotations cover the write/openWorld profile, but the description carries the cost and output-fidelity disclosures the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and motivation in the first sentence, then prerequisite workflow, then a concrete example object. Every line earns its place; no filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool, it covers cost, side effects, prerequisites, downstream steps, and a call example, while an output schema already handles return values. An agent has everything needed to invoke it correctly in the right sequence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds real value by explicitly noting the absence of a bed-size parameter and how mode/prompt jointly determine the cuts, reinforced by a full worked example. It stops short of explaining every connector/layout nuance, which the schema already handles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('cut a model into separately printable parts') and lists the three concrete conditions that motivate it (too big for bed, differing colors/materials, assembly). It is clearly distinguishable from sibling operations like meshy_resize, meshy_remesh, and meshy_convert without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use triggers, plus a before/after workflow: resize first with meshy_resize because there is no bed-size parameter, check part sizes and re-split by_parts, then meshy_download_model and meshy_send_to_slicer. Alternatives and ordering constraints are named directly rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_cancel_taskCancel or Delete TaskADestructive
Cancel a queued task, or delete a finished one. What happens depends on the task:
Creative Lab tasks (task_type "creative-lab-..."):
PENDING → canceled, credits refunded
IN_PROGRESS → canceled, credits NOT refunded
SUCCEEDED / FAILED / CANCELED → cannot be canceled or deleted, even with confirm_delete
Every other task:
PENDING → deleted, credits refunded
IN_PROGRESS → refused: the task keeps running and its credits are not refundable. Wait until it finishes
SUCCEEDED / FAILED / CANCELED → PERMANENTLY deleted with its files, no refund. Requires confirm_delete: true — ask the user first
Returns { success, task_id, task_type, previous_status, message }.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID | |
| task_type | No | Optional: if omitted or wrong, the server finds the task and reports its real type. | |
| confirm_delete | No | true to permanently delete a finished task, only after the user agreed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and non-idempotency; the description goes well beyond that by disclosing refund outcomes per state, that deletion removes files permanently, that terminal Creative Lab tasks cannot be canceled or deleted even with confirm_delete, and the exact response shape. This is exactly the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two-sentence summary, then uses a compact per-type state table. Every line carries a distinct behavioral fact; nothing is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still documents the return object, and it covers the full state machine, refund rules, and confirmation requirement for a destructive 3-parameter tool. An agent has everything needed to call it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that task_type is optional because the server resolves the real type, and it maps confirm_delete to the specific states where it is required and where it is useless. That is genuine semantic value beyond the enum list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair and resource ('Cancel a queued task, or delete a finished one') and immediately distinguishes the two modes. It is clearly separable from siblings like meshy_get_task_status and meshy_list_tasks, which do not mutate task state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use matrix keyed on task_type and status, including when the operation is refused (IN_PROGRESS non-Creative-Lab tasks) and what to do instead ('Wait until it finishes'). It also states the precondition that confirm_delete requires prior user agreement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_check_balanceCheck Credit BalanceARead-onlyIdempotent
Check the Meshy credit balance. Free. For team members it is the team's shared pool.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown (default) or json | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| balance | Yes | Credits available now (usually monthly_credits + permanent_credits; lower when a member or workspace credit limit applies) |
| monthly_credits | No | Credits that expire at the next monthly refresh |
| monthly_resets_at | No | Next monthly refresh (ISO 8601); omitted when none is scheduled |
| permanent_credits | No | Credits that never expire (credit packs, rewards) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description still adds two useful traits not in structured data: calling it consumes no credits ('Free'), and for team members the returned balance is the shared team pool rather than a personal one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero waste, with the core action stated first and the qualifiers after. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the single parameter is fully documented in the schema. What remains missing is only a routing note against the usage-listing sibling, making this near-complete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and schema description coverage is 100% with a documented enum and default, so the schema fully carries this burden. The description adds nothing about response_format, which is the correct baseline-3 outcome here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Check the Meshy credit balance') that an agent can act on directly. It is clear and unambiguous, but it never differentiates itself from the nearby sibling meshy_list_usage, which an agent may reasonably confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Free' implies usage (safe to call repeatedly, e.g. before expensive generations), but no explicit when-to-use, prerequisites, or alternative is named. The team-scope note is contextual rather than a routing rule, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_convertConvert 3D Model FormatA
Convert a model to other file formats. Cost: 1 credit (cheaper than remesh for a format-only change).
Example: { input_task_id: "abc-123", target_formats: ["stl", "3mf"] }
| Name | Required | Description | Default |
|---|---|---|---|
| model_url | No | Public URL of a .glb / .gltf / .obj / .fbx / .stl model (max 400 MB), or a GLB data URI (max 100 MB). | |
| input_task_id | No | A SUCCEEDED task with a model. Wins over model_url. | |
| target_formats | Yes | Formats to produce | |
| response_format | No | markdown (default) or json | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the bar is lower. The description adds genuinely new context the annotations lack: the exact cost (1 credit) and the economic trade-off versus remesh, which matters for agent budgeting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded, cost and the remesh comparison immediately after, then a compact example. Every element earns its place, though the example is mildly redundant given the 100%-covered schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage and an output schema present, the description does not need to enumerate parameters or return values. Purpose, cost, and a call example are sufficient for a conversion tool; only explicit source-precondition guidance is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including the enum values for target_formats and the precedence of input_task_id over model_url. The description adds only a worked example, which is illustrative but not additive semantics beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Convert a model to other file formats") and scopes it as format-only, which implicitly distinguishes it from geometry-altering siblings like meshy_remesh and meshy_retexture. It stops short of naming those siblings directly, so the differentiation is inferable rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"cheaper than remesh for a format-only change" gives an implied when-to-use signal by contrast with meshy_remesh, but there is no explicit when-not guidance, no prerequisites (e.g. that the source must be a SUCCEEDED task or a public URL), and no routing to alternatives for other transformation needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_creative_labCreative Lab — Make a Product (end-to-end)A
Turn a photo (file_path or image_url; no text prompt) into a finished Creative Lab product 3D model, end to end.
Products and cost — confirm before calling:
figure (chibi), vinyl-figure, brick-figure, keychain, fridge-magnet, fidget-pixel (pixel-art board of interlocking pieces) → 36 credits (6 + 30)
lamp (3D-printable lampshade with base plate) → 36 (30 + 6)
keycap (Cherry MX 1u) → 62 (12 + 50)
fidget-collapsible (nested-ring fidget from the photo's outline) → 6, one stage
Most products run a concept prototype, then a 3D build. One call runs both, blocks while they run (typically 2–5 minutes, with progress) and returns only the final model; the concept image is internal and never shown. If the prototype does not succeed, the build is NOT started: a FAILED stage is refunded; one still running when the wait ends keeps running and is charged.
Outputs: GLB (or output_format) for figures, keychain and fridge-magnet; lamp_stl (+ base_stl with a fixture preset); keycap a model; fidget-pixel a 3MF with one object per piece; fidget-collapsible STL + GLB. Download with meshy_download_model and the task_type this tool reports; omit format to save every part. To multicolor-print it, pass its GLB URL (or a GLB data URI) to meshy_process_multicolor as model_url; its task id is not accepted there.
Examples:
{ product: "keychain", file_path: "/Users/me/dog.jpg", name_text: "Biscuit", build_options: { badge_shape: "star" } }
{ product: "fidget-pixel", file_path: "/Users/me/cat.jpg", pixel_subject: "other", build_options: { grid_size: 16 } }
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Display name for the task; not engraved (see name_text). | |
| product | Yes | The product (see the tool description for costs). | |
| file_path | No | Absolute path to a local photo; the server encodes it. | |
| image_url | No | Public URL or data URI of the photo (.jpg/.jpeg/.png/.webp). For local files use file_path. | |
| name_text | No | Keychain only: text to engrave, ≤10 characters (CJK count one each). | |
| base_model | No | Keycap only: base profile (Cherry MX 1u). | |
| head_size_mm | No | Keycap only: the head's LONGEST edge in mm (default 23), not its height. | |
| build_options | No | Build options (the API checks ranges). Keychain / fridge-magnet: badge_shape (circle|rounded-rect|hexagon|shield|star), size_mm, relief_height_mm, relief_offset_mm, base_thickness_mm, has_closed_back, relief_curve (linear|gamma|s-curve), curve_param, invert_depth, smoothing, relief_scale, depth_threshold, remove_background, export_resolution. Lamp: diameter_mm (50–400), thickness_mm, cut_amount_percent, light_source_preset (bambu_mh001_60mm|none), fixture_offset_x_mm, fixture_offset_z_mm, rotate_x_deg, rotate_y_deg, rotate_z_deg, include_result_json. Fidget pixel: shape (square|hex), grid_size (16|32), piece_size_mm (6|8|10; hex 6|8), color_count (1–8), piece_height_mm (10–80). Other products take none. | |
| image_subject | No | Lamp only: what the photo shows. | |
| output_format | No | Keychain / fridge-magnet: glb (default), obj (zip of OBJ + MTL + texture) or zip (everything). Lamp: stl (default) or zip. Fidget pixel: 3mf. Others: none. | |
| pixel_subject | No | fidget-pixel only, REQUIRED: 'person' → chibi pixel sprite; 'other' (pets, objects, logos, landscapes) → bead-art icon. | |
| response_format | No | markdown (default) or json | markdown |
| timeout_seconds | No | Max wait per stage in seconds; a longer stage keeps running (check it with meshy_get_task_status). | |
| vertical_offset_mm | No | Keycap only: raise (+) or lower (-) the head on the base, in mm (default 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (non-readonly, non-idempotent, non-destructive), and the description adds much more: the call blocks for 2–5 minutes per stage with progress, returns only the final model, never surfaces the concept image, refunds FAILED stages, and charges still-running stages after timeout. The multicolor handoff constraint (task id not accepted) is a genuinely useful operational disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then organized into scannable labeled sections (Products and cost, Outputs, Examples). It is long, but for a 14-parameter tool with nine product variants and an internal multi-stage pipeline, nearly every line carries load; only the outputs paragraph is borderline verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden itself by enumerating output artifacts per product (GLB, lamp_stl/base_stl, 3MF, STL+GLB) and naming the download path. Combined with timeout semantics and the multicolor follow-on, an agent has everything needed to call and chain this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description goes further by attaching credit costs to each product enum value and clarifying product-specific parameter scoping (name_text keychain-only ≤10 chars, base_model keycap-only, pixel_subject required for fidget-pixel). The worked examples also demonstrate non-obvious parameter combinations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Turn a photo into a finished Creative Lab product 3D model, end to end' — and immediately establishes scope (photo input only, no text prompt). The product enum list with per-product descriptions makes its distinctness from generic siblings like meshy_image_to_3d obvious to an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong routing guidance: 'confirm before calling' on cost, pass the reported task_type to meshy_download_model, and use meshy_process_multicolor with the GLB URL (explicitly noting the task id is not accepted). It does not, however, explicitly compare itself against the alternative generation tools (meshy_image_to_3d etc.), leaving the 'why this over that' inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_download_modelDownload Model or ImageAIdempotent
Save a finished task's output under meshy_output/ (project folders with history), or at save_to.
3D tasks: ONE model format — ask the user which first (GLB viewing, OBJ white-model printing, 3MF multicolor printing, FBX game engines, USDZ AR, BLEND Blender); never download all. A format exists only if it was generated: 3mf needs target_formats ["3mf"] at creation, meshy_convert or meshy_process_multicolor.
Creative Lab: omit format to save every part.
Images and text-to-motion clips save their own files and ignore format.
Rigging and animation tasks are not saved: they return their file URLs. If a download fails, its URL is returned instead.
Example (print): { task_id: "abc-123", format: "obj", print_ready: true, print_height_mm: 100 }
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Model format (default glb; omit for every Creative Lab part). | |
| save_to | No | Absolute file path to save to instead of meshy_output/{timestamp}_{prompt}_{id}/ | |
| task_id | Yes | Task ID | |
| task_type | No | Optional: if omitted or wrong, the server finds the task and reports its real type. | |
| print_ready | No | OBJ only: rotate Y-up to Z-up, scale to print_height_mm, center, bottom at Z=0. Changes only the local file (free); meshy_resize (1 credit) rescales the model on Meshy. | |
| parent_task_id | No | Earlier task of the same chain (e.g. the preview of a refine); saves into its project folder. | |
| print_height_mm | No | Height in mm with print_ready (default 75; '15 cm' → 150). | |
| include_textures | No | Also save the texture maps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare idempotent/non-destructive/openWorld, but the description adds substantial behavioral context: that files land on local disk, that a format only exists if generated at creation time (3mf prerequisites), and that a failed download returns the URL instead of erroring. These are non-obvious traits an agent could not infer from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and destination, then organized into scannable bullets grouped by task type, closing with a concrete example call. Every sentence carries operational information; nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema, the description covers destination behavior, format prerequisites, per-task-type exceptions, failure handling, and includes a worked example. An agent has everything needed to invoke it correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description genuinely adds meaning beyond the schema: it explains the format selection trade-off (never download all), the conditional relevance of format per task type, and the difference between print_ready's free local transform versus meshy_resize's credit-consuming server rescale.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Save a finished task's output') and names the exact destination semantics (meshy_output/ with project folders, or save_to). It clearly distinguishes itself from siblings like meshy_convert, meshy_resize, and the generation tools by being the terminal save step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use rules per task class: 3D tasks require choosing ONE format (with a mapped rationale per format), Creative Lab omits format, images/motion clips ignore format, and rigging/animation tasks are not saved at all. It even instructs the agent to ask the user before downloading, which is actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_get_task_statusGet Task StatusARead-onlyIdempotent
Wait for a task to finish (wait=true, default) or check it once (wait=false). Reports the task's real task_type; pass it to the download and cancel tools.
wait=true polls at the API's suggested interval (else 5s→30s backoff) until SUCCEEDED / FAILED / CANCELED or timeout_seconds runs out; a failed status check (timeout, 429, 5xx) is retried at the next poll. Running out of time returns outcome "TIMEOUT": the task keeps running on Meshy — call again with the same task_id (Meshy advises allowing up to 60 minutes from creation).
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | true (default): poll until it finishes; false: return the current status. | |
| task_id | Yes | Task ID | |
| task_type | No | Optional: if omitted or wrong, the server finds the task and reports its real type. | |
| response_format | No | markdown (default) or json | markdown |
| timeout_seconds | No | Max wait for this call when wait=true; the task keeps running after it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Rigging, animation and text-to-motion file URLs |
| status | Yes | |
| outcome | Yes | Outcome of this call; TIMEOUT means the wait ended, not the task |
| task_id | Yes | |
| progress | Yes | 0–100 |
| task_type | No | The task's actual type (pass it as task_type to the download and cancel tools) |
| error_code | No | e.g. image_too_complex |
| error_type | No | Failure category if the task failed: invalid_input (fix the input), timeout / service_unavailable / server_error (refunded; create it again) |
| face_count | No | |
| image_urls | No | |
| model_urls | No | |
| part_count | No | Auto Split: number of parts |
| poll_count | No | |
| printability | No | print-analyze result: status, issue counts, metrics, thin walls |
| vertex_count | No | |
| error_doc_url | No | Resolution guide for error_code |
| error_message | No | |
| thumbnail_url | No | |
| prompt_ignored | No | Auto Split: the prompt was unreadable, so the cuts were chosen automatically |
| consumed_credits | No | Credits consumed by the task (0 for FAILED — credits are refunded on failure) |
| wait_time_seconds | No | |
| alpha_thumbnail_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantial behavior beyond them: polling at the API's suggested interval with 5s→30s backoff, retry of failed status checks (timeout, 429, 5xx) at the next poll, the TIMEOUT outcome, and the fact that the task keeps running server-side with Meshy advising up to 60 minutes. This is exactly the extra context the annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense paragraphs, front-loaded with the wait=true/false distinction before the polling mechanics. Every sentence carries operational information, though the polling detail is fairly heavy for a definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-format details are unnecessary, and the description still covers the mode switch, polling/timeout semantics, and the recommended follow-up tools. Nothing needed to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description goes further by clarifying that task_type is advisory only (if omitted or wrong the server finds the real type), and that timeout_seconds bounds only this call, not the underlying task. It adds real meaning about parameter behavior rather than restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — wait for / check a task's status — and immediately distinguishes the two modes (wait=true default vs wait=false single check). It also notes it reports the real task_type, which separates it from siblings like meshy_list_tasks and meshy_cancel_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear conditions for each mode (poll until finish vs one-shot check) and routes the agent onward by telling it to pass the returned task_type to the download and cancel tools. It does not explicitly contrast itself with meshy_list_tasks for bulk status inspection, so the alternative-selection guidance is not fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_image_to_3dGenerate 3D Model from ImageA
Generate a 3D model from one image, textured by default (no refine step; should_texture false for a bare mesh). Typically 2–3 minutes. Cost: meshy-7.1 / latest / meshy-6 20 mesh only, 30 textured, 35 at 8K; meshy-6-lite 5 / 15; meshy-t2 / meshy-t2.5 5 / 15 / 20 at 8K; Ultra geometry +5.
IMAGE INPUT (exactly ONE):
file_path: a local image (RECOMMENDED; never base64-encode it yourself)
image_url: a public URL
input_task_id: a SUCCEEDED meshy_text_to_image / meshy_image_to_image task with ONE image (multi-view output → meshy_multi_image_to_3d)
Example: { file_path: "/path/to/character.png", pose_mode: "t-pose" }
| Name | Required | Description | Default |
|---|---|---|---|
| ai_model | No | 'latest' (default, = Meshy 7.1) or 'meshy-7.1' (best), 'meshy-6', 'meshy-6-lite' (fast, cheap, 2K textures only); 'meshy-7' is deprecated. With model_type smart-topology: 'meshy-t2' (the default there) or 'meshy-t2.5' (newest, sharper detail for game assets); 'meshy-t1' is deprecated. | |
| topology | No | quad or triangle (default). | |
| auto_size | No | AI-estimate the real-world height and resize to it (default false). | |
| file_path | No | Absolute path to a local .jpg/.jpeg/.png/.webp; the server encodes it. | |
| image_url | No | Public image URL. For local files use file_path. | |
| origin_at | No | 'bottom' or 'center' (default bottom with auto_size). | |
| pose_mode | No | 'a-pose' or 't-pose'; use 't-pose' when the model will be rigged or animated. | |
| enable_pbr | No | Also make metallic/roughness/normal maps. | |
| hd_texture | No | Deprecated: use texture_resolution '4k'. | |
| model_type | No | standard (default); smart-topology (ai_model meshy-t2 or meshy-t2.5): a clean, part-separated, triangle-only mesh made directly at target_polycount, ignoring remesh/decimation; lowpoly is deprecated (billed like meshy-6, retires 2026-10-30). | |
| ultra_mode | No | Deprecated: use geometry_resolution '2k'. | |
| input_task_id | No | A SUCCEEDED text-to-image / image-to-image task with exactly one image, used as the input. | |
| should_remesh | No | Remesh to target_polycount / topology (default false). | |
| symmetry_mode | No | Deprecated: has no effect. | |
| should_texture | No | Generate textures (default true); false gives a cheaper untextured mesh. | |
| target_formats | No | Formats to produce (default: all but 3mf; list '3mf' to get it). Fewer formats finish faster. | |
| texture_prompt | No | Text to guide texturing (max 800 characters). | |
| alpha_thumbnail | No | Also return a transparent-background preview (alpha_thumbnail_url). | |
| decimation_mode | No | Adaptive decimation 1 (ultra) – 4 (low); overrides target_polycount. | |
| remove_lighting | No | Remove highlights/shadows from the base color (meshy-6 only; API default true there). | |
| response_format | No | markdown (default) or json | markdown |
| target_polycount | No | Standard: remesh target 100–300,000, needs should_remesh true. Smart Topology: meshy-t2 100–15,000 (default 4,000), meshy-t2.5 100–30,000 (default 15,000). | |
| image_enhancement | No | Optimize the input image (meshy-6/7.1/latest); false keeps deliberate styling. | |
| texture_image_url | No | Image URL to guide texturing. | |
| texture_resolution | No | Base color texture: 2k (default), 4k or 8k (+5 credits; PBR maps stay 4K, no emission map). 4k/8k not on meshy-6-lite. | |
| geometry_resolution | No | Ultra geometry pass: standard (default), 2k or 4k (finest); meshy-7.1/latest with model_type standard only, +5 credits. | |
| multi_view_thumbnails | No | Also return front/back/left/right thumbnails. | |
| save_pre_remeshed_model | No | Also keep the GLB from before remeshing (with should_remesh). |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only mark it non-read-only/non-idempotent) by disclosing runtime (~2–3 minutes), per-model credit costs and the Ultra +5 surcharge, default texturing behavior, and model-specific limits like 2K-only textures on meshy-6-lite. These cost/latency/default facts are exactly what an agent needs before committing to a paid, slow operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then cost, then input constraints, then an example — a sensible priority order for a 28-parameter tool. It is dense but every block earns its place; the only slack is the parenthetical repetition of default-vs-bare-mesh behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (so return values need not be described) and annotations cover the safety profile, the description supplies the remaining gaps: latency, pricing, input exclusivity, defaults, and deprecation warnings. An agent has everything required to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a constraint that is not encoded structurally: that exactly ONE image input must be supplied, plus a concrete invocation example. It does not re-explain most parameters, which is appropriate when the schema already carries them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Generate a 3D model from one image') and immediately scopes it against siblings by naming the multi-view alternative (meshy_multi_image_to_3d) for multi-image inputs. An agent can distinguish this from meshy_text_to_3d and meshy_multi_image_to_3d without reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'IMAGE INPUT (exactly ONE)' block tells the agent which input modes exist and explicitly recommends file_path over self-encoded base64, plus routes multi-view output to a named sibling. It falls short of 5 because it never states when to prefer this tool over meshy_text_to_3d or when a refine step is warranted beyond the inline note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_image_to_imageTransform Image using AIA
Edit or restyle images with a text prompt. Cost: nano-banana 3, nano-banana-2 6, nano-banana-2-lite 3, nano-banana-2-1 4, nano-banana-pro 9, GPT Image models 12 credits. Give exactly ONE reference source: input_task_id (all images of an earlier image task), reference_file_paths (local files; never base64-encode them yourself) or reference_image_urls.
To make the result 3D: meshy_image_to_3d with input_task_id = this task (multi-view output: meshy_multi_image_to_3d).
Example: { ai_model: "nano-banana-2", prompt: "make it red", input_task_id: "abc-123" }
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Text description | |
| ai_model | Yes | Image model; ask the user. | |
| aspect_ratio | No | Default '1:1'; '3:2' and '2:3' are GPT Image models only. Not with generate_multi_view. | |
| input_task_id | No | A SUCCEEDED text-to-image / image-to-image task; all its images are the references. Wins over the other sources. | |
| response_format | No | markdown (default) or json | markdown |
| remove_background | No | Transparent-background PNG (no effect on multi-view output). | |
| generate_multi_view | No | Front/side/back views (input for meshy_multi_image_to_3d). Not with aspect_ratio. | |
| reference_file_paths | No | 1–5 absolute paths to local images; the server encodes them | |
| reference_image_urls | No | 1–5 public .jpg/.jpeg/.png/.webp URLs |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the read/write/idempotency profile; the description adds genuinely new operational context: a per-model credit cost table, a precedence rule ('Wins over the other sources'), an exclusivity constraint, and a safety instruction never to base64-encode files yourself. These are exactly the traits annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then cost, then the reference-source constraint, then the 3D pointer, then an example. Dense but every sentence carries a distinct actionable fact with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation. For a 9-parameter tool with model selection, cost, and source-exclusivity rules, the description supplies everything an agent needs to construct a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so 3 is the floor, but the description adds meaning the schema cannot encode: the cross-parameter exclusivity of the three reference sources, the precedence of input_task_id, the per-value cost of each ai_model, and the file-handling instruction for reference_file_paths.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Edit or restyle images with a text prompt') and implicitly separates itself from the generation sibling meshy_text_to_image. It also names the downstream sibling meshy_image_to_3d and its multi-view variant, so an agent can place the tool in the pipeline without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to give exactly ONE reference source and enumerates the three mutually exclusive options with their differences (task id vs local files vs URLs). It also gives the routing rule for 3D follow-up work and closes with a concrete invocation example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_list_animationsFind Animation ActionsARead-onlyIdempotent
Look up preset animations: the action ids meshy_animate takes. Free. Filters combine; with none the whole (long) library comes back, so prefer search or category.
Returns [{ action_id, name, key, category, sub_category, preview_url }]; preview_url is an animated GIF.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Case-insensitive substring of the animation name or key, e.g. 'walk', 'punch', 'dance'. | |
| category | No | Only this category. | |
| action_ids | No | Resolve these ids (up to 200); ids that no longer exist are simply absent. | |
| sub_category | No | Only this sub-category, e.g. 'AttackingwithWeapon'. Names repeat across categories, so pair it with category to be exact. | |
| response_format | No | markdown (default) or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely new behavior: the operation is free, an unfiltered call returns a very long result set, and it documents the return shape including that preview_url is an animated GIF. Only the flag of 'ids that no longer exist are simply absent' (in schema) and pagination behavior are unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with zero filler; the identity and cost are front-loaded, the filtering caveat second, and the return shape last. Every sentence earns its place, especially the return-shape line since there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers identity, cost, interaction with the sibling that consumes the ids, filter behavior, and the return fields despite no output schema. Nothing an agent needs to invoke this safely and correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema cannot: filters combine, and omitting them all returns the entire library. That materially changes how an agent should construct the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Look up preset animations') tied to a named sibling: 'the action ids meshy_animate takes'. An agent immediately knows this is the lookup companion to meshy_animate and can distinguish it from the other listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage guidance: 'Filters combine; with none the whole (long) library comes back, so prefer search or category.' It steers the caller toward filtered queries and discloses cost ('Free'). It stops short of explicit when-not/alternative routing, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_list_modelsList Finished 3D ModelsARead-onlyIdempotent
List your finished 3D models (not AI models), newest first, each with its task_id, task_type and formats ready for meshy_download_model. Queries only image-to-3d by default (one request); pass task_types to widen. meshy_list_tasks lists tasks of any status instead, images included.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1–100 | |
| filter | No | Deprecated; ignored. | |
| offset | No | Results to skip | |
| task_types | No | Model task types to list (default ["image-to-3d"], one request). Pass several, e.g. ["text-to-3d", "image-to-3d", "multi-image-to-3d"], to widen; each type is one more request. | |
| workspace_id | No | Deprecated; ignored. | |
| response_format | No | markdown (default) or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely useful behavioral context beyond that: newest-first ordering, the fields returned (task_id, task_type, formats), and the request-cost implication that each task_type is 'one more request.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then the default/widening behavior, then the sibling disambiguation. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by naming the returned fields and their downstream use (ready for meshy_download_model). Routing, defaults, and pagination (in schema) are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds contextual meaning: the image-to-3d default and the request-cost consequence of widening task_types. It slightly exceeds the schema text by tying the parameter to an operational cost model.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (finished 3D models), adds scope clarification ('not AI models'), and distinguishes itself from meshy_list_tasks by name. An agent can route between the two list tools without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative (meshy_list_tasks) and the condition that selects it ('tasks of any status instead, images included'). Also states the default query behavior and how to widen it via task_types, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_list_tasksList Generation TasksARead-onlyIdempotent
List tasks of any status, newest first by default, merged across the types queried (one request per type). Default: text-to-3d, image-to-3d, multi-image-to-3d, text-to-image and image-to-image; pass task_type / task_types for printing, rigging, animation, motion, post-processing or Creative Lab tasks. With a task_id in hand, use meshy_get_task_status instead. Tasks created through the API do not appear in the Meshy web app.
status and phase filter the fetched tasks, so a page can be shorter than limit; continue with next_offset while has_more. Types whose request failed are listed in failed_types. For finished 3D models only, meshy_list_models is cheaper.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page, 1–100 | |
| phase | No | Only tasks in this phase | |
| offset | No | Results to skip | |
| status | No | Only tasks with this status | |
| sort_by | No | '-created_at' newest first (default) or '+created_at' | -created_at |
| task_type | No | One task type to list (same names as meshy_get_task_status). | |
| task_types | No | Task types to list, merged with task_type. Default: text-to-3d, image-to-3d, multi-image-to-3d, text-to-image, image-to-image. | |
| response_format | No | markdown (default) or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/openWorld, and the description adds substantive behavior beyond them: filtering happens after fetch so pages can be shorter than limit, iteration via next_offset/has_more, per-type requests meaning partially failed queries surface in failed_types, and the cross-surface caveat that API-created tasks never appear in the web app.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the default behavior and type coverage, then routes alternatives and pagination caveats. Dense but every sentence carries information; the enum-heavy schema not the prose is where the bulk lies, so the description itself is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description names the key return fields an agent needs (failed_types, has_more, next_offset) and explains the pagination caveat for a list tool with 8 params. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: task_type names are the same as meshy_get_task_status, and task_types is merged with task_type with a documented default set. It stops short of clarifying the interaction between status/phase and limit beyond the pagination note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List tasks') plus scope ('any status', 'merged across the types queried', 'newest first by default'). It explicitly contrasts itself with meshy_get_task_status and meshy_list_models, so an agent can distinguish it from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two alternatives with the exact conditions that select them: 'With a task_id in hand, use meshy_get_task_status instead' and 'For finished 3D models only, meshy_list_models is cheaper.' It also documents the default type set and how to reach rigging/animation/print/Creative Lab tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_list_usageList API Usage RecordsARead-onlyIdempotent
List the team's finished API tasks with the credits each consumed, newest first. Free. Use it to break down spend per endpoint or API key. Only for API keys on a Studio or Enterprise team (others get 403).
Covers SUCCEEDED and FAILED tasks (FAILED ones are refunded, so they show 0); a task still running is not listed yet. Without start_time / end_time it covers the last 30 days.
Returns { records: [{ task_id, endpoint, status, created_at, finished_at, consumed_credits, api_key_name, api_key_suffix }], page_num, page_size, has_more }
Example (September image-to-3d spend): { start_time: "2026-09-01T00:00:00Z", end_time: "2026-10-01T00:00:00Z", endpoints: ["image-to-3d"], page_size: 100 }
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Only tasks with this final status. Omit for both. | |
| sort_by | No | '-created_at' newest first (default) or '+created_at' | -created_at |
| end_time | No | RFC 3339 end of the window (default now). | |
| page_num | No | Page number | |
| endpoints | No | Only these endpoints ('text-to-3d' covers preview and refine). Omit for all. | |
| page_size | No | Records per page | |
| start_time | No | RFC 3339 start of the created_at window (default: 30 days before end_time; at most 1 year). | |
| response_format | No | markdown (default) or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, yet the description adds substantial non-obvious context: the 403 gating for non-qualifying teams, that FAILED tasks are refunded and show 0 credits, that in-flight tasks are excluded, and the default 30-day / max 1-year window. This is exactly the kind of extra behavioral detail annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and the free/gated status, then layers coverage rules, defaults, return shape, and an example in short scannable sentences. No sentence is filler despite the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description fully compensates by enumerating the return object fields (task_id, endpoint, status, consumed_credits, api_key_name, etc.), pagination keys, and a concrete request example. An agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter syntax and defaults are already documented in the schema (including the note that 'text-to-3d' covers preview and refine). The description restates the default time window and provides a worked example but does not reveal meaning beyond the structured fields, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list), resource (team's finished API tasks), and scope (credits consumed, newest first), which cleanly distinguishes it from siblings like meshy_list_tasks and meshy_list_models. An agent can tell what it returns and how it is ordered without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the use case ('break down spend per endpoint or API key'), the eligibility gate ('only for API keys on a Studio or Enterprise team (others get 403)'), and what is in/out of scope (SUCCEEDED and FAILED listed, running tasks not listed). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_multi_image_to_3dGenerate 3D Model from Multiple ImagesA
Generate a 3D model from 1–4 views of the same object (better reconstruction), textured by default. Cost: meshy-7.1 / latest / meshy-6 20 mesh only, 30 textured, 35 at 8K; meshy-6-lite 5 / 15; Ultra geometry +5.
IMAGE INPUT (exactly ONE):
file_paths: 1–4 local images (never base64-encode them yourself)
image_urls: 1–4 public URLs
input_task_id: a SUCCEEDED meshy_text_to_image / meshy_image_to_image task (multi-view included); its images are the input
Example: { file_paths: ["/path/front.jpg", "/path/side.jpg"] }
| Name | Required | Description | Default |
|---|---|---|---|
| ai_model | No | 'latest' (default, = Meshy 7.1) or 'meshy-7.1' (best), 'meshy-6', 'meshy-6-lite' (fast, cheap, 2K textures only); 'meshy-7' is deprecated. No Smart Topology here. | latest |
| topology | No | quad or triangle (default). | |
| auto_size | No | AI-estimate the real-world height and resize to it (default false). | |
| origin_at | No | 'bottom' or 'center' (default bottom with auto_size). | |
| pose_mode | No | 'a-pose' or 't-pose'; use 't-pose' when the model will be rigged or animated. | |
| enable_pbr | No | Also make metallic/roughness/normal maps. | |
| file_paths | No | 1–4 absolute paths to local .jpg/.jpeg/.png/.webp images; the server encodes them. | |
| hd_texture | No | Deprecated: use texture_resolution '4k'. | |
| image_urls | No | 1–4 public image URLs. | |
| model_type | No | Deprecated; ignored (this endpoint has no model_type). | |
| ultra_mode | No | Deprecated: use geometry_resolution '2k'. | |
| input_task_id | No | A SUCCEEDED text-to-image / image-to-image task (multi-view included) whose images are the input. | |
| should_remesh | No | Remesh to target_polycount / topology (default false). | |
| symmetry_mode | No | Deprecated: has no effect. | |
| should_texture | No | Generate textures (default true); false gives a cheaper untextured mesh. | |
| target_formats | No | Formats to produce (default: all but 3mf; list '3mf' to get it). Fewer formats finish faster. | |
| texture_prompt | No | Text to guide texturing (max 800 characters). | |
| alpha_thumbnail | No | Also return a transparent-background preview (alpha_thumbnail_url). | |
| decimation_mode | No | Adaptive decimation 1 (ultra) – 4 (low); overrides target_polycount. | |
| remove_lighting | No | Remove highlights/shadows from the base color (meshy-6/7.1/latest; API default true). | |
| response_format | No | markdown (default) or json | markdown |
| target_polycount | No | Remesh target 100–300,000, needs should_remesh true. | |
| image_enhancement | No | Optimize the input image (meshy-6/7.1/latest); false keeps deliberate styling. | |
| texture_image_url | No | Image URL to guide texturing. | |
| texture_image_urls | No | 1–4 views (URLs or data URIs) of the SAME object to drive the texture; element 0 is the front. meshy-7.1/latest only; not with texture_prompt / texture_image_url. | |
| texture_resolution | No | Base color texture: 2k (default), 4k or 8k (+5 credits; PBR maps stay 4K, no emission map). 4k/8k not on meshy-6-lite. | |
| geometry_resolution | No | Ultra geometry pass: standard (default) or 2k (+5 credits); meshy-7.1/latest only. No 4k here. | |
| multi_view_thumbnails | No | Also return front/back/left/right thumbnails. | |
| save_pre_remeshed_model | No | Also keep the GLB from before remeshing (with should_remesh). |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (non-read-only, open-world, non-idempotent, non-destructive), so the bar is lower. The description nonetheless adds real behavioral value: credit costs per model, texture defaults, and the constraint that images must not be base64-encoded by the caller. It stops short of describing task lifecycle/async behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then cost, then input selection, using clear headers. Efficient, though the cost sentence is dense and the section labels ('IMAGE INPUT') consume space without adding semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 29-param tool with full schema coverage, existing output schema, and safety annotations, the description supplies the one thing the schema can't: how to choose among the three image-input routes and how cost varies. Nothing essential for a correct first call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3 and the schema already documents all 29 params. The description adds meaning beyond it by grouping the three input methods as mutually exclusive and flagging that cost scales with model choice, plus a worked example object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Generate a 3D model') and pins the scope precisely: '1–4 views of the same object'. The parenthetical '(better reconstruction)' implicitly contrasts it with the single-image sibling, but it never names meshy_image_to_3d or meshy_text_to_3d, so sibling routing is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'IMAGE INPUT (exactly ONE)' lays out the three mutually exclusive input routes (file_paths / image_urls / input_task_id) with a concrete example, which is genuine when-to-use guidance. It falls short of 5 because it never states when to pick this tool over the single-image or text-to-3D siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_process_multicolorProcess Multi-Color 3D PrintA
Turn a textured model into a multi-color 3MF that opens ready to print in the slicer of printer_brand. Cost: 10 credits.
Confirm first: max_colors (the printer's AMS/MMU capacity), style, printer_brand, and max_depth (realistic only). Download with format "3mf", then open it with meshy_send_to_slicer (is_multicolor). Flashforge, QIDI, Snapmaker and AnkerMake slicers are not detected: give the user the 3MF path for that slicer.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | 'realistic' (default): photo-like detail, larger file, needs one base color texture with UVs on every part. 'cartoon': flat regions, smaller file, also takes vertex colors. | |
| max_depth | No | 3–6: higher = finer color boundaries, larger file (realistic only). | |
| model_url | No | Public URL of a textured .glb / .fbx, or a GLB data URI. | |
| max_colors | No | Palette size (1–16); match the printer's AMS/MMU capacity. | |
| input_task_id | No | A SUCCEEDED textured task: image-to-3d / multi-image-to-3d (unless should_texture was false), refined text-to-3d, remesh or retexture. Wins over model_url. | |
| printer_brand | No | Brand whose slicer preset (default printer, 0.4 mm nozzle) goes into the 3MF (default bambu). | |
| response_format | No | markdown (default) or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent, open-world operation, so safety is covered. The description adds genuinely new behavioral context: a 10-credit cost, the fact that the artifact arrives slicer-ready, and the brand-specific limitation where certain slicers cannot be auto-detected and the raw 3MF path must be handed to the user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and cost in the first sentence, then moves to a short confirm-list and the download/hand-off step. Every sentence is actionable, though the parameter restatements slightly duplicate the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 all-optional parameters, no output schema, and three enums, the description supplies the missing glue an agent needs: credit cost, the required preconditions to confirm, the follow-up tool call, and the slicer-detection fallback. It stops short of describing pagination or return payload details, but no output schema exists to lean on, so a minor gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter including the AMS/MMU meaning of max_colors and the realistic-only constraint on max_depth. The description's parameter notes (max_colors as AMS/MMU capacity, max_depth realistic-only) largely restate what the schema says, adding no new syntax, format, or defaulting guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and transformation ('turn a textured model into a multi-color 3MF') and names the concrete output artifact plus its readiness state ('opens ready to print in the slicer'). This clearly distinguishes it from siblings like meshy_convert (generic conversion), meshy_send_to_slicer (delivery), and meshy_retexture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit pre-flight checklist of values to confirm (max_colors, style, printer_brand, max_depth) and a concrete follow-up workflow ('Download with format "3mf", then open it with meshy_send_to_slicer'). It also handles the not-detected slicer case (Flashforge, QIDI, Snapmaker, AnkerMake) with an alternative action. No explicit when-not-to-use case is stated, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_remeshRemesh 3D ModelA
Remesh an existing model: change its polygon count or topology. Cost: 5 credits. For a format change only use meshy_convert (1 credit); to scale, meshy_resize (1 credit).
Example: { input_task_id: "abc-123", topology: "quad", target_polycount: 10000, target_formats: ["fbx"] }
| Name | Required | Description | Default |
|---|---|---|---|
| topology | No | quad or triangle (default) | |
| auto_size | No | Deprecated: use meshy_resize. | |
| model_url | No | Public URL of a .glb / .gltf / .obj / .fbx / .stl model (max 400 MB), or a GLB data URI (max 100 MB) | |
| origin_at | No | Deprecated: use meshy_resize. | |
| input_task_id | No | A SUCCEEDED text-to-3d (preview or refine), image-to-3d or retexture task | |
| resize_height | No | Deprecated: use meshy_resize. | |
| target_formats | No | Formats to produce (default ['glb']). | |
| alpha_thumbnail | No | Also return a transparent-background preview (alpha_thumbnail_url). | |
| decimation_mode | No | Adaptive decimation 1 (ultra) – 4 (low); overrides target_polycount. | |
| response_format | No | markdown (default) or json | markdown |
| target_polycount | No | 100–300,000 (default 30,000) | |
| convert_format_only | No | Deprecated: use meshy_convert. | |
| resize_longest_side | No | Deprecated: use meshy_resize. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, non-idempotent, open-world), so the description doesn't need to restate safety. It adds genuinely new behavioral context the annotations cannot express: a 5-credit cost, positioned against the 1-credit alternatives. It does not explain the async/task-based nature of the operation, which is the remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus one example, with zero filler. The core action is front-loaded, the cost and routing guidance follow, and the example is placed last where an agent that already understands the tool can skip it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with a full-coverage schema, an output schema, and annotations, the description covers purpose, cost, and alternatives well. The one real gap is source selection: the schema marks nothing required, so the description never states that a model source (input_task_id or model_url) must be supplied and that the two are alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already defines every parameter, so the baseline would be 3. The worked example adds value beyond the schema by showing a realistic, valid combination (input_task_id + topology + target_polycount + target_formats) that demonstrates how the source and output-shaping parameters are used together.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Remesh an existing model") and immediately narrows scope to the two things it changes: polygon count or topology. It also explicitly names the sibling tools it is not (meshy_convert, meshy_resize), so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not guidance with named alternatives and the discriminating condition: format-only changes go to meshy_convert, scaling goes to meshy_resize. Costs are attached to each option, which makes the routing decision actionable rather than merely descriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_repair_printabilityRepair Model Topology for 3D PrintingA
Repair a model for 3D printing (FDM, SLA/resin or full-color): fixes non-manifold edges, degenerate faces and holes and makes it watertight. Cost: 10 credits. Textures are removed (retexture afterwards if needed).
Output format: input_task_id → GLB; model_url → the input's format (.stl → STL, .obj → OBJ…). To keep a Meshy model as OBJ, pass its OBJ URL (model_urls.obj) as model_url. With printer_type and/or a print size it also thickens walls that are too thin, when over 5% of the surface is. The model keeps its scale (meshy_resize scales it).
| Name | Required | Description | Default |
|---|---|---|---|
| model_url | No | Public URL of a .glb / .gltf / .obj / .fbx / .stl model (max 400 MB), or a GLB data URI (max 100 MB). | |
| printer_type | No | Sets the minimum wall: fdm 1.0 mm, sla 0.8 mm, full_color 2.0 mm (fdm when only a size is sent). Without a size: 150 mm tall for GLB / tasks, an STL's own size, else 150 mm longest side. | |
| input_task_id | No | A SUCCEEDED text-to-3d, image-to-3d, multi-image-to-3d, remesh or retexture task, or a print-analyze task (which passes on its printer and size). Wins over model_url. | |
| alpha_thumbnail | No | Also return a transparent-background preview (alpha_thumbnail_url). | |
| response_format | No | markdown (default) or json | markdown |
| intended_print_height_mm | No | Print height in mm (1–1000); GLB / input_task_id only. At most one print size. | |
| intended_print_longest_side_mm | No | Print's longest side in mm (1–1000); any format. At most one print size. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite existing annotations, the description adds substantial behavioral detail: 10-credit cost, that textures are removed, the input→output format mapping, the OBJ-preservation trick, conditional wall thickening, and scale preservation. This is exactly the extra context annotations can't convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then behaviors, then the output-format mechanics. Dense but every sentence carries information; no filler. Slightly paragraph-heavy but structurally sound.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no output schema, the description explains the return format (input_task_id → GLB, model_url → input format), cost, side effects, and conditional behavior. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds real meaning: the output format for model_url, the note 'to keep as OBJ, pass model_urls.obj', and how printer_type interacts with a print size to trigger wall thickening.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Repair a model for 3D printing') and enumerates exactly what it fixes (non-manifold edges, degenerate faces, holes, watertightness). It also distinguishes itself from siblings by naming meshy_resize and retexture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the printing use case and the follow-up route ('retexture afterwards if needed'), plus when wall-thickening kicks in (with printer_type/size and >5% thin surface). It doesn't explicitly contrast against meshy_remesh or meshy_analyze_printability, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_resizeResize 3D Model to Real-World DimensionsA
Rescale a model to real-world size on Meshy. Cost: 1 credit. Give exactly one of resize_height, resize_longest_side or auto_size.
Later tasks (e.g. Auto Split) use the new size. To only scale a downloaded OBJ for a slicer, meshy_download_model with print_ready + print_height_mm does it locally for free.
Example (5 cm figurine): { input_task_id: "abc-123", resize_height: 0.05 }
| Name | Required | Description | Default |
|---|---|---|---|
| auto_size | No | AI-estimate the real-world height | |
| model_url | No | Public URL of a .glb / .gltf / .obj / .fbx / .stl model (output keeps its format), or a GLB data URI. | |
| origin_at | No | 'bottom' (default) or 'center' | |
| input_task_id | No | A SUCCEEDED task with a model (output GLB). Wins over model_url. | |
| resize_height | No | Height in meters | |
| response_format | No | markdown (default) or json | markdown |
| resize_longest_side | No | Longest side in meters (aspect ratio kept) |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are non-committal (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so extra context matters. The description adds real value: a 1-credit cost, the exactly-one-of constraint, and that downstream tasks inherit the new size. It stops short of saying whether a model can be resized repeatedly or how it affects existing derived tasks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then cost, then the exclusivity constraint, then the alternative and an example. Every sentence carries distinct information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is rightly omitted, and the cost, exclusivity, and downstream effects are covered. A minor gap remains: no guidance on choosing between resize_height and resize_longest_side when either would apply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the per-field meanings are already documented, setting a baseline of 3. The description adds a genuine cross-parameter rule the schema does not encode -- give exactly one of resize_height, resize_longest_side or auto_size -- plus a worked example showing meters (0.05 for 5 cm).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rescale) and resource (model to real-world size), and the title reinforces the scope. It implicitly distinguishes itself from meshy_remesh (geometry change) by framing the operation purely as rescaling with preserved aspect ratio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the cheaper alternative (meshy_download_model with print_ready + print_height_mm) and the condition that selects it. It also states the mutually-exclusive input constraint and the downstream consequence that later tasks like Auto Split use the new size.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_retextureRetexture 3D ModelA
Apply new AI textures to an existing model. Cost: 10 credits (15 at 8K).
Ask the user for EXACTLY ONE style input (the tool rejects combinations):
text_style_prompt: the style in words ("rusty metal", "cartoon")
image_style_url: one image used as a STYLE reference
multiview_image_urls: 1–4 photos OF THE SAME OBJECT from different angles (not style references)
Example: { input_task_id: "abc-123", text_style_prompt: "rusty metal" }
| Name | Required | Description | Default |
|---|---|---|---|
| ai_model | No | 'latest' (default, = Meshy 7), 'meshy-7', 'meshy-6', or 'meshy-6-lite' (fast, 2K only). No meshy-7.1 here. | latest |
| model_url | No | Public URL of a .glb / .gltf / .obj / .fbx / .stl model (max 400 MB), or a GLB data URI (max 100 MB) | |
| enable_pbr | No | Also make metallic/roughness/normal maps. | |
| hd_texture | No | Deprecated: use texture_resolution '4k'. | |
| input_task_id | No | A SUCCEEDED text-to-3d (preview or refine), image-to-3d or remesh task | |
| target_formats | No | Formats to produce (default: all but 3mf; list '3mf' to get it). | |
| alpha_thumbnail | No | Also return a transparent-background preview (alpha_thumbnail_url). | |
| image_style_url | No | One image used as the style reference. | |
| remove_lighting | No | Remove highlights/shadows from the base color (meshy-6 only; API default true there). | |
| response_format | No | markdown (default) or json | markdown |
| text_style_prompt | No | The texture style in words (max 800 characters). | |
| enable_original_uv | No | Keep the existing UVs instead of a fresh unwrap. Default true with input_task_id, false with model_url (safest for uploads). | |
| texture_resolution | No | Base color texture: 2k (default), 4k or 8k (15 credits instead of 10; PBR maps stay 4K, no emission map). 4k/8k not on meshy-6-lite. | |
| multiview_image_urls | No | 1–4 ordered views of the same object; element 0 is primary and alone drives metallic/roughness. Needs Meshy 7 ('latest' is sent as 'meshy-7'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (openWorld non-idempotent write), so the description's added value is the pricing disclosure (10 credits, 15 at 8K) and the input-combination rejection behavior, both of which are unavailable from structured fields. It does not say what happens to a model's prior textures or whether the source model is replaced, a modest remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the constraint list, then an example call — a sensible order. The indented bullet block and embedded example are slightly verbose for the amount of information conveyed, but every line carries real content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with an output schema and full annotation coverage, the description supplies the highest-risk missing piece (style-input exclusivity) and pricing. It stays silent on the two source modes (model_url vs input_task_id), though those are documented per-parameter in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by documenting a cross-parameter constraint the schema cannot express, namely that text_style_prompt, image_style_url and multiview_image_urls are mutually exclusive, and by supplying a concrete example object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Apply new AI textures to an existing model'), which cleanly separates it from generation siblings like meshy_text_to_3d or meshy_image_to_3d. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a hard usage rule ('EXACTLY ONE style input', tool rejects combinations) and enumerates the three mutually exclusive alternatives, which is genuinely actionable. It does not however explicitly compare against siblings such as meshy_uv_unwrap or meshy_remesh, so routing between tools is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_rigAuto-Rig 3D CharacterA
Auto-rig a humanoid character for animation. Cost: 5 credits, including free walking + running animations (GLB + FBX, separate files).
REQUIREMENT: a textured humanoid (biped) model with a clear body and limbs, ≤300,000 faces (checked first; remesh if over). model_url must be a .glb facing +Z. Generate characters with pose_mode "t-pose" for the best rig.
Next steps: meshy_download_model (task_type "rigging") returns the rigged model and walk/run URLs. Other actions: meshy_list_animations → meshy_animate. A described motion: meshy_text_to_motion → meshy_animate with motion_task_id.
| Name | Required | Description | Default |
|---|---|---|---|
| model_url | No | Public URL of a textured humanoid .glb (max 400 MB), or a GLB data URI (max 100 MB) | |
| height_meters | No | Character height in meters; helps scaling | |
| input_task_id | No | A SUCCEEDED task with a textured humanoid model | |
| response_format | No | markdown (default) or json | markdown |
| texture_image_url | No | The model's UV-unwrapped base color texture (.png, max 20 MB) |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, openWorld=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: a concrete cost (5 credits), included walk/run animations in GLB+FBX, the face-count precheck, and the .glb orientation constraint. It does not describe async/polling behavior for the resulting task, which is the one gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, cost, and included outputs, then a clearly delineated REQUIREMENT block and a Next steps block. Efficient and scannable; slightly verbose with the chained next-step arrows, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create-style rigging tool with an output schema and full annotation coverage, the description supplies the prerequisites, cost, deliverables, and the routing to download/animate tools. Nothing an agent needs to invoke it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters including the model_url format and the texture_image_url pattern ref. The description reinforces the .glb/+Z constraint and mentions pose_mode, which is not even present in the schema (a minor mismatch). Baseline 3 is appropriate since the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Auto-rig a humanoid character for animation") and immediately constrains it (textured humanoid/biped). An agent can distinguish this from meshy_animate, meshy_text_to_motion, and the *_to_3d siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states upfront requirements (textured biped, ≤300k faces, .glb facing +Z, pose_mode t-pose for best results) and names routing alternatives: meshy_download_model with task_type "rigging", meshy_list_animations → meshy_animate, and meshy_text_to_motion → meshy_animate. This is textbook when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_send_to_slicerSend Model to 3D Printing SlicerARead-onlyIdempotent
Detect installed 3D printing slicers and return their launch commands. Call it at the START of a print workflow and keep the result; at the END, replace {file} in a launch_command with the downloaded file's local path and run it. If you cannot run shell commands, give the user the command and the file path.
Detects OrcaSlicer, Bambu Studio, Creality Print, Elegoo Slicer, Anycubic Slicer Next, PrusaSlicer (all multicolor-capable) and UltiMaker Cura.
Several SEPARATE models: open them one at a time, ~2 s apart (open -a "Bambu Studio" a.stl; sleep 2; open -a "Bambu Studio" b.stl); fired together, a slicer may take only one. Parts of one model go in one project, opened together.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | No | File name for the model | meshy_model.3mf |
| model_url | Yes | The model's URL (a placeholder is fine when only detecting) | |
| slicer_type | No | 'auto' (default): detect all and recommend one; or one slicer. | auto |
| is_multicolor | No | Only multicolor-capable slicers | |
| response_format | No | markdown (default) or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, it discloses operational constraints the agent could not infer: multiple models must be opened one-at-a-time ~2s apart (with an example command), parts of one model should be opened together, and it names the exact multicolor-capable slicers detected. This is meaningful behavior-level context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and reasonably tight for the amount of workflow guidance provided. The slicer enumeration and multi-model paragraph are slightly verbose but each carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by explaining the return (launch commands containing {file}) and how to consume it. It could be more explicit about the full shape of the returned recommendation object, but coverage is strong for a no-output-schema tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters (including the model_url placeholder note and slicer enum). The description largely restates this and adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb+resource — 'Detect installed 3D printing slicers and return their launch commands' — and clarifies the crucial nuance that the tool returns commands rather than actually performing the send implied by its name. This lets an agent know the tool is a detector/command-provider, distinct from any sibling that performs slicing itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit workflow positioning: 'Call it at the START of a print workflow and keep the result; at the END, replace {file}...'. It also handles the fallback case ('If you cannot run shell commands, give the user the command and the file path'), so the agent knows both when and how to use the output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_text_to_3dGenerate 3D Model from TextA
Generate an untextured 3D PREVIEW from a text prompt; texture it afterwards with meshy_text_to_3d_refine once the user approves. Typically 2–3 minutes. Cost: 20 credits (meshy-7.1 / latest / meshy-6), 5 (meshy-6-lite, meshy-t2, meshy-t2.5); Ultra geometry +5.
PREFER THE IMAGE ROUTE: for higher quality and more control, generate a design image first (meshy_text_to_image), let the user approve it, then meshy_image_to_3d with input_task_id = the image task (textured in one task). Use direct text-to-3d for a quick draft or when the user explicitly asks for it.
Examples:
Low-poly: { prompt: "dragon", model_type: "smart-topology", ai_model: "meshy-t2", target_polycount: 4000 }
Max detail: { prompt: "ornate knight helmet", ai_model: "meshy-7.1", geometry_resolution: "4k" }
3D print: { prompt: "cat", target_formats: ["obj"] }
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | What to model (max 800 characters) | |
| ai_model | No | 'latest' (default, = Meshy 7.1) or 'meshy-7.1' (best), 'meshy-6', 'meshy-6-lite' (fast, cheap, 2K textures only); 'meshy-7' is deprecated. With model_type smart-topology: 'meshy-t2' (the default there) or 'meshy-t2.5' (newest, sharper detail for game assets). | |
| topology | No | quad or triangle (default). | |
| auto_size | No | AI-estimate the real-world height and resize to it (default false). | |
| origin_at | No | 'bottom' or 'center' (default bottom with auto_size). | |
| pose_mode | No | 'a-pose' or 't-pose'; use 't-pose' when the model will be rigged or animated. | |
| model_type | No | standard (default); smart-topology (ai_model meshy-t2 or meshy-t2.5): a clean, part-separated, triangle-only mesh made directly at target_polycount, ignoring remesh/decimation; lowpoly is deprecated (billed like meshy-6, retires 2026-10-30). | |
| ultra_mode | No | Deprecated: use geometry_resolution '2k'. | |
| should_remesh | No | Remesh to target_polycount / topology (default false). | |
| symmetry_mode | No | Deprecated: has no effect. | |
| target_formats | No | Formats to produce (default: all but 3mf; list '3mf' to get it). Fewer formats finish faster. | |
| alpha_thumbnail | No | Also return a transparent-background preview (alpha_thumbnail_url). | |
| decimation_mode | No | Adaptive decimation 1 (ultra) – 4 (low); overrides target_polycount. | |
| response_format | No | markdown (default) or json | markdown |
| target_polycount | No | Standard: remesh target 100–300,000, needs should_remesh true. Smart Topology: meshy-t2 100–15,000 (default 4,000), meshy-t2.5 100–30,000 (default 15,000). | |
| geometry_resolution | No | Ultra geometry pass: standard (default), 2k or 4k (finest); meshy-7.1/latest with model_type standard only, +5 credits. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the generic safety profile (not read-only, not idempotent, not destructive, open-world); the description adds the non-obvious operational traits: an untextured preview output that must be refined, a typical 2–3 minute runtime, and a per-model credit cost table including the +5 Ultra surcharge. That is exactly the latency/cost disclosure annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the alternate route, then compact example objects; no filler sentences. It is on the longer side and the cost parenthetical is dense, but each block (workflow, routing, examples) carries distinct decision value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter creation tool with an output schema present, the description covers the workflow position (preview -> refine), the competing route, cost/latency expectations, and worked parameter combinations. Return values are handled by the output schema, so nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes beyond it by mapping ai_model choices to credit costs and by giving three concrete parameter bundles (low-poly, max detail, 3D print) that demonstrate how enum values like model_type, ai_model, geometry_resolution and target_formats are meant to be combined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource+qualifier: 'Generate an untextured 3D PREVIEW from a text prompt', and immediately names the follow-on sibling (meshy_text_to_3d_refine) and the contrasting sibling route (meshy_image_to_3d). An agent can distinguish this from every sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not: 'PREFER THE IMAGE ROUTE ... for higher quality and more control', with 'Use direct text-to-3d for a quick draft or when the user explicitly asks for it.' It also states the sequencing requirement (texture afterwards with refine once the user approves).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_text_to_3d_refineRefine Text-to-3D PreviewA
Texture a SUCCEEDED meshy_text_to_3d preview. Cost: 10 credits (15 at 8K). Get the user's approval first; omit ai_model to inherit the preview's model.
Example: { preview_task_id: "abc-123", texture_prompt: "rusty metal", enable_pbr: true }
| Name | Required | Description | Default |
|---|---|---|---|
| ai_model | No | Optional override: 'meshy-7.1', 'latest' (= 7.1), 'meshy-6', 'meshy-6-lite' (2K only). Omit (recommended) to inherit the preview's model; not meshy-t2/t2.5. | |
| auto_size | No | AI-estimate the real-world height and resize to it (default false). | |
| origin_at | No | 'bottom' or 'center' (default bottom with auto_size). | |
| enable_pbr | No | Also make metallic/roughness/normal maps. | |
| hd_texture | No | Deprecated: use texture_resolution '4k'. | |
| target_formats | No | Formats to produce (default: all but 3mf; list '3mf' to get it). Fewer formats finish faster. | |
| texture_prompt | No | Text to guide texturing (max 800 characters). | |
| alpha_thumbnail | No | Also return a transparent-background preview (alpha_thumbnail_url). | |
| preview_task_id | Yes | The SUCCEEDED preview task to texture | |
| remove_lighting | No | Remove highlights/shadows from the base color (meshy-6 only). Sent as-is when ai_model is omitted, so omit it after a meshy-6-lite preview (the API rejects it). | |
| response_format | No | markdown (default) or json | markdown |
| texture_image_url | No | Image URL to guide texturing. | |
| texture_resolution | No | Base color texture: 2k (default), 4k or 8k (+5 credits; PBR maps stay 4K, no emission map). 4k/8k not on meshy-6-lite. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the non-read-only, non-idempotent, non-destructive profile, but the description adds material behavior the annotations do not carry: the credit cost, the requirement to obtain user approval first, and the model-inheritance rule when ai_model is omitted. It does not restate that each call creates a new task, though that is implied by the example.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the action, the cost/approval constraint, then the model-inheritance rule, followed by a compact example. No filler, and the most decision-relevant information (what it operates on, cost, approval) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the pipeline stage, cost, approval gate and model inheritance for a 13-parameter tool. The only minor gap is that it does not state the call is asynchronous and yields a task to poll, though the sibling meshy_get_task_status and the output schema make this inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description goes beyond it by surfacing the key default behavior ('omit ai_model to inherit the preview's model') and giving a concrete example payload that shows how preview_task_id, texture_prompt and enable_pbr are combined. That is useful guidance layered on top of an already complete schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('Texture a SUCCEEDED meshy_text_to_3d preview') and pins the pipeline position by requiring a SUCCEEDED preview, which cleanly separates it from meshy_text_to_3d (creates the preview) and meshy_retexture. An agent can pick this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition (preview must be SUCCEEDED), a cost gate (10 credits, 15 at 8K) and an explicit approval requirement before calling. It stops short of naming sibling alternatives such as meshy_retexture or meshy_remesh for existing assets, so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_text_to_imageGenerate 2D Image from TextA
Generate a 2D image from text, e.g. a design for the user to approve before 3D. Typically ~30 s. Cost: nano-banana 3, nano-banana-2 6, nano-banana-2-lite 3, nano-banana-2-1 4, nano-banana-pro 9, GPT Image models 9 credits.
To make it 3D: meshy_image_to_3d with input_task_id = this task (multi-view output: meshy_multi_image_to_3d).
Example: { ai_model: "nano-banana-pro", prompt: "game character", generate_multi_view: true, pose_mode: "t-pose" }
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Text description | |
| ai_model | Yes | Image model; ask the user. | |
| pose_mode | No | Character pose: 'a-pose' or 't-pose' | |
| aspect_ratio | No | Default '1:1'; '3:2' and '2:3' are GPT Image models only. Not with generate_multi_view. | |
| response_format | No | markdown (default) or json | markdown |
| remove_background | No | Transparent-background PNG (no effect on multi-view output). | |
| generate_multi_view | No | Front/side/back views (input for meshy_multi_image_to_3d). Not with aspect_ratio. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnly=false, openWorld=true, idempotent=false, destructive=false); the description adds latency (~30 s), per-model credit costs, and cross-parameter behavioral constraints such as remove_background having no effect on multi-view output. This is meaningful behavior an agent cannot derive from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and latency, then cost, then routing, then a compact example — every element is actionable and nothing is padded. The cost enumeration is dense but it is the information needed for model choice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation; the description still covers the workflow chain (this task -> image_to_3d / multi_image_to_3d), cost tradeoffs, timing, and the multi-view/aspect-ratio interaction. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes beyond it by pairing each ai_model enum value with its credit cost, which drives model selection, and by giving a concrete example object showing prompt, ai_model, generate_multi_view and pose_mode together. Cross-parameter exclusions are repeated from the schema rather than added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Generate a 2D image from text') and frames the artifact as a 2D design stage preceding 3D, which distinguishes it from the 3D siblings in the same family. It does not explicitly contrast with the closer sibling meshy_image_to_image, so differentiation is good but not complete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to reach for it (produces a design for user approval before 3D) and routes the next step explicitly to meshy_image_to_3d with input_task_id = this task, or meshy_multi_image_to_3d for multi-view output. Missing are exclusions ('use X instead when you already have an input image'), which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_text_to_motionGenerate Motion Clip from TextA
Generate a character motion clip (skeleton motion, not a model) from text. Cost: 10 credits (prime) or 3 (swift) — confirm first. Clips are kept for 3 days.
Apply it to a rigged biped with meshy_animate (motion_task_id), or save the clip with meshy_download_model (FBX for prime, BVH for swift; format is ignored).
Example: { prompt: "a boxer throws a jab-cross combo", duration: 4 }
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'prime' (default): highest quality, FBX. 'swift': faster and cheaper, BVH. | |
| prompt | Yes | The motion, e.g. 'jumps over a gap and lands in a crouch' (max 400 characters). | |
| duration | Yes | Clip length in seconds: 2–10 in steps of 0.5. | |
| response_format | No | markdown (default) or json | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing credit cost (10 prime / 3 swift), advising confirmation before spending, and stating a 3-day retention window. These are exactly the behavioral traits (cost, persistence, format coupling) an agent needs before invoking a non-idempotent, open-world mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then cost, then downstream usage in three tight blocks with a concrete example. Nothing is padded, though the parenthetical format caveat is slightly dense and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description still supplies the cost, retention, and downstream-integration context an agent needs. Nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents mode, prompt, duration and response_format, including the prime/FBX vs swift/BVH mapping. The description's FBX/BVH note restates schema content and its example adds only a usage illustration, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('generate a character motion clip') and immediately disambiguates the output type with '(skeleton motion, not a model)', which cleanly separates it from the text-to-3d siblings. An agent can distinguish it from meshy_text_to_3d without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear downstream routing: apply the result via meshy_animate (motion_task_id) or save it with meshy_download_model, and notes which format each mode yields. It lacks an explicit 'when not to use this' or a cost-based alternative comparison, so it stops just short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meshy_uv_unwrapGenerate UV Unwrap for a 3D ModelA
Make a clean, non-overlapping UV layout ("UV white model") before texturing in Blender, Substance Painter or Unreal. Cost: 5 credits.
GLB input only, ≤40,000 faces (denser meshes are rejected: remesh first). The output GLB keeps the geometry (quads/n-gons triangulated) with fresh UVs and a grey placeholder material.
| Name | Required | Description | Default |
|---|---|---|---|
| model_url | No | Public URL or data URI of a .glb (convert other formats first). | |
| input_task_id | No | A SUCCEEDED task with a GLB. Wins over model_url. | |
| response_format | No | markdown (default) or json | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| task_id | Yes | |
| estimated_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: a stated cost (5 credits), hard input limits with the rejection behavior and the required recovery step, and a precise description of the output transformation (geometry preserved, quads/n-gons triangulated, fresh UVs, grey placeholder material). The annotations only cover generic safety/idempotency hints, so this operational detail is genuinely additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight paragraphs, front-loaded with purpose, then cost, then constraints and output behavior. Every clause carries information (limits, credits, transformation result) and nothing is repeated from the schema or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generation tool with an output schema, the description covers everything an agent needs to invoke it correctly: required input format, size ceiling with the fallback path, cost, and the shape of the returned asset. Return-value details can safely be deferred to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (including the model_url vs input_task_id precedence and the response_format enum) are already documented in the schema. The description only reinforces the GLB-only constraint and the 'convert other formats first' step, adding marginal meaning beyond structured data. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Make a clean, non-overlapping UV layout') and immediately clarifies the artifact produced (a 'UV white model' for texturing). It is easily distinguished from siblings like meshy_retexture, meshy_remesh, or meshy_convert without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear prerequisites (GLB input only, ≤40,000 faces) and a routing hint for the failure case ('denser meshes are rejected: remesh first'), which points at the meshy_remesh sibling. It positions the tool in the pipeline ('before texturing in Blender, Substance Painter or Unreal'), but never explicitly states when-not to use it or names alternatives beyond the remesh hint.
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.
28 tool updates
v0.6.4- First observed
meshy_analyze_printability - First observed
meshy_animate - First observed
meshy_auto_split - First observed
meshy_cancel_task - First observed
meshy_check_balance - First observed
meshy_convert - First observed
meshy_creative_lab - First observed
meshy_download_model - First observed
meshy_get_task_status - First observed
meshy_image_to_3d - First observed
meshy_image_to_image - First observed
meshy_list_animations - First observed
meshy_list_models - First observed
meshy_list_tasks - First observed
meshy_list_usage - First observed
meshy_multi_image_to_3d - First observed
meshy_process_multicolor - First observed
meshy_remesh - First observed
meshy_repair_printability - First observed
meshy_resize - First observed
meshy_retexture - First observed
meshy_rig - First observed
meshy_send_to_slicer - First observed
meshy_text_to_3d - First observed
meshy_text_to_3d_refine - First observed
meshy_text_to_image - First observed
meshy_text_to_motion - First observed
meshy_uv_unwrap
TDQS
Scored across 28 tools
Most tools have clearly distinct purposes, and the richly detailed descriptions explicitly contrast overlapping ones (e.g. remesh vs convert vs resize, list_models vs list_tasks vs get_task_status, retexture vs text_to_3d_refine). A few listing/status tools sit close together, but the text moves callers to the right choice.
Every tool uses the meshy_ prefix followed by a consistent snake_case verb_noun or verb_phrase pattern (meshy_text_to_3d, meshy_list_models, meshy_cancel_task). No mixed conventions appear anywhere in the set.
28 tools is on the heavy side, but the domain is genuinely broad (generation, refinement, task/asset management, geometry editing, rigging, animation, 3D-print prep, Creative Lab, billing). Each tool covers a distinct operation, so the count is largely earned.
The surface covers the full lifecycle: image/text inputs, generation, refinement, polling/cancel/download, geometry edits (remesh, retexture, convert, resize, UV unwrap), rigging/animation, print analysis/repair/multicolor/split/slicer, Creative Lab, and billing usage. No obvious dead ends for the stated 3D-asset domain.
Maintenance
Related MCP Connectors
Generate and edit images, video, voice, lip-sync and 3D models from your AI agent.
On-brand creative studio for AI agents: images, video, audio, and 3D.
Generate 3D models from images or text with AI, then retexture or convert them to STL, 3MF or OBJ.
Turn text or an image into an animation-ready 3D model (GLB): generate, rig, animate, retexture.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered 3D content creation in Blender through natural language, including text-to-3D, image-to-3D, animation, rigging, rendering, and export.3MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to generate 3D models, textures, and images via the Meshy API using natural language, supporting text-to-3D, image-to-3D, remeshing, retexturing, rigging, and animation workflows.3621 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create, manage, and download 3D models, textures, images, rigged characters, and animations through natural conversation using the Meshy AI platform.15,917 npmMIT

Thrixel MCP Serverofficial
AlicenseAqualityBmaintenanceEnables AI agents to create, edit, detail, and download game-ready 3D models through natural conversation, with visual feedback on each result.12755 PyPIMIT