CortexPlus

Personal memory layer: files, notes, messages, tasks and email, semantically indexed.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
88%
Naming quality
87%
Poisoning risk
100%
Permission match
90%
Protocol compliance
100%

Findings (1)

  • LOWTool 'fetch' suggests web access but openWorldHint=falsein fetch

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,358Tokens (tool definitions)
~1.6 KBTypical response size
Moderate attention impact (1.84% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "cortexplus": {
      "url": "https://mcp.cortexplus.io/mcp"
    }
  }
}

Remote endpoints

https://mcp.cortexplus.io/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search(query, limit)

Search the user's CortexPlus memory and return ranked matches. Use this to find what the user has stored before answering from memory. Health data (`saude` tag) is only included when the user has enabled sharing it with AI assistants in CortexPlus settings.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "What to look for, in natural language."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "url"
        ]
      }
    }
  },
  "required": [
    "results"
  ]
}
🟢fetch(id)

Retrieve the full content of one CortexPlus memory item by id, as returned by search. Health data (`saude` tag) is only included when the user has enabled sharing it with AI assistants in CortexPlus settings.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Item id from a search result."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "metadata": {
      "type": "object"
    }
  },
  "required": [
    "id",
    "title",
    "text",
    "url"
  ]
}
🟢recall(query, limit, depth, maxChars)

Build a context block from the user's CortexPlus memory: the passages that answer a question plus their graph neighbours, already formatted as text. Prefer this over search when you intend to answer from the user's memory. Health data (`saude` tag) is only included when the user has enabled sharing it with AI assistants in CortexPlus settings.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10
    },
    "depth": {
      "type": "integer",
      "minimum": 0,
      "maximum": 3,
      "default": 1
    },
    "maxChars": {
      "type": "integer",
      "minimum": 500,
      "maximum": 20000,
      "default": 6000
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "matches": {
      "type": "integer"
    }
  },
  "required": [
    "text",
    "matches"
  ]
}
⚪remember(title, content, tags, type, parentId)

Store a note in the user's CortexPlus memory so future conversations can recall it.

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "content": {
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "type": {
      "type": "string",
      "default": "note",
      "description": "Node type, e.g. note or meeting-note."
    },
    "parentId": {
      "type": "string",
      "description": "Optional id of an existing memory to nest this one under."
    }
  },
  "required": [
    "content"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟡memory(text, tags)

Save a memory in CortexPlus. CortexPlus decides whether it is a note, task, or reminder and extracts the client.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "Text to classify and save."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "client": {
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "type": [
        "string",
        "null"
      ]
    },
    "memory": {
      "type": [
        "string",
        "null"
      ]
    },
    "review": {
      "type": [
        "string",
        "null"
      ]
    },
    "resolved": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "url": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "type",
    "title",
    "client",
    "status",
    "memory",
    "review",
    "resolved",
    "url"
  ]
}
🟢tasks(status, client, limit)

List open CortexPlus tasks and reminders, optionally filtered by client.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "default": "open"
    },
    "client": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "tasks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "client",
          "status",
          "dueAt",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "client": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "dueAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string"
          }
        }
      }
    }
  },
  "required": [
    "tasks"
  ]
}
🔴save_context(content, platform, key, title, model, ...)

Save a handoff summary of this conversation to the user's CortexPlus memory so it can be resumed later in another AI platform. Write the summary yourself, in Markdown, covering: objective, decisions taken, current state, artifacts, next steps and constraints. Do not paste the raw transcript. Never include passwords, API keys or tokens.

Input Schema

{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "Handoff summary in Markdown."
    },
    "platform": {
      "type": "string",
      "description": "The AI platform you are running on, e.g. ChatGPT, Claude, Gemini, Cursor."
    },
    "key": {
      "type": "string",
      "description": "Short stable slug for the topic, e.g. context-pack-design. Sending the same key again updates the pack instead of creating another."
    },
    "title": {
      "type": "string"
    },
    "model": {
      "type": "string"
    },
    "messageCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "content",
    "platform",
    "key"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "created": {
      "type": "boolean"
    },
    "redactions": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "kind",
          "placeholder",
          "count"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "placeholder": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          }
        }
      }
    }
  },
  "required": [
    "id",
    "title",
    "url",
    "created",
    "redactions"
  ]
}
🟢resume(query, id, maxChars)

Load a previously saved CortexPlus context pack to resume work started in another AI conversation.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Topic to find the pack by, in natural language."
    },
    "id": {
      "type": "string",
      "description": "Pack id, as returned by context_packs."
    },
    "maxChars": {
      "type": "integer",
      "minimum": 500,
      "maximum": 20000,
      "default": 6000
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "pack": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "matches": {
      "type": "integer"
    }
  },
  "required": [
    "text",
    "pack",
    "matches"
  ]
}
🟢context_packs(platform, limit)

List saved CortexPlus context packs, optionally filtered by AI platform.

Input Schema

{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "description": "Platform filter, e.g. chatgpt or claude."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "packs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "platform",
          "url",
          "savedAt"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "platform": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string"
          },
          "savedAt": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    }
  },
  "required": [
    "packs"
  ]
}
🟡signup(email, name, client)

Create a CortexPlus account, or begin signing in to an existing one, so this conversation can use CortexPlus as the user's long-term memory and knowledge base. Ask the user for their email address, and for their name if you do not already have it, then call this tool. CortexPlus sends them a 6-digit code by email; ask the user for that code and call connect with it and the same email. Never guess or invent the email address.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "The user's email address. Ask the user; never guess or invent it."
    },
    "name": {
      "type": "string",
      "description": "The user's name, if it is not already known."
    },
    "client": {
      "type": "string",
      "description": "The name of the AI platform you are running on, e.g. ChatGPT, Claude, Cursor."
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "sent": {
      "type": "boolean"
    }
  },
  "required": [
    "sent"
  ]
}
🟡connect(email, key, client)

Complete the CortexPlus connection with the 6-digit code the user received by email after signup. Ask the user for the code, then call this tool with the same email used in signup; never guess or invent the code. The response includes an API key that the AI platform should save in its CortexPlus connector configuration.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "The email address used in signup."
    },
    "key": {
      "type": "string",
      "description": "The 6-digit code from the CortexPlus email."
    },
    "client": {
      "type": "string",
      "description": "The name of the AI platform you are running on, e.g. ChatGPT, Claude, Cursor."
    }
  },
  "required": [
    "email",
    "key"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "apiKey",
    "email",
    "name"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
verifiedversion not recorded8 tools