MCP server hub for managing users, tools, and WebSocket worker connections. Provides dynamic tool registration, user management with premium tiers, and real-time database synchronization.
This server has severe definition quality issues across all tools. Transport is unknown (not visible in source code), which is a critical deficiency. Tool descriptions are present but minimal and lack WHEN to use guidance. Input schemas are defined with enums for some tools, but parameter descriptions are generic or missing entirely. No documented output schemas, no error handling guidance, and no per-tool access controls. The tool_manager.py extracts tool info from JSON docstrings dynamically, which is brittle, tools like get_doji_gold_price and get_sjc_gold_price have mismatched required arrays (empty array despite goldtype being required). No tool has descriptive output documentation, making it impossible for LLMs to plan multi-step chains.
Get the current cryptocurrency price from CoinMarketCap.
Fetch detailed news content from a VNExpress article URL.
Get the current DOJI gold price.
Fetch the latest news articles from VNExpress.
Get the current SJC gold price.
No documented output schemas for any tool. LLMs cannot determine what fields to expect or plan downstream calls. All tools return results without specifying structure.
Tool descriptions are minimal (25-40 chars). get_doji_gold_price description is missing entirely, making it indistinguishable from get_sjc_gold_price. Lack of WHEN to use guidance forces LLMs to guess.
Parameter 'goldtype' in get_doji_gold_price and get_sjc_gold_price has required=[] (empty array) despite being listed as required in tool spec. JSON schema is malformed, required array should contain parameter names, not be empty.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 37 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Parameter descriptions are generic or missing context. 'The IP address to lookup. Use blank to lookup your own IP address.' in get_my_ipaddress_info is unclear, does blank mean empty string, null, or omit the parameter? No format specification.
No error handling guidance. Tools that call external APIs (news fetch, price lookups) can fail, but there is no documentation of failure modes, retry guidance, or what to do if a resource is not found.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared in the schema, forcing LLMs to infer safety properties.
Tool definitions are extracted from JSON docstrings dynamically via AST parsing in gen_tool_description(). This is fragile, if a docstring is malformed JSON, the tool silently fails to register (logged as warning but not enforced). No validation of extracted schema structure.
News tools (get_latest_news, get_detail_news) accept arbitrary category enums and URLs but do not document what VNExpress-specific constraints apply. Category 'popular' may have different semantics than 'latest', not explained.