This server exhibits critical definition quality failures across all 13 tools. Tool names violate verb_noun convention (e.g., 'POST /api/admin/agents/[id]/api-key' instead of 'generate_agent_api_key'). Descriptions are Chinese-language and extremely brief (4-10 characters: '生成新的 API Key', '获取 Agent 详情'), falling far below the 10-1024 character baseline and the 50-200 character LLM-optimized range. Most critically, NO input schemas are visible in the provided code, only informal parameter lists are shown. The source code dump shows package.json and component exports but does NOT contain the actual MCP tool registration, handler implementations, or explicit schema definitions. Without seeing route.ts files' actual contents (only filenames listed), we cannot verify schema correctness. Parameters lack type information in the visible documentation, e.g., 'id' shows only {'type':'string','description':'Agent ID'} in the rubric summary, but no evidence that these are formally registered in MCP. Output schemas are completely undocumented. Error handling is not visible. The server appears to be a Next.js HTTP API, not an MCP server with proper tool definitions.
All tool descriptions are in Chinese and under 20 characters (e.g., '生成新的 API Key' = 10 chars, '获取 Agent 详情' = 8 chars). LLM cannot determine tool purpose.
POST /api/admin/agents/[id]/api-keyGET /api/admin/agents/[id]PUT /api/admin/agents/[id]GET /api/admin/agentsPOST /api/admin/articles/[id]/deprecate
Rewrite all tool descriptions in English and expand to 50-200 characters following LLM-optimized format. Example: 'Generate a new API key for an agent. Call this when the agent's key has been compromised or needs rotation.' instead of '生成新的 API Key'.
Document explicit JSON Schema input schemas for each tool. Every parameter must have 'type', 'description', and where applicable, 'enum' or 'pattern'. Ensure these are registered in MCP tool definitions, not just as HTTP parameters.
Document output schemas. For each tool, specify the response object structure and field types. Example for 'get_agent': '{"id": string, "name": string, "description": string, "status": "active"|"suspended", "created_at": ISO8601, "daily_limit": number, "monthly_limit": number}'.
Score history
Overall score trend
↑ 5 points across a rubric change (v1 → v2)
13/100
Scored
Grade
Overall
Spec posture
Rubric
2026-09-22
F
13
2026-07-28+
v2
2026-03-09
F
8
-
v1
POST /api/admin/articles/[id]/verify
write5/100
为文章添加验证记录
PUT /api/admin/agents/[id]write5/100
更新 Agent
PUT /api/admin/articles/[id]write5/100
更新文章
PUT /api/admin/articles/[id]/verify/[recordId]write5/100
Tool names do not follow verb_noun convention. HTTP method+path (e.g., 'POST /api/admin/agents/[id]/api-key') is exposed as tool name instead of semantic action (e.g., 'generate_agent_api_key'). LLM cannot infer intent from the name alone.
Destructive operations (DELETE /api/admin/articles/[id], DELETE /api/admin/articles/[id]/verify/[recordId]) have no confirmation or dry-run mode documented. Agents can permanently delete data without safeguards.
Parameters lack granular descriptions. E.g., 'id' has only 'Agent ID' or 'Article ID', does not clarify format, constraints, or how to obtain it if not known.
Status and result enums ('status', 'result' in PUT /api/admin/agents/[id] and POST /api/admin/articles/[id]/verify) are not explicitly constrained as enums in visible schema. Free-form strings invite hallucinated invalid values.
PUT /api/admin/agents/[id]POST /api/admin/articles/[id]/verifyPUT /api/admin/articles/[id]/verify/[recordId]
Add enum constraints for status, result, and other multi-value parameters. E.g., 'status' in PUT /api/admin/agents/[id] should explicitly enumerate valid values: ["active", "suspended", "archived"].
Implement confirmation/dry-run mode for destructive operations (DELETE tools). Before deletion, return a 'confirm' step requiring user/agent acknowledgment. Pattern: 'confirmation-request' (https://arcade.dev/patterns/confirmation-request).
Add error handling guidance to all tools. Responses should include actionable recovery hints: 'Agent not found. Call list_agents() to see available agents.' instead of bare 404.
Enhance parameter descriptions. For 'id' fields, clarify: 'Agent ID (UUID format, e.g., 550e8400-e29b-41d4-a716-446655440000)'. For arrays like 'types' in generate_article_content, specify: 'Array of generation types to trigger. Valid values: "qa" (generate Q&A pairs), "keywords" (extract keywords), "related" (suggest related articles). Example: ["qa", "keywords"]'.
Verify MCP registration: Ensure all 13 tools are registered via the MCP Tools interface with complete schemas, not just exposed as HTTP endpoints. Current source code shows only route.ts filenames, not the actual MCP tool definitions, you must add explicit tool registration code.
Add per-tool security annotations if supported by MCP (toolAnnotations feature). Mark read-only operations with readOnlyHint and destructive operations with destructiveHint so the LLM can apply caution.