Living technical memory for AI agents: recall approved project context, record what was learned.
Call this server's tools from your browser. Nothing to install.
Bearer <your SoluCortex project API key (scx_...)>. Get one at https://solucortex.ai.
Default project UUID. Optional: the backend infers it from the API key.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Why it needs review: outdated, incorrect, duplicated... (10-500 chars).
UUID of the memory to flag.
What you suggest the human does: update, archive, delete or review.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| reason* | string | Why it needs review: outdated, incorrect, duplicated... (10-500 chars). |
| memory_id* | string | UUID of the memory to flag. |
| suggested_action | string | What you suggest the human does: update, archive, delete or review. |
{
"type": "object",
"title": "solucortex_flag_memoryArguments",
"required": [
"memory_id",
"reason"
],
"properties": {
"reason": {
"type": "string",
"title": "Reason",
"maxLength": 500,
"minLength": 10,
"description": "Why it needs review: outdated, incorrect, duplicated... (10-500 chars)."
},
"memory_id": {
"type": "string",
"title": "Memory Id",
"description": "UUID of the memory to flag."
},
"suggested_action": {
"type": "string",
"title": "Suggested Action",
"default": "review",
"description": "What you suggest the human does: update, archive, delete or review."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max memories to return. |
| project_id | any | Project UUID. If omitted, the session default applies, else the backend infers it from the API key. |
{
"type": "object",
"title": "solucortex_list_memoriesArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Max memories to return."
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id",
"default": null,
"description": "Project UUID. If omitted, the session default applies, else the backend infers it from the API key."
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| query* | string | 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 | any | Project UUID. If omitted, the session default applies, else the backend infers it from the API key. |
{
"type": "object",
"title": "solucortex_recallArguments",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"title": "Query",
"description": "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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id",
"default": null,
"description": "Project UUID. If omitted, the session default applies, else the backend infers it from the API key."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| type* | string | 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* | string | Short, clear title (~80 chars max). |
| content* | string | Full content: what to remember, why it matters, where it applies and what it prevents. NEVER include real secrets (tokens, passwords, .env, credentials). |
| importance | integer | Priority 1-10. Default 5. 6-7 high; 8-9 important decision/risk/convention; 10 critical. |
| project_id | any | Project UUID. If omitted, the session default applies, else the backend infers it from the API key. |
{
"type": "object",
"title": "solucortex_rememberArguments",
"required": [
"type",
"title",
"content"
],
"properties": {
"type": {
"type": "string",
"title": "Type",
"description": "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": {
"type": "string",
"title": "Title",
"maxLength": 120,
"description": "Short, clear title (~80 chars max)."
},
"content": {
"type": "string",
"title": "Content",
"description": "Full content: what to remember, why it matters, where it applies and what it prevents. NEVER include real secrets (tokens, passwords, .env, credentials)."
},
"importance": {
"type": "integer",
"title": "Importance",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Priority 1-10. Default 5. 6-7 high; 8-9 important decision/risk/convention; 10 critical."
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id",
"default": null,
"description": "Project UUID. If omitted, the session default applies, else the backend infers it from the API key."
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max memories to return. |
| query* | string | Question or topic to search across the project's memories. |
| project_id | any | Project UUID. If omitted, the session default applies, else the backend infers it from the API key. |
{
"type": "object",
"title": "solucortex_searchArguments",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Max memories to return."
},
"query": {
"type": "string",
"title": "Query",
"description": "Question or topic to search across the project's memories."
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Project Id",
"default": null,
"description": "Project UUID. If omitted, the session default applies, else the backend infers it from the API key."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| type | any | Corrected memory type (one of the 9 canonical types). |
| title | any | Corrected title. |
| content | any | Corrected full content. |
| memory_id* | string | UUID of the memory to correct. |
| importance | any | Corrected priority 1-10. |
{
"type": "object",
"title": "solucortex_update_memoryArguments",
"required": [
"memory_id"
],
"properties": {
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Type",
"default": null,
"description": "Corrected memory type (one of the 9 canonical types)."
},
"title": {
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
],
"title": "Title",
"default": null,
"description": "Corrected title."
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Content",
"default": null,
"description": "Corrected full content."
},
"memory_id": {
"type": "string",
"title": "Memory Id",
"description": "UUID of the memory to correct."
},
"importance": {
"anyOf": [
{
"type": "integer",
"maximum": 10,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Importance",
"default": null,
"description": "Corrected priority 1-10."
}
}
}