3D Valley
Server Details
Search 10k+ free CC0 3D models by meaning/size; generate and remesh from chat.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 8 tools
Each tool has a clearly distinct role: billing status (account), creation (generate_model, generate_texture), editing (edit_model), discovery (search_assets, get_asset), async polling (get_job) and file intake (upload_file). The only mild adjacency is generate_model vs generate_texture, but the names and descriptions cleanly separate object creation from seamless PBR texture creation.
Seven of eight tools follow a consistent verb_noun snake_case pattern (generate_model, edit_model, get_job, upload_file). Only 'account' breaks the pattern as a bare noun, but it is still readable and unambiguous.
Eight tools is well-scoped for a 3D generation service, covering the full pipeline of search, upload, generate, edit, poll and inspect. No tool feels redundant and none appear to be missing at this count.
The lifecycle is well covered: input (upload_file), discovery (search_assets, get_asset), creation/editing (generate_model, edit_model, generate_texture), async retrieval (get_job) and cost awareness (account). Minor gaps exist around job management, such as listing or cancelling outstanding jobs, but these are workaroundable.
Available Tools
8 toolsaccountCredits and pricesARead-onlyIdempotentInspect
The credit balance, the price of every tool and model in credits (1 credit = $0.01), the rate limits and this key's daily spending cap. Check before spending.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds the credit unit conversion (1 credit = $0.01) and clarifies that the spending cap is key-specific, both of which are useful behavioral context beyond the 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?
It is a single compact sentence listing the returned data points plus a short usage directive. Nothing is wasted, though the noun-phrase opening is slightly less front-loaded than a verb-first description would be.
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 zero-parameter, read-only, informational tool with an output schema, the description covers all the relevant return categories and tells the agent when to call it. No material gaps remain.
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?
The tool takes no parameters and the schema is empty, so there is no parameter semantics to explain. The baseline score of 4 therefore 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?
The description enumerates exactly what the tool returns: credit balance, per-tool/model prices with a credit-to-dollar conversion, rate limits, and this key's daily spending cap. That is specific enough to distinguish it from the action-oriented siblings such as generate_model and upload_file, though the name 'account' alone is generic.
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 clear directive — 'Check before spending' — which tells the agent when this tool is relevant. It does not name an alternative or explicitly state when not to use it, but for a zero-parameter informational tool that is a minor omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_modelEdit a 3D modelAIdempotentInspect
Change a model you have: retexture (new PBR textures from a picture or words; trellis-2-texture 5, trellis-2-texture-pro 10, tripo-texture 20, tripo-texture-detailed 40 credits) or remesh (new, clean topology at a face count; tripo-remesh 50 credits). The mesh is an https URL, an upload id from upload_file, a library id (ph:wooden_barrel_01) or a job id, so steps chain without downloading. Waits about 45 s, then returns job_id for get_job. To reduce, compress, convert or repair a file, use gltf-transform or Blender locally.
| Name | Required | Description | Default |
|---|---|---|---|
| mesh | Yes | The model: URL, upl_..., library id, or job_... | |
| image | No | retexture: the look as a picture. | |
| model | No | retexture or remesh: the model to use. | |
| prompt | No | retexture: the look in words, when there is no picture. | |
| options | No | remesh: faces (500 to 20,000; 10,000 as quads), topology (quads|triangles). | |
| operation | Yes | ||
| max_credits | No | ||
| wait_seconds | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| error | No | |
| output | No | |
| status | No | |
| credits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing per-model credit costs (5/10/20/40 for texturing, 50 for remesh) and the async pattern: waits ~45 s then returns job_id for get_job. That is exactly the kind of cost and latency context annotations cannot express. It stops short of explaining failure behavior, what max_credits does when exceeded, or how wait_seconds interacts with the stated 45 s wait.
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?
The core scope is front-loaded in the first clause, and the credit table and chaining note follow in priority order. The parenthetical credit lists are dense but each parenthetical carries real information; no sentence is pure 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 async, open-world generation tool with an output schema, it covers cost, input forms, wait duration and the follow-up call, which is most of what an agent needs. The remaining gap is the mesh-vs-model parameter ambiguity in a 9-parameter, nested-object 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?
With 56% schema coverage the description must compensate, and it partially does by clarifying that mesh accepts a URL, upload_file id, library id or job id, reinforcing chaining. However it never resolves the confusing overlap between 'mesh' and 'model' (both described as the model), and leaves max_credits and idempotency_key entirely unaddressed in the text.
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 ('Change a model you have') and immediately enumerates the two operations, retexture and remesh, with the concrete models that back each. This makes it distinguishable at a glance from generate_model and generate_texture, which create rather than modify.
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 scopes usage to models you already have and names an exclusion: 'To reduce, compress, convert or repair a file, use gltf-transform or Blender locally.' It also states the input forms so steps chain without downloading, and points to get_job for the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_modelGenerate a 3D modelAIdempotentInspect
Make one 3D object (never a scene) as a textured GLB, from a picture (image) or a description (prompt). Costs credits, which the user bought: image models trellis-2 5, trellis-2-pro 15, hunyuan-3d-3-1-pro 90, tripo-3-1 50, tripo-3-1-detailed 100; from a prompt add the picture model (flux-2-klein 1). Pass max_credits to refuse anything dearer. For a game or the web pass max_faces (5000-20000; the default is 200,000 triangles), and from a prompt style lowpoly to match low-poly kits. The GLB stands on its base at the origin, like library models. Waits about 45 s, then returns job_id for get_job if it is not done. Calling again with the same arguments resumes the same job and never charges twice; pass a new idempotency_key to make another one.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| image | No | A picture of one object: an https URL, a data: URI, an upload id from upload_file, or a job id. | |
| model | No | Default trellis-2. See account for every model and its price. | |
| style | No | From a prompt: lowpoly draws a flat-shaded, flat-colour game asset to match low-poly kits; stylized a hand-painted look. | |
| prompt | No | A description of one object: "a weathered wooden barrel with iron bands". | |
| max_faces | No | Most triangles in the model, at no extra cost: 5,000-20,000 for game or web use (the default is 200,000). | |
| image_model | No | The picture model for a prompt: flux-2-klein (default), muse-image, gpt-image-2-5. | |
| max_credits | No | Refuse the job if it would cost more. | |
| wait_seconds | No | ||
| idempotency_key | No | Only to make a second, different job from identical arguments. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| error | No | |
| output | No | |
| status | No | |
| credits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety/idempotency profile; the description adds the material behavior an agent needs: per-model credit prices, refusal via max_credits, a ~45 s wait that returns job_id for get_job, same-arguments resumption with no double charge, and the GLB orientation at the origin. That goes well beyond what readOnlyHint/idempotentHint 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 purpose and scope, then costs, then sizing guidance, then job behavior — a sensible order. It is dense and semicolon-heavy, and the inline price list adds bulk, but nearly every clause carries information an agent would otherwise have to guess.
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 generative tool with an output schema, the description covers cost, latency, resumption, sizing, and orientation. Gaps are small: no statement about what happens if both image and prompt are supplied, and no mention of behavior when credits are exhausted or max_credits rejects the job.
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 80%, so the baseline is 3; the description earns above that by attaching prices to model names, explaining max_credits as a spend guard, and clarifying idempotency_key's exact purpose (a second, different job). It still doesn't explain seed or wait_seconds semantics beyond 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?
States a specific verb and resource ("make one 3D object ... as a textured GLB") and scopes it explicitly ("never a scene") with the two input modes named. This separates it cleanly from generate_texture, edit_model, and search_assets 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 conditional guidance: image for pictures, prompt for descriptions, max_faces and style=lowpoly for game/web low-poly kits, max_credits to cap spend, new idempotency_key only to force a second job. What's missing is explicit routing to siblings (e.g. edit_model for changing an existing model, generate_texture for textures only) and whether image and prompt can be combined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_textureGenerate a PBR textureCIdempotentInspect
A seamless PBR texture set (base colour, normal, height, roughness, metallic at 2048 px) from a description, for flux-2-klein-material 2, muse-image-material 5, gpt-image-2-5-material 8 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| model | No | Default flux-2-klein-material. | |
| prompt | Yes | The surface: "mossy cobblestones", "brushed steel". | |
| max_credits | No | ||
| wait_seconds | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| error | No | |
| output | No | |
| status | No | |
| credits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavior: what artifacts are produced and the per-model credit cost. It does not explain the asynchronous/job nature implied by the 45-second `wait_seconds` default or what happens when `max_credits` is exhausted.
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?
It is a single front-loaded sentence with no filler, which is good. But the trailing pricing clause ('for flux-2-klein-material 2, muse-image-material 5, gpt-image-2-5-material 8 credits') is hard to parse and forces the reader to reconstruct the model-to-credit mapping.
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 costly, likely asynchronous generative tool with an output schema present (so returns need not be described), the description omits the operational essentials: that generation may exceed the wait window and how to follow up (sibling get_job exists), and what failure/credit-exhaustion looks like. Only the output contents and pricing are 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 only 33% (model and prompt only), so the description must compensate, and it partially does by mapping model names to credit costs, which informs both `model` and `max_credits`. However, `seed`, `wait_seconds` (oddly capped at 50 with default 45) and `idempotency_key` remain completely unexplained in both places.
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: generates a seamless PBR texture set from a description, and enumerates the exact output channels (base colour, normal, height, roughness, metallic) at 2048 px. That is far more concrete than the sibling 'generate_model', though the description never explicitly says how it differs from generate_model or edit_model.
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?
There is no when-to-use / when-not-to-use guidance and no mention of alternatives such as generate_model. The only routing signal is implicit in 'from a description', leaving the agent to infer when a texture rather than a model is wanted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetGet one CC0 assetARead-onlyIdempotentInspect
Full details for one library asset: download URLs per format and resolution, size in metres, up axis and origin, texture maps, a credit line (credit, credit_html), related assets, and import notes for Godot, Unity, three.js and Blender. When you write credits or a README for a project using the asset, include its credit line. Read-only, free.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | An asset id from search_assets, e.g. "ph:wooden_barrel_01". |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered; the description nonetheless contributes the licensing/cost fact ('free') and an obligation attached to the returned data (credit line must be reproduced in READMEs). The trailing 'Read-only' partly restates the annotation, and there is no mention of behavior for an unknown or stale id, which keeps this below 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?
Two sentences, front-loaded with the payload content and then the practical credit-line instruction — nothing is buried. The long mid-sentence enumeration of returned fields is dense and marginally overlaps the output schema, and the closing 'Read-only, free' is a partially redundant tail.
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, enumerating return fields is not strictly required, and parameters are fully documented, so the description is adequate. What it does not address is the one behavior an agent must handle: what happens when an id does not resolve (error vs empty result), which matters for a lookup that is typically called in a loop over search hits.
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?
There is a single parameter at 100% schema coverage, and the schema already explains its format and provenance ('an asset id from search_assets, e.g. "ph:wooden_barrel_01"'). The description adds no further meaning about id, so the baseline 3 for a fully documented single parameter 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?
The description states a specific verb and resource ('Full details for one library asset') and then enumerates exactly what that detail set contains: per-format download URLs, size in metres, up axis and origin, texture maps, credit line, related assets, import notes. That enumeration plus the singular 'one asset' clearly separates it from the sibling search_assets, which finds assets rather than returning a single record.
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?
Usage context is clear: this is the fetch-detail step taken once you have an id, and the description adds a concrete downstream instruction ('when you write credits or a README... include its credit line'). It stops short of an explicit when-not or a named alternative, though the schema's pointer to 'an asset id from search_assets' covers the routing gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobWait for a jobARead-onlyIdempotentInspect
Waits up to about 45 s for a job to finish, or reads where it stands. Safe to call again and again; never charges. When done: download URLs for every file, a preview picture, the model's size in metres and triangle count, and an asset id usable as input to the next step.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| error | No | |
| output | No | |
| status | No | |
| credits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so safety of repetition is partly covered; the description nonetheless adds real value with the ~45 s bound and "never charges", a billing guarantee nothing in the structured fields conveys. It does not say what a timed-out or failed job looks like on return, which would be 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?
Three clauses in roughly two sentences: what it does, how safe it is to repeat, and what comes back — front-loaded with the primary purpose and with no filler. Every phrase carries information an agent would otherwise have to guess.
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, the description need not enumerate return fields, and it still summarizes them usefully (download URLs, preview, size in metres, triangle count, asset id) while covering timeout and cost behavior. What remains missing is the non-success path — what is returned or raised when the wait expires or the job errors.
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 0%, so the description must carry parameter meaning, and it only partly does: "up to about 45 s" gestures at wait_seconds and its default, but never says it is caller-configurable (0–50, minimum 0) or that wait_seconds=0 means a pure non-blocking status read. job_id is left entirely implicit.
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?
"Waits up to about 45 s for a job to finish, or reads where it stands" gives a specific verb (wait/read) and resource (job) plus the two modes of operation, so an agent immediately understands this is a status/polling tool. It does not explicitly name a sibling (generate_model, get_asset) to contrast with, which keeps it short of a 5.
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?
"Safe to call again and again" and "usable as input to the next step" spell out the intended polling loop and downstream handoff, which is the core usage context for a job tool. It stops short of naming what to do instead when the job never finishes (or of pointing to get_asset once an id exists), so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_assetsSearch free CC0 3D assetsARead-onlyIdempotentInspect
Search the free CC0 library of 3D models, PBR textures and HDRIs by meaning and filters. Every model is a GLB measured in metres, +Y up, origin at the base. Check size_m before placing an asset; use min_size_m >= 2 for floors and walls. previews (max 6) attaches thumbnails, which is cheaper than downloading the wrong asset. Each result has match (strong, good or weak); when none is better than weak the answer says so, and generate_model is the way to get the object. Read-only, free with a free account.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | What you need, in words: "wooden barrel", "mossy rock", "sci-fi crate". | |
| maps | No | Must have all of these maps. | |
| pack | No | A pack id from a result ("kn:mini-skate"): only assets from that kit, to keep a game in one style. | |
| sort | No | ||
| type | No | ||
| limit | No | ||
| style | No | ||
| cursor | No | next_cursor from the previous page. | |
| format | No | A file format we serve it in. | |
| rigged | No | ||
| source | No | ||
| min_res | No | Smallest texture resolution: 1k, 2k, 4k. | |
| animated | No | ||
| category | No | A category slug; see the categories in the results. | |
| max_tris | No | At most this many triangles (models). | |
| min_tris | No | At least this many triangles (models). | |
| previews | No | Attach this many thumbnails as images, so you can look before downloading. | |
| max_size_m | No | The largest side at most this many metres. | |
| min_size_m | No | The largest side at least this many metres. Use 2 or more for floors and walls. | |
| similar_to | No | An asset id: the nearest to it by meaning. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| results | No | |
| next_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint/openWorldHint annotations, it discloses asset conventions (GLB, metres, +Y up, origin at base), the match-confidence scale (strong/good/weak) and the degraded-result signal, and the cost/licensing context (free with a free account). These are traits an agent cannot infer from the annotations or schema.
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?
The description is front-loaded, with the verb and resource in the first clause and practical gotchas following in descending priority. It is dense but nearly every sentence carries a distinct call-time decision; the licence sentence at the end is the weakest performer.
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 20-parameter, zero-required search tool with an output schema present, the description covers the decisions that matter most (semantic querying, size filtering, previews, weak-match fallback). Fine-grained filter interactions such as maps+format+source combinations are left to the per-parameter schema entries, which is reasonable.
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 moderate (65%) over 20 parameters, yet the description supplies the operational meaning several schema entries lack: it explains previews' max-6 cost tradeoff, the purpose of min_size_m with a concrete threshold, and derives the size_m convention that makes the size filters meaningful. That genuinely compensates for the coverage gap 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 names a specific verb (search) and the exact resource set (CC0 3D models, PBR textures, HDRIs) plus the two mechanisms, semantic meaning and filters. It is immediately distinguishable from generate_model, get_asset and generate_texture among the siblings.
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 when-to-call guidance (check size_m before placing, min_size_m >= 2 for floors and walls, previews are cheaper than downloading the wrong asset) and an explicit fallback: when no result beats 'weak', use generate_model instead. That is both a routing rule and an exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileUpload a local fileAInspect
The server cannot read the user's disk. This returns an upload id and the exact curl command that sends a local file (a mesh or picture) to it; run that command, then pass the id as the image or mesh of another tool. Uploads last 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| bytes | Yes | The file's size in bytes (ls -l or stat). | |
| filename | Yes | The file's name with its extension, e.g. "chest.glb". | |
| content_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-read-only, non-destructive, non-idempotent write, which is thin for such an unusual tool. The description supplies the context annotations cannot: the server has no disk access, the call is a two-phase handshake rather than the transfer itself, and uploads expire after 24 hours.
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, each carrying distinct information, with the blocking constraint front-loaded so an agent cannot misread this as a normal file-upload call. 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?
An output schema exists, so return values need not be enumerated, yet the description still flags the two useful return elements (upload id and ready-to-run command) that drive the next step. For a two-phase tool this covers everything an agent needs to avoid a failed 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 67% and the two required parameters (filename, bytes) are already well documented in the schema. The description adds only a loose hint about accepted file kinds ('a mesh or picture') and says nothing about content_type, the one undocumented parameter, or why the byte size must be supplied when the file never reaches the server directly.
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 and non-obvious mechanism: it does not transfer the file itself, it returns an upload id plus an exact curl command the agent must run. Naming the constraint ('The server cannot read the user's disk') immediately separates it from generate_model and other siblings that consume assets.
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 the full sequencing: call this, run the returned curl command, then pass the id as the image or mesh of another tool. That is clear when-to-use guidance. It stops short of naming which sibling to pass the id to (generate_model vs generate_texture vs edit_model) or what to do if a 24-hour upload expires.
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.
8 tool updates
- First observed
account - First observed
edit_model - First observed
generate_model - First observed
generate_texture - First observed
get_asset - First observed
get_job - First observed
search_assets - First observed
upload_file
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.