A long-term technical memory server for AI agents using Model Context Protocol. Stores and retrieves engineering knowledge, architectural decisions, bug fixes, patterns, and project context across development sessions.
CortexNetMCP defines 9 tools with Spanish names and descriptions. All tools have descriptions (194 - 350 chars, within baseline 34 - 392 range) and input schemas with typed parameters. However, naming violates verb_noun convention (GuardarRecuerdo, BuscarRecuerdos use Spanish infinitives; no English verb prefix). Parameter descriptions are present but lack format constraints, ranges, and validation guidance. Output schemas are documented in DTOs but not visible in source. Error handling returns structured results with success flags and messages, but lacks recovery guidance or actionable next steps. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (WRITE, DESTRUCTIVE, READ_ONLY). Composition is sound, each tool has one responsibility, but parameter naming inconsistencies (proyecto vs project, textoBusqueda vs searchText) reduce clarity for LLM tool selection.
Actualiza el título, contenido, tags y rutas de archivos de un recuerdo existente. El campo UpdatedAt se actualiza automáticamente. Retorna UpdateMemoryResult con los datos actualizados.
Busca recuerdos usando FTS5 (full-text search) sobre título, contenido, tags, categoría y rutas de archivos. Soporta múltiples palabras separadas por espacios. Filtra opcionalmente por proyecto. Resultados ordenados por relevancia. Retorna SearchMemoriesResult con la lista de MemoryDto encontrados.
Crea una relación semántica entre dos recuerdos. Permite vincular decisiones, bugs, patrones y características relacionadas. Retorna RelationResult con el ID de la relación creada.
Elimina un recuerdo existente por su ID. Esta operación es irreversible. Retorna DeleteMemoryResult con confirmación.
Guarda un nuevo recuerdo técnico en la base de datos de memoria a largo plazo. Úsalo para persistir conocimiento, decisiones de arquitectura, bugs resueltos, patrones descubiertos o cualquier información técnica relevante. Retorna SaveMemoryResult con el ID asignado, proyecto y categoría.
Obtiene el contenido completo de un recuerdo a partir de su ID numérico. Úsalo cuando ya conoces el ID y necesitas todos los detalles. Retorna MemoryResult con el MemoryDto completo.
Tool names use Spanish infinitives (GuardarRecuerdo, BuscarRecuerdos) instead of English verb_noun convention (save_memory, search_memories). LLMs rely on English verb prefixes to infer intent and disambiguate tools. Spanish names reduce discoverability and force LLMs to reason about language translation.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk levels declared in metadata (READ_ONLY, WRITE, DESTRUCTIVE). LLMs cannot infer safety properties and may retry destructive operations or treat read-only tools as safe to call repeatedly without checking.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
Obtiene todos los recuerdos de un proyecto filtrados por categoría. Ideal para listar todas las decisiones de arquitectura o bugs resueltos de un proyecto. Retorna CategoryMemoriesResult con la lista de MemoryDto.
Obtiene todos los recuerdos relacionados con uno específico, incluyendo el tipo de relación y dirección (entrada/salida). Útil para explorar el grafo de conocimiento técnico.
Abre una nueva sesión de conversación y retorna el contexto relevante del proyecto: recuerdos relacionados con la tarea actual y la nota de entrega (HandoffNote) de la sesión anterior. Debe llamarse al inicio de cada tarea importante. Retorna ProjectContextResult con sesión activa, memorias relevantes y nota de entrega.
Parameter descriptions lack format constraints and validation rules. E.g., 'categoria' accepts enum values (architecture, bug, decision, etc.) but description does not state 'must be one of: architecture, bug, decision, entity, endpoint, feature, task, pattern, lesson'. LLMs cannot validate input and may pass invalid values.
Error responses lack recovery guidance. E.g., SaveMemoryResult returns 'Categoría X no es válida' but does not suggest calling a discovery tool or list valid options inline. LLMs cannot self-correct without an extra lookup call.
Output schemas (SaveMemoryResult, SearchMemoriesResult, etc.) are referenced in descriptions but not visible in source code. Cannot verify field names, types, or whether chaining IDs (e.g., memoryId for downstream calls) are included. Assume schemas exist but unverified.