SoluCortex
Server Details
Give your AI agent persistent, governed memory for every project. At task start it recalls the approved decisions, conventions, risks and architecture (semantic search, ranked by importance); at close it proposes what was learned as typed memories that you review and approve — governance, not a notes dump. Agents propose, humans govern: edits go back to pending and deletion is human-only by design. Connect Claude Code, Cursor, Claude Desktop or any MCP client in two minutes with just your API key — hosted (nothing to install) or locally via uvx solucortex-mcp. Built by SoluAI and dogfooded daily: SoluCortex is developed using its own living memory.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- soluai-spa/solucortex-mcp
- GitHub Stars
- 0
- Server Listing
- solucortex-mcp
TDQS
Scored across 6 tools
Each tool has a distinct intended action: record, list, search, build context, update, or flag. The only potential overlap is between recall and search, but the descriptions clearly separate start-of-task context building from ad-hoc semantic queries.
All tools share the solucortex_ prefix and snake_case style, but the pattern is mixed: flag_memory, list_memories, and update_memory follow verb_noun, while recall, remember, and search are bare verbs. This makes the set readable but not fully predictable.
Six tools is well-scoped for a project memory system. Each tool covers a meaningful operation without redundancy or bloat, making the surface easy for an agent to navigate.
The toolset covers the full memory lifecycle: create, list, semantic search, context building, update, and flag for review. Deletion is intentionally human-only, which is clearly documented and not a functional gap for the agent.
Available Tools
6 toolssolucortex_flag_memoryAIdempotentInspect
Flag a memory as outdated/incorrect (POST /memories/{id}/flag).
The memory is marked for human review in the SoluCortex panel; nothing is deleted or unpublished. ALWAYS tell the user a memory awaits their decision in the panel. Deletion is human-only by design.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Why it needs review: outdated, incorrect, duplicated... (10-500 chars). | |
| memory_id | Yes | UUID of the memory to flag. | |
| suggested_action | No | What you suggest the human does: update, archive, delete or review. | review |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' safety hints, the description discloses that the action marks content for human review, that nothing is deleted or unpublished, that deletion is intentionally human-only, and mandates a user-facing notification. This materially changes how an agent should behave after calling it. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states the operation in verb+endpoint form, the second adds the behavioral and safety constraints. Every sentence carries a distinct, necessary piece of information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema available and annotations covering mutability and destructiveness, the text supplies the one thing the schema cannot: the post-condition ('awaits human review'), the explicit user-communication requirement, and the no-deletion guarantee. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are fully documented in the schema (100% coverage), and the description only reinforces the reason parameter's purpose ('outdated/incorrect') without adding format or edge-case guidance the schema lacks. Baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'Flag a memory as outdated/incorrect' and includes the exact endpoint (POST /memories/{id}/flag). It distinguishes from sibling tools by clarifying this is a review-flagging action that does not delete or unpublish, so an agent won't confuse it with update or listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the tool's role ('marked for human review') and gives an explicit agent directive ('ALWAYS tell the user a memory awaits their decision in the panel'). However, it never references sibling tools or states when NOT to use it, leaving alternative selection implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solucortex_list_memoriesARead-onlyInspect
List the project's memories without semantic search (GET /memories).
Useful for quick inspection/audit or to confirm a just-created memory was stored. Does not consume OpenAI quota.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max memories to return. | |
| project_id | No | Project UUID. If omitted, the session default applies, else the backend infers it from the API key. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and openWorldHint. The description adds useful non-obvious behavior: it does not perform semantic search, uses GET /memories, and does not consume OpenAI quota. This provides practical cost/behavior context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: what it does, when to use it, and a key behavioral trait. The most important information is front-loaded and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, fully described parameters, existing output schema, and read-only annotations, the description is complete enough for an agent to select and invoke this tool correctly. No critical operational detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both limit and project_id already have clear schema descriptions. The tool description itself adds little parameter-level meaning, but the schema carries the burden effectively, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the project's memories'. It also explicitly distinguishes itself from semantic search, which separates it from siblings like solucortex_search and solucortex_recall. The GET endpoint further grounds the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use the tool: 'quick inspection/audit or to confirm a just-created memory was stored.' It does not explicitly name alternatives or give when-not-to-use guidance, but the 'without semantic search' note implicitly steers semantic queries elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solucortex_recallARead-onlyInspect
Build living context for a task (POST /context/build).
Call this at the START of a task, before touching code: returns approved, active
memories (decisions, conventions, risks, sensitive modules, architecture) ranked by
semantic similarity + importance. Uses OpenAI embeddings (slower, 20 req/min).| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Describe the current task/module in natural language, e.g. 'implement API key rotation in the secrets module'. Used to semantically retrieve the most relevant memories. | |
| project_id | No | Project UUID. If omitted, the session default applies, else the backend infers it from the API key. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is transparent about read-only behavior, hidden filtering to approved/active memories, ranking logic, and the slower/rate-limited embedding call. This complements the readOnlyHint annotation well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose, followed by concrete usage timing and operational caveats. Every sentence contributes meaningful information with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context for an agent to invoke the tool correctly: what it returns, what filters apply, when to use it, and cost/performance considerations. Since an output schema exists, further return-value detail is not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are already fully described in the schema, including examples and default behavior for project_id. The tool description adds no parameter-specific information beyond what the schema provides, so the baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and outcome: it recalls/builds task context by returning approved, active memories ranked by relevance and importance. It clearly differentiates itself from mutation-oriented siblings, though it does not explicitly name alternatives like search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use guidance: call at the START of a task, before touching code. It also notes the OpenAI embedding cost and rate limit, but it does not explicitly state when not to use this tool instead of a sibling such as search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solucortex_rememberAInspect
Record a memory in SoluCortex (POST /memories).
Call when closing a task or making a relevant technical decision. As an authorized
agent (Bearer api_key), the memory is stored with status 'approved' and traced. Never
store real secrets: if you find one, record location/type/severity and action taken,
with a redacted reference.| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Memory type. The backend validates the value. Canonical vocabulary: architecture, decision, risk, convention, bug_history, tech_debt, sensitive_module, learning, external_integration. (Older backends may use technical_decision, historical_bug, current_state, task_closure.) On HTTP 422, retry with the alternate vocabulary. | |
| title | Yes | Short, clear title (~80 chars max). | |
| content | Yes | Full content: what to remember, why it matters, where it applies and what it prevents. NEVER include real secrets (tokens, passwords, .env, credentials). | |
| importance | No | Priority 1-10. Default 5. 6-7 high; 8-9 important decision/risk/convention; 10 critical. | |
| project_id | No | Project UUID. If omitted, the session default applies, else the backend infers it from the API key. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds that memories are 'stored with status 'approved' and traced' and includes a security policy for secrets, which is beyond the annotations (readOnlyHint false, destructiveHint false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the action, second provides use cases and security guidance, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create-like tool, it covers purpose, usage timing, authentication, and secret redaction; the sibling list provides context without needing more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all parameters with meaning, ranges, defaults, and examples like canonical vocabulary for type and max length for title, so the description adds minimal extra but is reinforced by the thorough schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Record a memory in SoluCortex (POST /memories)' with a specific verb and resource, and distinguishes from siblings like list, recall, search, update, and flag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call when closing a task or making a relevant technical decision' and mentions authorization via Bearer api_key, though it doesn't explicitly contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solucortex_searchARead-onlyInspect
Ad-hoc semantic search of memories (POST /search/semantic).
Use for specific questions during a task (e.g. 'how is authentication implemented?'), distinct from recall which builds the full startup context. Uses OpenAI embeddings (20 req/min).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max memories to return. | |
| query | Yes | Question or topic to search across the project's memories. | |
| project_id | No | Project UUID. If omitted, the session default applies, else the backend infers it from the API key. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, which covers safety and scope. The description adds useful behavioral context beyond that: it is semantic search, it uses OpenAI embeddings, and it has a documented rate limit of 20 req/min. No hidden side effects or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose and endpoint, when-to-use with an example and sibling differentiation, and a rate-limit caveat. Information is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with an output schema present, the description is complete: it explains purpose, provides usage guidance, names the sibling that should be used instead in the other common case, and flags the rate limit. Nothing critical is missing for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add parameter-specific detail, but it gives helpful context about the query's intended nature ('specific questions') that complements the schema's 'Question or topic' description. This meets the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Ad-hoc semantic search of memories', plus the exact endpoint (POST /search/semantic). It clearly distinguishes itself from recall by naming recall directly and contrasting the use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: 'Use for specific questions during a task', and gives an example. It also names the alternative (recall) and the condition that selects that alternative ('builds the full startup context'), making tool selection unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solucortex_update_memoryAInspect
Correct an existing memory (PATCH /memories/{id}).
Agents propose, humans govern: the edit is applied but the memory returns to
PENDING until a human re-approves it. ALWAYS tell the user the change awaits
their approval in the SoluCortex panel. Status changes are not possible here.| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Corrected memory type (one of the 9 canonical types). | |
| title | No | Corrected title. | |
| content | No | Corrected full content. | |
| memory_id | Yes | UUID of the memory to correct. | |
| importance | No | Corrected priority 1-10. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing the human-approval workflow: the edit is applied, the memory returns to PENDING, and the agent must ALWAYS inform the user that approval is pending. It also states that status changes are not possible, which prevents the agent from attempting unsupported operations. This is exactly the kind of behavioral context annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences: purpose, behavioral consequence, and a mandatory user-facing instruction. There is no filler or redundancy. The most important information is front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with an output schema, full parameter documentation, and annotations already present, the description is complete. It covers the operation, the approval workflow, the required user notification, and the unsupported status-change operation. Nothing critical is missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds little about the individual parameters—memory_id, type, title, content, and importance are already documented in the schema. The PATCH reference implies partial updates, but this is not elaborated in the description. The description does not compensate beyond the schema, which is acceptable given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Correct an existing memory (PATCH /memories/{id}).' This clearly identifies the operation as an update to an existing memory, distinguishing it from sibling tools like solucortex_remember (creation), solucortex_list_memories/search/recall (retrieval), and solucortex_flag_memory (status change).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the tool is for correcting an existing memory and adds an explicit exclusion: 'Status changes are not possible here.' This gives the agent a clear when-to-use and a when-not-to-use signal. However, it does not explicitly name alternative sibling tools for creation or status changes, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
solucortex_flag_memory - First observed
solucortex_list_memories - First observed
solucortex_recall - First observed
solucortex_remember - First observed
solucortex_search - First observed
solucortex_update_memory
Related MCP Connectors
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
- AlicenseCqualityAmaintenancePersistent, local memory for AI coding agents that learns how you work, not just what you said. Supports Claude Code, Codex CLI, Cursor, and any MCP client.76150 PyPI68MIT
- AlicenseAqualityAmaintenanceShared, versioned memory for your agents across Claude Code, Cursor, Kiro and Grok. One MCP server, sourced answers, full history.3MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI coding agents to maintain persistent, cross-session memory of codebase architecture, naming conventions, and decisions through MCP tools. Eliminates repetitive project re-explanation by automatically injecting stored context into every session with local-first SQLite storage and optional team sharing capabilities.4MIT
- AlicenseAqualityDmaintenancePersistent memory API for AI agents — store, recall, and inject semantically-searchable context across sessions. EU-hosted, GDPR-compliant. Supports Claude, Cursor, Cline, and any MCP-compatible client.42MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.