MCP server for searching, listing, and downloading assets from ambientCG API
Three tools with clear verb-noun naming (search_, list_, download_) and reasonable descriptions (100-150 chars). All parameters have type definitions and descriptions. However, output schemas are not explicitly documented in the source code, only inferred from skill_success() calls. Parameter descriptions lack format constraints, ranges, and validation guidance. Error handling uses generic skill_exception() without recovery hints. No enum constraints for asset_type despite a known set of valid values. Missing documentation of output structure for downstream tool chaining.
Download a specific ambientCG asset variant and generate asset descriptor metadata
List available download options for a specific ambientCG asset
Search for ambientCG assets by query, type, sort order, and limit
Output schemas not documented. skill_success() calls return structured data (assets, downloads, file, asset_descriptor) but no formal schema is visible in tool definitions. LLMs cannot plan downstream calls without knowing response structure.
asset_type parameter accepts a known set of values (all, 3dmodel, material, hdri, atlas, decal, terrain, plaintexture, substance, brush) but is defined as free-form string. Should be an enum to prevent hallucinated values and guide LLM selection.
Parameter descriptions lack format constraints and validation rules. E.g., 'limit' has no min/max bounds (default 10, but what's the API max?), 'download_attribute' has no format hint (e.g., '2K-JPG' is an example, not a constraint), 'output_dir' has no validation guidance (expanduser/resolve happens inside tool, not documented).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Error handling uses generic skill_exception() without recovery guidance. E.g., 'Failed to download ambientCG asset' tells the LLM nothing about why it failed or what to try next. Should include actionable hints like 'Invalid download_attribute, try list_ambientcg_downloads() first.'
Tool definitions inferred from test file (tests/smoke_test.py) rather than explicit MCP server registration code. No visible MCP server implementation (e.g., no main.py, no tool registration via MCP SDK). Cannot verify actual tool registration, schema format, or protocol compliance.