Portfolio memory for AI agents — MCP server that turns your project history into structured context for any AI assistant
Cortex MCP has 29 tools with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~100 chars). All tools have input schemas with type definitions. However, parameter descriptions are sparse or missing entirely, most params lack guidance on format, constraints, or valid ranges. Output schemas are undocumented; responses are text-based rather than structured JSON. Error handling is minimal (generic error() calls). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Write tools (start_session, end_session, add_skill, add_observation, track_decision, add_pattern, update_app_status) lack confirmation/dry-run patterns despite modifying state. Composition is sound, tools chain well via IDs, but parameter descriptions need substantial improvement to meet LLM-optimization baselines.
Add a new timestamped observation for an app.
Add or update a reusable portfolio pattern.
Add or update a custom skill in skills.yaml.
Compare technology stacks between two applications.
End a session with summary, decisions, and next steps.
Export consolidated portfolio context as JSON or markdown.
Get architectural and coding patterns identified across the portfolio.
Parameter descriptions are missing or minimal. Most params (sinceDays, depth, fileGlob, category, scope, etc.) lack guidance on format, valid ranges, or constraints. LLMs cannot infer whether 'depth' means 1-10 or 1-1000, or whether 'pattern' accepts regex or glob syntax.
Output schemas are undocumented. Tools return text responses via text() helper, but LLMs have no schema for what fields/structure to expect. Responses are markdown strings, not structured JSON. This forces LLMs to parse unstructured text and wastes tokens.
Write tools lack confirmation/dry-run patterns. start_session, end_session, add_skill, add_observation, track_decision, add_pattern, and update_app_status modify state but offer no confirmation step or dry-run mode. Agents can accidentally commit decisions or patterns without review.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Search for existing projects or components that could be reused.
Find applications similar to a given one based on shared technologies.
Get detailed context for a specific application including stack, connections, patterns, and recent activity.
Get coding conventions based on patterns, profile preferences, and history.
Read a file from a registered repository.
List repository files and directories up to a depth.
Analyze local import graph inside a repository.
Show incremental changes detected by recent scans.
Get a high-level overview of the entire portfolio including profile, stats, technologies, and apps by status/area.
Get full skill details by ID.
Get technology radar showing adoption status (adopt, trial, assess, hold) across the portfolio.
Search a regex pattern across repository files.
Render a skill template by injecting provided context variables.
List available skills (built-in and custom), optionally filtered.
Query the knowledge graph starting from one or more entities.
Run a health check on the knowledge base.
Search across all projects, technologies, patterns, and knowledge in the developer portfolio.
Start a new work session for an app.
Get technology stack suggestions based on project description, preferred stack, and reference projects.
Store an architecture or implementation decision with optional rationale.
Update app status and health in registry.
Find all applications that use a specific technology.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The MCP spec supports tool annotations to signal intent. All 29 tools lack these hints, forcing LLMs to infer safety from descriptions alone.
Error handling is generic. Tools return error() with a message string, but no guidance on recovery, retry eligibility, or next steps. LLMs cannot distinguish retryable errors from user-fixable ones.