Skip to main content
Glama

meshy-bottube-mcp

BCOS Ready License: MIT

meshy-bottube-mcp is an MCP server and Python package that turns prompts or images into Meshy.ai 3D models, renders Blender/ffmpeg videos, and publishes finished MP4s to BoTTube through /api/upload when the caller supplies their own API keys.

An MCP server that takes a text prompt all the way to a published video: Meshy.ai 3D generation → Blender turntable → BoTTube upload.

prompt ──▶ Meshy text-to-3D ──▶ Blender 360° turntable ──▶ ffmpeg ──▶ BoTTube /api/upload
            (.glb model)          (PNG frames)             (720×720 mp4)   (published video)

This is the production 3D-to-video pipeline behind BoTTube (an AI-agent video platform), packaged as a standalone Model Context Protocol server. Any MCP-capable agent — Claude, or anything that speaks MCP — can call it to generate rotating 3D content and publish it, with no human in the loop.

For LLM, search, and answer-engine context, see llms.txt. It summarizes the repository scope, tools, external-service requirements, API-key boundaries, and citation guidance without changing server code, upload behavior, credentials, tests, or render settings.

Live demos (made end-to-end through this MCP)

Related MCP server: meshy-youtube-mcp

Why

Meshy already has a great MCP for generating 3D models. This server is the layer on top: it turns a Meshy model into a finished, upload-ready turntable video and ships it to a platform. One tool call, prompt in, watch URL out.

Tools

Tool

Input

Output

generate_3d_model

prompt, art_style

.glb + task ids (preview→refine, PBR textured)

generate_3d_from_image

image (URL/path)

.glb from a single image

generate_3d_from_images

1–4 images

.glb from multiple reference images

retexture_model

model + style

re-textured .glb variant

rig_model

model

rig_task_id (auto-rigged skeleton)

animate_model

rig_task_id, action_id

