Wenlan MCP Server has a solid foundation with 10 well-named tools covering a coherent memory management domain. Tool names consistently use verb_noun patterns (recall, archive_entities, restore_entities, ingest_web, create_memory, update_memory, delete_memory, lint_scope) which is excellent for LLM parsing. All tools have descriptions present and mostly adequate. However, schemas exhibit moderate quality issues: while input parameters are defined with types and descriptions, output schemas are not documented anywhere in the source code provided. Parameter descriptions are generally 30-80 characters (within the 72-char baseline), but several parameters lack explicit constraint documentation (e.g., 'limit' parameters mention 1-100 range only in recall, but list_entities has limit with no bounds stated). The archive_entities, restore_entities, and ingest_web tools have optional parameters with unclear semantics (filter object not detailed, space parameter semantics inconsistent). Error handling is mentioned as present (errorReporting=true) but implementation details are not visible in the provided code samples. The server is STDIO-only, which is a hard transport cap at 50/100 for protocol readiness, significantly limiting its practical deployment to local-only configurations.
Tools (10)
archive_entitiesreversiblesource verified73/100
Archive entities from active memory storage
create_memorywrite50/100
Explicitly create a new memory entry in storage
delete_memorydestructive50/100
Delete a memory entry from storage
ingest_filewrite50/100
Ingest files (PDF, markdown, etc.) into memory storage
ingest_webwrite50/100
Ingest web pages or content from URLs into memory storage
lint_scoperead only50/100
Run linting/validation checks on a specific scope of memories
list_entitiesread onlysource verified78/100
List entities (extracted concepts, people, places) from memory storage
recallread onlysource verified83/100
Search and retrieve memories from the local knowledge base
Destructive tool delete_memory lacks warning and error recovery guidance in description
delete_memory
Recommendations
Document the complete output schema for all 10 tools in the tool descriptions or a separate schema registry. Specify what fields are returned, their types, and which can be used as IDs for downstream tool calls. E.g., 'create_memory returns {id: string, title: string, created_at: ISO8601, space: string}' so LLM knows to use the 'id' field in update_memory or delete_memory calls.
Replace the optional 'filter' object in archive_entities and restore_entities with explicit, typed parameters (e.g., filter_entity_type?: string, filter_status?: 'detected'|'established'|'archived'). If complex filtering is needed, document the filter structure exhaustively in the description.
Add a discovery tool list_spaces() that enumerates available memory spaces. Then update all tools with optional 'space' parameters to reference this tool in their descriptions: 'To see available spaces, call list_spaces() first.'
Add explicit 'irreversible' warning to delete_memory description: 'Permanently deletes the memory entry. This action cannot be undone.' Consider adding a dry_run parameter for safer deletion validation.
Define and document valid values for 'memory_type' in create_memory. Either list them in the parameter description ('e.g., event, fact, reflection, question') or add a list_memory_types() discovery tool.
Standardize limit/offset/pagination across all list tools. For list_entities, add explicit bounds documentation: 'limit: integer, 1 - 100, default 20' and clarify return structure: 'Returns {entities: [...], total_count: integer, next_offset?: integer}'.
Score history
Overall score trend
First recorded score · v2 rubric
56/100
Scored
Grade
Overall
Spec posture
Rubric
2026-09-22
D
56
2026-07-28+
v2
restore_entities
reversiblesource verified73/100
Restore archived entities back to active memory storage
No pagination guidance for list_entities; unclear if offset is supported or if tool returns total count
list_entities
For each tool, document at least 3 common error cases and recovery guidance in the description. E.g., ingest_web: 'Error: URL unreachable → verify URL is public and retry. Error: Timeout → content may be too large; try a smaller source.'
Add permission/scope declarations to tool descriptions. E.g., 'recall' might be READ_ONLY, 'create_memory' might be WRITE_MEMORY, 'delete_memory' might be ADMIN_MEMORY. This helps agents plan with least privilege.
Add validation examples to parameter descriptions. Instead of 'search query' alone, say 'search query: free-text string, e.g., "project roadmap" or "meeting notes from last week". Avoid special characters like @ or #.'
For tools with batch-like semantics (archive_entities, restore_entities), clarify idempotency: 'Calling archive_entities twice with the same ID list is safe, already-archived entities are skipped without error.' This tells LLM retry behavior is safe.