MCP server for electronic store product management with search, purchasing, inventory resources, and restock analysis prompts
The server has 1 tool explicitly defined (cari_produk), which is visible in the code with minimal schema. The tool has a basic description and structured input schema, but significant gaps exist: parameter descriptions are completely absent (the 'keyword' parameter has no documentation), output schema is not documented, error handling is minimal, and tool naming/composition patterns are not fully followed. The schema shows type information (object with string property), meeting the baseline of having visible types, but lacks the depth needed for production LLM interactions. The tool lacks actionable error messages and recovery guidance. Per the rubric baseline, 100% of A+ tool parameters have descriptions; this tool has 0%. The code sample also mentions 'tool beli_barang' in comments but provides no actual implementation, tools must be directly visible and complete in source to be scored above 50.
Mencari produk berdasarkan nama
Parameter 'keyword' lacks a description. The JSON schema defines it as a string but provides no documentation of what values are valid, how it is matched (exact/partial/fuzzy), or what behavior to expect.
No output schema documented. The tool returns a JSON array of products, but the response structure (which fields? data types? pagination?) is not specified in the tool definition. LLMs cannot plan downstream tool calls without knowing what fields to expect. LLMs need to know what fields to expect.'
No error handling or recovery guidance. If the keyword matches no products, the tool returns an empty array with no explanation. If the products.json file is malformed, a JSON parse error is thrown with no context for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 27 | - | v1 |
Tool composition incomplete. The code mentions 'beli_barang' tool in CallToolRequestSchema but provides only a placeholder comment ('// ... tool beli_barang (kode sama seperti sebelumnya)'). The tool is not fully implemented in the visible source.
No input validation or constraint documentation. The 'keyword' parameter accepts any string with no minimum length, maximum length, or pattern constraints. If an LLM passes an empty string, special characters, or very long input, the behavior is undefined.
Tool description is generic and lacks context for LLM selection. 'Mencari produk berdasarkan nama' (Search product by name) does not explain: Is this a full-text search? Case-sensitive? Does it match partial names or exact names? What are the use cases?