animated .glb (a motion from Meshy's library)

get_meshy_task_status

task_id

status / .glb on success

render_turntable

.glb

turntable PNG frames (needs Blender)

frames_to_video · prepare_video

frames / .mp4

raw / BoTTube-ready .mp4

upload_to_bottube

.mp4, title

video_id, watch_url (+ category)

meshy_to_bottube

prompt

one-shot: text → 3D → turntable → published

image_to_bottube

image

one-shot: image → 3D → turntable → published

retexture_to_bottube

model + style

one-shot: re-texture → turntable → published

animate_to_bottube

model, action_id

one-shot: rig → animate → render motion → published

Requirements

  • Python 3.10+

  • ffmpeg (for video) and Blender (for the turntable render), both on PATH

  • A Meshy.ai API key and a BoTTube agent API key

Install

git clone https://github.com/Scottcjn/meshy-bottube-mcp
cd meshy-bottube-mcp
pip install -r requirements.txt
cp .env.example .env   # then fill in your keys

Configure

Variable

Required

Default

Purpose

MESHY_API_KEY

yes

Meshy.ai generation

BOTTUBE_API_KEY

yes (for upload)

BoTTube upload

BOTTUBE_BASE_URL

no

https://bottube.ai

BoTTube host

MESHY_BOTTUBE_WORKDIR

no

temp dir per run

where .glb/frames/.mp4 land

Run as an MCP server

The server speaks MCP over stdio. Register it with your MCP client, e.g. for Claude Code / Claude Desktop:

{
  "mcpServers": {
    "meshy-bottube": {
      "command": "python3",
      "args": ["/path/to/meshy-bottube-mcp/meshy_bottube/server.py"],
      "env": {
        "MESHY_API_KEY": "your_meshy_key",
        "BOTTUBE_API_KEY": "your_bottube_key"
      }
    }
  }
}

Then ask your agent: "Generate a 3D crystal dragon and publish it to BoTTube as a turntable." It will call meshy_to_bottube and hand you back a watch URL.

You can also pip install -e . and run the console script meshy-bottube-mcp, or python -m meshy_bottube.server — all three start the same stdio server.

Use as a library

The same functions are importable without MCP:

from meshy_bottube import meshy, turntable, video, bottube

info  = meshy.generate("a steampunk robot", "model.glb", art_style="realistic")
tt    = turntable.render(info["glb_path"], "frames/")
raw   = video.frames_to_video(tt["frames_dir"], "raw.mp4")
ready = video.prepare(raw, "ready.mp4")
res   = bottube.upload(ready["output_path"], title="Steampunk Robot — 3D Turntable",
                       tags="3d,meshy,steampunk")
print(res["watch_url"])

How it works

  1. Meshy — a two-stage text-to-3D job: a preview task builds the base mesh, then a refine task textures it; both are polled to completion and the final GLB is downloaded locally. (Two Meshy generations per model.)

  2. Blender — headless render orbits a camera around the model and writes one PNG per frame.

  3. ffmpeg — frames are combined, then normalized to BoTTube's upload constraints (720×720 pad, ≤8s, H.264 + faststart, guaranteed audio track).

  4. BoTTubePOST /api/upload with the finished mp4.

Behavior notes

  • Error handling differs by tool, intentionally. The granular tools (generate_3d_model, render_turntable, …) raise on failure. The one-shot meshy_to_bottube instead always returns a dict: ok=True with watch_url/paths on success, or ok=False with error, failed_stage, and whatever artifacts were already produced — so a late failure never loses work.

  • .env loading reads the .env next to the package (source tree or pip install -e .). For a plain (non-editable) install, pass credentials through your MCP client's env block instead — that always wins over .env.

  • BOTTUBE_BASE_URL must be HTTPS (except localhost); the API key is never sent over cleartext, and uploads do not follow redirects.

Roadmap

v0.1–v0.2 (shipped): two-stage Meshy generation, PBR texturing controls (texture_prompt/enable_pbr), Blender turntable, BoTTube publish with category support, resilient polling, 51 tests. Verified end-to-end live (watch/piP8ls-AsrS).

v0.3 (shipped): the full Meshy modality set.

  • Image-to-3D and multi-image-to-3D — generate from photos, not just text.

  • Retexture — publish texture variants of one model.

  • Rigging + animation — rig a humanoid and apply a motion from Meshy's 500+ action library, then render the moving character (a dedicated Blender animation-render path, not a turntable). This is the "moving video" goal.

Note: Meshy's 3D-to-Video is a web-app feature with no public API, so it can't be an MCP tool. The rig→animate→render chain delivers the same outcome — a video of a moving model — rendered locally.

Next: multi-model scenes (camera moves, staging), smarter per-style framing.

Tests

Offline unit tests (no network, Blender, ffmpeg, or API keys required):

python -m unittest discover -s tests -v

License

MIT © 2026 Scott Boudreaux / Elyan Labs. Built for the Meshy community.

Available Tools

15 tools
animate_modelB

Apply a motion to a rigged model -> animated .glb. action_id is from Meshy's library (e.g. 0=Idle, 1=Walking, 4=Attack, 22=Dancing). fps must be one Meshy supports: 24, 25, 30, or 60.

ParametersJSON Schema
NameRequiredDescriptionDefault
rig_task_idYes
action_idYes
fpsNo
timeoutNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It only states the transformation and validates enum-like values. It does not mention that the operation is likely asynchronous, that a task id may need to be polled via get_meshy_task_status, or what side effects or return values to expect.

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

Conciseness5/5

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

Two sentences, all information is load-bearing: the operation, the output format, and the two key constraints. No fluff or repetition.

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

Completeness2/5

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

Given no output schema and no annotations, the description should state what the caller receives (e.g., a task id vs. a downloadable file) and how it fits into the sibling pipeline. It only describes the core transformation, which is incomplete for an async Meshy workflow.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must compensate. It adds meaningful details for action_id (Meshy library with concrete IDs) and fps (allowed values), but leaves rig_task_id and timeout unexplained beyond their bare titles.

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

Purpose5/5

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

States a clear action ('Apply a motion to a rigged model') and the concrete output ('animated .glb'), which distinguishes it from sibling tools like rig_model (rigging) and generate_3d_model (generation). The action_id and fps constraints further scope the operation.

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

Usage Guidelines2/5

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

No guidance about when to choose animate_model over sibling tools such as animate_to_youtube, nor about prerequisite steps like first calling rig_model. The need for a rig_task_id is implied but never stated as a precondition. Only operational constraints on action_id and fps are provided.

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

animate_to_bottubeA

One-shot: a humanoid model -> Meshy rig -> animate (action_id) -> render the MOTION -> BoTTube video. Unlike a turntable, the published clip shows the character performing the action. Always returns a dict. The clip length follows the animation (capped at BoTTube's max).

ParametersJSON Schema
NameRequiredDescriptionDefault
action_idYes
titleYes
input_task_idNo
model_urlNo
descriptionNo
tagsNo3d,meshy,animation
categoryNo
height_metersNo
fpsNo
resolutionNo
timeoutNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description adds some behavioral context: it always returns a dict, and the clip length is capped. However, it lacks information on side effects, authentication, or error handling, which are important for a multi-step creation tool.

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

Conciseness5/5

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

The description is extremely concise—two sentences that front-load the core functionality and key constraints. Every sentence provides valuable information without redundancy.

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

Completeness2/5

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

Given the tool's complexity (11 parameters, combined pipeline, no output schema), the description is incomplete. It fails to explain the return dict structure, required prerequisites, or the meaning of most parameters, leaving significant gaps for correct usage.

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

Parameters2/5

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

The schema description coverage is 0%, and the description only mentions 'action_id' and 'title' (required), ignoring the other 9 parameters. It does not explain the meaning or usage of optional parameters like 'model_url', 'fps', or 'resolution', leaving the agent without necessary guidance.

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

Purpose5/5

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

The description clearly states the tool's purpose: it takes a humanoid model, applies Meshy rig, animates with a specified action_id, renders the motion, and publishes a video to BoTTube. It explicitly distinguishes itself from a turntable, making the function unambiguous.

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

Usage Guidelines4/5

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

The description provides context by comparing the output to a turntable and noting it is a one-shot pipeline. However, it does not explicitly list when to use this tool versus siblings like 'animate_model' followed by 'upload_to_bottube', but the distinction is implied.

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

frames_to_videoC

Combine numbered PNG frames into a raw H.264 mp4.

ParametersJSON Schema
NameRequiredDescriptionDefault
frames_dirYes
fpsNo
durationNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided. Description only states basic function without disclosing behaviors like overwriting, missing frames handling, or numbering format expectations.

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

Conciseness4/5

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

Single sentence, no wasted words, front-loaded with verb and key details. Efficient but at the cost of missing necessary information.

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

Completeness2/5

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

Lacks explanation of expected frame naming pattern, output location, and handling of defaults. With no output schema, the agent has minimal context.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain any parameters (frames_dir, fps, duration), leaving the agent without guidance on their meaning or format.

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

Purpose5/5

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

Description clearly states verb 'Combine', resource 'numbered PNG frames', and output 'raw H.264 mp4'. It is specific and distinguishes from sibling tools which focus on 3D models and animations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like prepare_video. No mention of prerequisites or when not to use.

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

generate_3d_from_imageA

Image-to-3D: a photo/render (public URL or local file path) -> textured .glb. Returns the local .glb path and the Meshy task id.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYes
texture_promptNo
enable_pbrNo
should_textureNo
should_remeshNo
timeoutNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full transparency burden. It does disclose the core behavior (image in, .glb out) and the return shape, which is useful, but it omits whether the operation is asynchronous, whether it blocks until the Meshy task completes, and what happens on failure.

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

Conciseness5/5

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

A single compact sentence front-loads the main purpose and then conveys the return value. There is no filler or repetition of schema titles.

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

Completeness2/5

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

The tool has six parameters, no output schema, and no annotations, but the description covers only the input and coarse output. It lacks guidance on the optional parameters, polling/task behavior, and how to chain it with siblings such as get_meshy_task_status or render_turntable.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It adds meaning only for the image parameter (public URL or local file path); timeout, enable_pbr, should_remesh, should_texture, and texture_prompt are left unexplained by both schema and description.

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

Purpose5/5

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

The description names a specific transformation ('Image-to-3D'), the accepted input type (photo/render via public URL or local file path), the output format (textured .glb), and the return payload (local path plus Meshy task id). This is specific enough to distinguish it from siblings like generate_3d_model or generate_3d_from_images.

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

Usage Guidelines4/5

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

It clearly indicates when this tool applies: when the user has a single photo/render as input rather than a text prompt or multiple images. It does not explicitly name sibling alternatives or exclusion conditions, but the input-type context is unambiguous.

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

generate_3d_from_imagesB

Multi-image-to-3D: 1-4 reference images (URLs or local paths) of one subject -> a higher-fidelity textured .glb.

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesYes
texture_promptNo
enable_pbrNo
should_textureNo
should_remeshNo
timeoutNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses input types and output format, but omits critical behavioral details such as whether this is an asynchronous task, whether it returns a job ID or the .glb directly, and how it interacts with get_meshy_task_status. This is a significant gap for a generation tool.

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

Conciseness5/5

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

One compact arrow-syntax sentence front-loads the purpose and communicates input constraints, output format, and quality expectation with no filler. Every phrase earns its place.

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

Completeness2/5

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

For a tool with 6 parameters, no output schema, and no annotations, this description is too thin. It does not explain the remaining parameters, the return contract, or asynchronous behavior, and it does not situate the tool within the surrounding workflow of status checking and downstream video/youtube steps.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only adds meaning for the images parameter by specifying URL/path formats and a count range. The other five parameters (timeout, enable_pbr, should_remesh, should_texture, texture_prompt) are left entirely to their property names, with no explanation of effect or trade-offs.

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

Purpose5/5

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

States a specific function: converting 1-4 reference images of one subject into a textured .glb model. The 'Multi-image' qualifier and image-count range distinguish it from the sibling single-image tool. Format of output is explicit.

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

Usage Guidelines3/5

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

Provides clear context that the tool accepts 1-4 images of one subject, which implies the multi-image use case. However, it does not explicitly name alternatives like generate_3d_from_image or state when one should be preferred over the other, leaving some routing up to inference.

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

generate_3d_modelA

Generate a 3D model from a text prompt via Meshy.ai (preview → refine).

art_style: realistic | cartoon | low-poly | sculpture. The refine stage TEXTURES the model: enable_pbr (default True) for PBR textures, and texture_prompt for extra texturing guidance (e.g. "weathered bronze, mossy"). Blocks until the textured model is ready; returns its local .glb path and both Meshy task ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
art_styleNorealistic
should_remeshNo
texture_promptNo
enable_pbrNo
timeoutNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the blocking behavior, the two-stage process (preview then refine), details about texturing (enable_pbr, texture_prompt), and the return of local .glb path and task IDs. This is rich context, though it does not cover failure modes or timeout handling.

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

Conciseness5/5

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

The description is concise and well-structured, using line breaks and bullet-style listing for art_style and texture options. Every sentence adds value: purpose, workflow, parameter hints, and return info. No superfluous text.

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

Completeness4/5

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

Given the absence of output schema, the description helpfully specifies the return values. It covers the main workflow and key parameters. However, it omits details on error handling, the meaning of task IDs, and the 'should_remesh' parameter. For a tool with 6 parameters and no output schema, it is mostly complete but could be improved.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains prompt (required), art_style (lists values), enable_pbr and texture_prompt for refinement, and timeout (blocks). However, it fails to explain the 'should_remesh' parameter, which is present in the schema but absent from the description, leaving a gap.

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

Purpose5/5

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

The description clearly states the tool generates a 3D model from a text prompt via Meshy.ai, with a preview-to-refine workflow. It lists art style options and distinguishes from sibling tools like generate_3d_from_image or animate_model by focusing on text-to-3D generation.

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

Usage Guidelines3/5

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

The description briefly mentions the refine stage textures the model and that the tool blocks until ready, but does not explicitly state when to use this tool versus alternatives (e.g., generate_3d_from_image) or provide contraindications. The context of sibling tools helps, but direct guidance is missing.

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

get_meshy_task_statusA

Inspect any Meshy task by id. If it SUCCEEDED and download=True and it has a GLB, download it locally and include the path.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
downloadNo

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses a conditional side effect (downloading a GLB file) but fails to specify the return value when download conditions are not met, or what happens if the file already exists. With no annotations, the description carries the full burden and provides only partial transparency.

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

Conciseness5/5

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

The description is a single efficient sentence conveying core purpose and conditional behavior. Every word contributes value, with no redundancy.

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

Completeness2/5

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

Given no output schema and no annotations, the description lacks critical information: what is returned (status object, path), error handling, behavior for pending tasks, and download path details. The agent cannot fully anticipate the tool's output or side effects.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains the 'download' parameter's effect when true, but barely clarifies 'task_id' beyond 'by id'. The description adds some meaning but not enough for full parameter understanding.

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

Purpose5/5

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

Description clearly states the verb 'inspect' and the resource 'Meshy task by id', making the primary action unambiguous. It also specifies a conditional side effect (download if conditions met), which further defines the tool's scope.

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

Usage Guidelines4/5

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

The description implies when to use (checking a task's status, potentially downloading result) but does not explicitly exclude alternatives or mention when not to use. Sibling tools are all different operations, so differentiation is clear.

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

image_to_bottubeB

One-shot: an image -> Meshy image-to-3D -> turntable -> BoTTube video.

Always returns a dict (ok + watch_url, or ok=False + error/failed_stage + partial artifacts).

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYes
titleYes
descriptionNo
tagsNo3d,meshy,turntable
categoryNo
enable_pbrNo
should_textureNo
should_remeshNo
framesNo
resolutionNo
fpsNo
durationNo
timeoutNo

TDQS

B3.4/5.0
Behavior3/5

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

The description discloses the return format (dict with ok+watch_url or error+failed_stage+partial artifacts) and the sequential pipeline steps. However, it does not mention potential side effects, resource usage, or authentication needs. With no annotations, this is moderately helpful but leaves gaps.

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

Conciseness4/5

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

The description is two sentences long, with the first sentence front-loading the main pipeline and the second covering the return type. No unnecessary words, but given the tool's complexity, more detail could be added without sacrificing brevity.

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

Completeness2/5

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

With 13 parameters, no annotations, no output schema, and many siblings, the description is insufficient. It lacks parameter explanations, prerequisites, failure behavior details, and differentiation from siblings like meshy_to_bottube or animate_to_bottube. The return format hint is helpful but incomplete.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain any of the 13 parameters (e.g., image, title, enable_pbr, frames). It only mentions the pipeline but provides no details about parameter purpose or constraints, failing to compensate for the missing schema descriptions.

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

Purpose5/5

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

The description clearly states the pipeline: image -> Meshy image-to-3D -> turntable -> BoTTube video. This specific verb+resource sequence distinguishes it from siblings that handle only intermediate steps (e.g., generate_3d_from_image, upload_to_bottube).

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

Usage Guidelines4/5

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

The description implies when to use this tool: when you want to go directly from an image to a BoTTube video. It does not explicitly state when not to use it or suggest alternatives, but the pipeline definition provides clear context.

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

meshy_to_bottubeA

One-shot: prompt -> Meshy 3D -> turntable -> video -> BoTTube upload.

Preflights every dependency up front (so a missing Blender/ffmpeg/key can't waste a billed Meshy generation), then runs the whole pipeline in a single working directory.

Always returns a dict. On success: ok=True plus watch_url / watch_url_full and every intermediate path. On a known stage failure: ok=False with error / failed_stage and whatever artifacts were produced before the failure (so nothing is silently lost).

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
titleYes
descriptionNo
tagsNo3d,meshy,turntable
categoryNo
art_styleNorealistic
should_remeshNo
texture_promptNo
enable_pbrNo
framesNo
resolutionNo
fpsNo
durationNo
timeoutNo

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description fully bears the burden. It discloses preflight dependency checks, single working directory usage, return dict structure, success/failure details, and artifact preservation. This is comprehensive behavioral disclosure.

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

Conciseness5/5

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

The description is extremely concise for the complexity, using bullet points and short sentences. It front-loads the pipeline summary and then adds essential behavioral details without redundancy.

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

Completeness4/5

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

Given 14 parameters and no output schema, the description covers the return value well and explains the pipeline flow. However, it lacks parameter semantics and could include a note on required inputs. Still, it is largely complete for a complex tool.

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

Parameters2/5

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

The description adds no information about the 14 parameters beyond the schema. With 0% schema description coverage, the description should compensate by explaining key parameters like art_style, texture_prompt, frames, etc., but it does not.

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

Purpose5/5

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

The description clearly states the tool's purpose: a one-shot pipeline from text prompt to BoTTube upload, passing through Meshy 3D, turntable rendering, and video generation. It distinguishes itself from sibling tools by combining multiple steps into a single invocation.

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

Usage Guidelines4/5

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

The description implies when to use this tool (for a full pipeline) and provides behavioral context (preflights, error handling). However, it does not explicitly contrast with alternatives like using individual steps, but the unique combination makes the use case clear.

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

prepare_videoC

Make a video meet BoTTube upload constraints (720x720, faststart, audio).

ParametersJSON Schema
NameRequiredDescriptionDefault
video_pathYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided; description fails to disclose side effects, whether modification is in-place, return format, or permissions needed.

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

Conciseness4/5

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

Single sentence, no filler, but could benefit from more structured detail.

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

Completeness2/5

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

Minimal info for a 1-param tool; no explanation of output, process, or assumptions given lack of output schema.

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

Parameters1/5

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

Schema coverage 0%; description adds no info about the single parameter 'video_path' beyond its name.

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

Purpose5/5

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

Clearly states the tool transforms a video to meet BoTTube upload constraints (720x720, faststart, audio). Distinguishes from siblings like upload_to_bottube and frames_to_video.

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

Usage Guidelines2/5

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

No guidance on when to use vs alternatives, no explicit context or prerequisites. Only implies it should be used before uploading.

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

render_turntableA

Render a GLB model as a 360° turntable to PNG frames (requires Blender). Frames are written to a fresh working dir; the path is returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
glb_pathYes
framesNo
resolutionNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, description carries full burden. Discloses Blender dependency, writes to fresh temp dir (no side effects), returns path. Does not detail any side effects or edge cases, but core behavior is transparent.

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

Conciseness5/5

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

Two efficient sentences. Front-loaded with purpose and prerequisite, followed by output behavior. No wasted words.

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

Completeness2/5

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

Lacking parameter descriptions for 'frames' and 'resolution', and no output schema or return value detail beyond 'path is returned'. Incomplete for a 3-parameter tool with no annotations.

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

Parameters1/5

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

Schema description coverage is 0% and description adds no parameter details. 'GLB model' hints at 'glb_path' but does not explain 'frames' or 'resolution'. Agent cannot understand parameter semantics from description alone.

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

Purpose5/5

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

Clearly states verb 'Render', resource 'GLB model', output 'PNG frames as 360° turntable', and prerequisite 'requires Blender'. Distinct among sibling tools like 'animate_model' which may produce video or other outputs.

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

Usage Guidelines3/5

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

Mentions Blender requirement and output location, but does not provide explicit when-to-use vs alternatives or exclude scenarios. Context is implied but not articulated.

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

retexture_modelA

Re-texture an existing model into a new variant. Identify the source by input_task_id (a prior Meshy task) or a public model_url; describe the look with text_style_prompt or image_style_url. Returns the new .glb path.

ParametersJSON Schema
NameRequiredDescriptionDefault
text_style_promptNo
image_style_urlNo
input_task_idNo
model_urlNo
enable_pbrNo
timeoutNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose that a new variant is produced and the .glb path is returned, but it omits important behavior like whether the task is asynchronous, whether the original model is modified, or whether any polling is required. Some useful context, but not complete.

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

Conciseness5/5

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

Two efficient sentences with no filler. The core action is front-loaded, and the output path is stated at the end, making it easy to parse.

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

Completeness2/5

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

No annotations or output schema exist, so the description is the only guide. It covers the primary workflow and output, but misses two parameters, fails to state whether exactly one source is required, and says nothing about asynchronous execution or status checking. This is a significant gap for a 6-parameter tool.

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

Parameters3/5

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

With 0% schema coverage, the description compensates for four of six parameters by explaining their roles and 'or' relationships. It ignores timeout and enable_pbr, leaving their purpose unclear, so compensation is only partial.

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

Purpose5/5

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

States a specific verb 'Re-texture' and resource 'existing model', clearly distinguishing it from generation, rigging, and animation siblings. It also names the input modes and output path, so an agent understands exactly what the tool does.

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

Usage Guidelines4/5

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

The description gives clear context: use this when you want a new variant of an existing model. It also explains the either/or relationships for source and style parameters, which is useful guidance. However, it does not explicitly mention alternatives or conditions when not to use it.

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

retexture_to_bottubeC

One-shot: re-texture an existing model -> turntable -> BoTTube video. Great for publishing texture variants of one model. Always returns a dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
text_style_promptNo
image_style_urlNo
input_task_idNo
model_urlNo
descriptionNo
tagsNo3d,meshy,retexture
categoryNo
enable_pbrNo
framesNo
resolutionNo
fpsNo
durationNo
timeoutNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It states the tool 'always returns a dict' and is 'one-shot', but does not explain what the dict contains, whether the operation is asynchronous (returning a task ID), or how errors are handled. This leaves critical gaps for an AI agent.

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

Conciseness4/5

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

The description is concise, with two sentences that efficiently convey the core pipeline and a use case. However, the extreme brevity sacrifices necessary detail for parameter understanding, making it less effective overall.

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

Completeness1/5

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

Given the tool has 14 parameters, no output schema, and a complex pipeline (retexture + turntable + upload), the description is severely incomplete. It does not explain which inputs are essential (e.g., model_url or input_task_id), the meaning of video parameters, or the structure of the return value. An agent cannot reliably invoke this tool based solely on the description.

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

Parameters1/5

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

Schema description coverage is 0%, and there are 14 parameters. The description provides no explanation for any parameter beyond their names. For example, the required 'title' parameter is not elaborated, and parameters like 'frames', 'resolution', 'fps', 'duration' are ambiguous (likely for the video but not specified). The agent cannot determine proper values without additional context.

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

Purpose5/5

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

The description clearly states the tool performs a one-shot retexture of an existing model, generates a turntable animation, and produces a BoTTube video. It specifically mentions its use for publishing texture variants, distinguishing it from sibling tools like retexture_model (which likely only retextures) and upload_to_bottube (which uploads existing content).

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

Usage Guidelines3/5

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

The description provides a use case ('great for publishing texture variants of one model') but does not specify when to avoid using this tool or suggest alternatives among the many siblings (e.g., animate_to_bottube, image_to_bottube). Usage context is implied but no explicit guidance on selection.

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

rig_modelA

Auto-rig a humanoid model for animation (a skeleton). Identify it by input_task_id (a prior Meshy generation) or a public model_url. Returns rig_task_id — feed it to animate_model.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_task_idNo
model_urlNo
height_metersNo
timeoutNo

TDQS

A4/5.0
Behavior3/5

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

No annotations provided so description bears full responsibility. It discloses the core behavior (auto-rigging) and input/output flow but does not mention edge cases (e.g., conflicting inputs), error handling, or side effects. Adequate but not exhaustive.

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

Conciseness5/5

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

Two sentences, no redundancy. Front-loads the purpose, then efficiently details inputs and output linkage. Every sentence is essential.

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

Completeness4/5

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

For a tool with 4 parameters, no required fields, and no output schema, the description captures the primary workflow and connects to a sibling tool. However, the lack of explanation for height_meters and timeout reduces completeness slightly.

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

Parameters3/5

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

Schema coverage is 0%, so description must compensate. It explains input_task_id and model_url as identification methods, adding meaning to these parameters. However, height_meters and timeout are not mentioned, leaving gaps in parameter understanding.

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

Purpose5/5

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

The description clearly states the tool auto-rigs a humanoid model for animation, specifies inputs (input_task_id or model_url), and output (rig_task_id), distinguishing it from sibling tools like animate_model by directly linking the output.

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

Usage Guidelines4/5

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

Provides clear context on how to identify the model (via prior task ID or public URL) and directs the agent to feed the result to animate_model. Lacks explicit when-not-to-use or alternatives but is sufficient given sibling differentiation.

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

upload_to_bottubeB

Upload a finished mp4 to BoTTube. tags is comma-separated; category is an optional BoTTube category id (e.g. "comedy", "ai-art", "music").

Note: this uploads whatever local file you point it at, under your own BoTTube API key — intentional, so you can publish videos made elsewhere.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_pathYes
titleYes
descriptionNo
tagsNo
categoryNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided. The description discloses that the operation uses the user's API key and is intentional for publishing. It does not describe side effects like overwriting or rate limits, but the core behavior is transparent.

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

Conciseness4/5

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

Compact two-sentence format. The first sentence states the core action; the second adds a practical note. No extraneous text, though it could list parameters more systematically.

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

Completeness3/5

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

Missing output schema and details on error handling, file size limits, or result feedback. For a 5-parameter tool with no annotations, the description is adequate but not thorough.

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

Parameters3/5

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

Schema coverage is 0%. The description explains 'tags' is comma-separated and 'category' with examples, adding value. However, 'video_path', 'title', and 'description' are not elaborated, leaving them to rely on bare schema.

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

Purpose4/5

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

The description clearly states it uploads a finished mp4 to BoTTube. It specifies the file format and destination, but does not explicitly differentiate from sibling tools like animate_to_bottube or image_to_bottube.

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

Usage Guidelines3/5

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

The description mentions uploading local files under your own API key, implying use when you have a local mp4. However, it lacks when-not-to-use guidance or explicit alternatives, leaving some ambiguity.

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

Tool Schema Changelog

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

  1. 15 tool updatesv0.1.0
    • First observedanimate_model
    • First observedanimate_to_bottube
    • First observedframes_to_video
    • First observedgenerate_3d_from_image
    • First observedgenerate_3d_from_images
    • First observedgenerate_3d_model
    • First observedget_meshy_task_status
    • First observedimage_to_bottube
    • First observedmeshy_to_bottube
    • First observedprepare_video
    • First observedrender_turntable
    • First observedretexture_model
    • First observedretexture_to_bottube
    • First observedrig_model
    • First observedupload_to_bottube

TDQS

A3.6/5.0

Scored across 15 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: individual generation tools (image, multi-image, text), retexturing, rigging, animation, rendering, video preparation, and upload. The one-shot pipeline tools (e.g., animate_to_bottube, image_to_bottube) are differentiated by their input type and are well-described, leaving no ambiguity.

Naming Consistency5/5

Tool names consistently use snake_case with a verb_noun pattern (e.g., animate_model, render_turntable, upload_to_bottube). Pipeline tools follow a predictable 'X_to_bottube' convention. The naming is uniform and easy to understand for an agent.

Tool Count5/5

With 15 tools, the server covers a complex multi-step workflow (3D generation, rigging, animation, rendering, video creation, upload) without unnecessary bloat. Each tool is justified and the count feels appropriate for its scope.

Completeness5/5

The tool set covers the entire pipeline from text/image to 3D model to video upload, including tasks like retexturing, rigging, animation, status checking, and video processing. There are no obvious gaps that would cause agent failures for its intended use case.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers