ShiLiu MCP demonstrates moderate quality with consistently documented tool descriptions and proper parameter schemas, but lacks critical metadata in error handling, lacks tool annotation hints, and has minimal composition guidance. All 10 tools are explicitly registered with @mcp.tool decorators and have non-empty descriptions (average ~150 chars). Parameters include type information and descriptions. However, error handling is generic ('Exception as e' → bare error message), no tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present, and responses do not include explicit field documentation. The server targets a specialized domain (AI video generation) and handles the use case adequately, but lacks production-grade error recovery patterns and output schema documentation. Average per-tool score: 58/100.
Creates a avatar based on the user's image url, implemented through the ShiLiu API. Requires image_url. Title is optional. The avatar will be generated in the background and can be viewed later by user via query the avatar status or visit https://16ai.vip. Website Chinese name: 石榴数字人
Creates an avatar (digital human) from a video URL via the ShiLiu API. Requires video_url. Title is optional. The avatar will be generated in the background; query status later or visit https://16ai.vip. Website Chinese name: 石榴数字人
Creates a new speaker (voice) using the ShiLiu API. Title is optional. The speaker will be generated in the background; query status later.
Creates a new video by text using the ShiLiu API. Requires avatar_id, speaker_id, and text. Title is optional. The video will be generated in the background and can be viewed later by user via querying the video status or visiting https://16ai.vip. Website Chinese name: 石榴数字人
Retrieves the status of a avatar generated via the ShiLiu API. Returns progress, status, title. Avatar status may take several minutes depending on queue time. If avatar is not yet complete, status can be checked again later or viewed via https://16ai.vip. Website Chinese name: 石榴数字人
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. CREATE and READ tools are not explicitly marked, forcing LLMs to infer side effects. The rubric requires tools to declare whether they modify state.
Error handling is generic and non-actionable. All tools catch Exception and return 'MCPResponse(code=-1, msg=str(e))'. LLMs cannot determine if errors are retryable, user-fixable, or fatal. No recovery guidance provided.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Retrieves a list of available avatars (digital humans) from the ShiLiu API.
Retrieves the remaining credits in shiliu account.
Retrieves the status of a speaker (voice) generated via the ShiLiu API. Returns progress, status, title.
Retrieves a list of available speakers (voices) from the ShiLiu API.
Retrieves the status of a video generated via the ShiLiu API. Returns progress, status, title, and video download URL (when completed). Video status may take several minutes depending on length of video and queue time. If video is completed, the download link (video_url) also needs to be provided to the user. If video is not yet complete, status can be checked again later or viewed via https://16ai.vip. Website Chinese name: 石榴数字人
Output schemas are not documented in source code. Responses use Pydantic models (MCPAvatarCreateResponse, etc.) but field structures are not visible here. LLMs cannot plan downstream tool calls without knowing what fields to expect (e.g., whether avatar_id is present after creation).
Pagination parameters absent for list tools (get_avatar_list, get_speaker_list). No limit, offset, or cursor parameters; no indication of result size cap. If many avatars exist, response could explode context window.
Irreversible operations (create_avatar_by_image, create_avatar_by_video, create_speaker, create_video_by_text) have no dry-run or confirmation step. Agents cannot preview results before committing. No idempotency guidance.
Parameter descriptions for optional fields (title in create_avatar_by_image, create_avatar_by_video, create_speaker, create_video_by_text) are sparse ('Optional title for the avatar'). Do not explain what impact omitting it has, whether a default is generated, or constraints on length/format.
Composition gap: create_avatar_by_image/video returns response but no explicit guidance that subsequent get_avatar_generation_status requires the avatar_id from the response. LLM must infer the link.