This server has 13 tools with schemas and descriptions, but critical quality gaps prevent production use. Tool names lack action verbs (e.g., 'linked-list' instead of 'create_linked_list'), descriptions are verbose and contain example values that LLMs may reuse literally, and parameter descriptions are sparse or missing. Most tools use a generic 'operation' enum pattern that conflates multiple distinct operations into one tool, violating single-responsibility principle. Schemas are present but parameter descriptions are minimal. No error handling guidance, no output schema documentation, and no tool annotations (readOnlyHint/destructiveHint). The 'doubly-linked-list' tool has a schema inconsistency: 'listId' is required but 'create' operation should not require it.
자동으로 균형을 유지하는 이진 검색 트리인 AVL 트리를 관리하고 조작합니다. AVL 트리는 모든 노드의 왼쪽과 오른쪽 서브트리의 높이 차이가 최대 1을 유지합니다. 사용법:1) 트리 생성: {"operation": "create"} 2) 값 삽입: {"operation": "insert", "listId": "avl_tree_123", "value": "50"} 3) 균형 확인: {"operation": "getBalance", "listId": "avl_tree_123"} 4) 값 검색: {"operation": "contains", "listId": "avl_tree_123", "value": "50"} 5) 트리 출력: {"operation": "toString", "listId": "avl_tree_123"}
이진 검색 트리 자료구조를 관리하고 조작합니다. 이진 검색 트리는 각 노드의 왼쪽 서브트리에는 더 작은 값들이, 오른쪽 서브트리에는 더 큰 값들이 저장됩니다. 사용법:1) 트리 생성: {"operation": "create"} 2) 값 삽입: {"operation": "insert", "listId": "binary_search_tree_123", "value": "50"} 3) 균형 확인: {"operation": "getBalance", "listId": "binary_search_tree_123"} 4) 값 검색: {"operation": "contains", "listId": "binary_search_tree_123", "value": "50"} 5) 트리 출력: {"operation": "toString", "listId": "binary_search_tree_123"}
이중 연결 리스트 자료구조를 관리하고 조작합니다.사용법:1) create 작업으로 시작하여 listId를 얻음 (예: operation: "create")2) 얻은 listId를 이후 모든 작업에 사용3) append/prepend: 리스트에 값 추가 (예: operation: "append", listId: "list_123", value: "some value")4) delete/find: 값 삭제/검색 (예: operation: "find", listId: "list_123", value: "some value")5) toArray: 전체 리스트 조회 (예: operation: "toArray", listId: "list_123")6) toArrayReverse: 역순 전체 리스트 조회 (예: operation: "toArrayReverse", listId: "list_123")
입력된 메시지를 그대로 반환합니다
Tool names lack action verbs. Names like 'linked-list', 'queue', 'stack' are nouns, not verbs. LLMs infer intent from verb-first names. Rename to 'create_linked_list', 'manage_queue', 'manage_stack' or split into separate create/append/delete tools.
Generic 'operation' enum pattern violates single-responsibility principle. Each tool bundles 5-9 distinct operations (create, append, delete, find, etc.) into one tool. This forces LLMs to reason about which operation to invoke and makes error handling ambiguous. Split into separate tools: create_linked_list, append_to_linked_list, delete_from_linked_list, etc.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
해시 테이블 자료구조를 관리하고 조작합니다.사용법:1) create 작업으로 시작하여 listId를 얻음 (예: operation: "create")2) 얻은 listId를 이후 모든 작업에 사용3) set/get/delete/has/getKeys: 해시 테이블에 값 설정/조회/삭제/확인/키 조회 (예: operation: "set", listId: "hash_123", key: "some key", value: "some value")4) toString: 해시 테이블의 내용 문자열로 반환 (예: operation: "toString", listId: "hash_123")
힙 자료구조를 관리하고 조작합니다.사용법:1) create 작업으로 시작하여 listId를 얻음 (예: operation: "create")2) 얻은 listId를 이후 모든 작업에 사용3) add: 힙에 새로운 값을 추가 (예: operation: "add", listId: "heap_123", value: "10")4) peek: 최상위(최소) 값을 조회 (제거하지 않음) (예: operation: "peek", listId: "heap_123")5) poll: 최상위(최소) 값을 제거하고 반환 (예: operation: "poll", listId: "heap_123")6) find: 특정 값의 존재 여부와 위치를 검색 (예: operation: "find", listId: "heap_123", value: "10")7) remove: 특정 값을 힙에서 제거 (예: operation: "remove", listId: "heap_123", value: "10")8) toString: 힙의 전체 내용을 문자열로 반환 (예: operation: "toString", listId: "heap_123")
주어진 숫자가 2의 거듭제곱인지 확인합니다.
연결 리스트 자료구조를 관리하고 조작합니다.사용법:1) create 작업으로 시작하여 listId를 얻음 (예: operation: "create")2) 얻은 listId를 이후 모든 작업에 사용3) append/prepend: 리스트에 값 추가 (예: operation: "append", listId: "list_123", value: "some value")4) delete/find: 값 삭제/검색 (예: operation: "find", listId: "list_123", value: "some value")5) toArray: 전체 리스트 조회 (예: operation: "toArray", listId: "list_123")
우선순위 큐 자료구조를 관리하고 조작합니다.사용법:1) create 작업으로 시작하여 listId를 얻음 (예: operation: "create")2) 얻은 listId를 이후 모든 작업에 사용3) add: 우선순위 큐에 새로운 값을 추가 (예: operation: "add", listId: "priority_queue_123", value: "some value", priority: "10")4) remove: 특정 값을 우선순위 큐에서 제거 (예: operation: "remove", listId: "priority_queue_123", value: "some value")5) changePriority: 특정 값의 우선순위를 변경 (예: operation: "changePriority", listId: "priority_queue_123", value: "some value", priority: "20")6) findByValue: 특정 값의 존재 여부와 위치를 검색 (예: operation: "findByValue", listId: "priority_queue_123", value: "some value")7) hasValue: 특정 값의 존재 여부를 확인 (예: operation: "hasValue", listId: "priority_queue_123", value: "some value")8) compareValue: 두 값을 비교 (예: operation: "compareValue", listId: "priority_queue_123", value1: "some value", value2: "some value")
큐 자료구조를 관리하고 조작합니다.사용법:1) create 작업으로 시작하여 listId를 얻음 (예: operation: "create")2) 얻은 listId를 이후 모든 작업에 사용3) enqueue/dequeue: 큐에 값 추가/제거 (예: operation: "enqueue", listId: "queue_123", value: "some value")4) peek: 큐의 맨 앞 값 조회 (예: operation: "peek", listId: "queue_123")5) isEmpty: 큐가 비어있는지 확인 (예: operation: "isEmpty", listId: "queue_123")6) toString: 큐의 내용 문자열로 반환 (예: operation: "toString", listId: "queue_123")
자동으로 균형을 유지하는 이진 검색 트리인 레드-블랙 트리를 관리하고 조작합니다. 레드-블랙 트리는 각 노드가 빨간색 또는 검은색으로 색칠되어 있으며, 특정 규칙을 따라 균형을 유지합니다. 사용법:1) 트리 생성: {"operation": "create"} 2) 값 삽입: {"operation": "insert", "listId": "red_black_tree_123", "value": "50"} 3) 균형 확인: {"operation": "getBalance", "listId": "red_black_tree_123"} 4) 값 검색: {"operation": "contains", "listId": "red_black_tree_123", "value": "50"} 5) 트리 출력: {"operation": "toString", "listId": "red_black_tree_123"} 6) 노드 색상 확인: - 빨간색 확인: {"operation": "isNodeRed", "listId": "red_black_tree_123", "value": "50"} - 검은색 확인: {"operation": "isNodeBlack", "listId": "red_black_tree_123", "value": "50"} - 색상 존재 확인: {"operation": "isNodeColored", "listId": "red_black_tree_123", "value": "50"}
스택 자료구조를 관리하고 조작합니다.사용법:1) create 작업으로 시작하여 listId를 얻음 (예: operation: "create")2) 얻은 listId를 이후 모든 작업에 사용3) push/pop: 스택에 값 추가/제거 (예: operation: "push", listId: "stack_123", value: "some value")4) peek: 스택의 맨 위 값 조회 (예: operation: "peek", listId: "stack_123")5) isEmpty: 스택이 비어있는지 확인 (예: operation: "isEmpty", listId: "stack_123")6) toArray: 전체 스택 조회 (예: operation: "toArray", listId: "stack_123")
트라이 자료구조를 관리하고 조작합니다.사용법:1) create 작업으로 시작하여 listId를 얻음 (예: operation: "create")2) 얻은 listId를 이후 모든 작업에 사용3) addWord: 트라이에 단어를 추가 (예: operation: "addWord", listId: "trie_123", word: "some word")4) suggestNextCharacters: 트라이에서 다음 문자를 제안 (예: operation: "suggestNextCharacters", listId: "trie_123", word: "some word")5) doesWordExist: 트라이에서 단어의 존재 여부를 확인 (예: operation: "doesWordExist", listId: "trie_123", word: "some word")
Descriptions contain example values and usage instructions that LLMs may reuse literally. E.g., 'listId: "list_123"' in descriptions causes LLMs to pass 'list_123' as actual IDs. Move examples to parameter constraints (enums, patterns) and keep descriptions to 10-200 chars explaining WHAT and WHEN, not HOW.
Parameter descriptions are missing or minimal. 'value' param in heap has no description; 'listId' in doubly-linked-list is undescribed. Every parameter needs a description explaining what it controls, its format, and constraints. Add descriptions like 'Unique identifier for the data structure instance (returned by create operation)' and 'Numeric value to add to the heap (must be a valid number)'.
No output schema documentation. Tools return results but LLMs don't know what fields to expect. Document return types for each operation. E.g., 'create returns {listId: string}', 'toArray returns {items: string[], count: number}'. Without this, agents cannot plan downstream calls or extract data reliably.