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,205Tokens (tool definitions)
~1.6 KBTypical response size
Moderate attention impact (1.72% 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.

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.

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.

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 short authentication key by email; ask the user for that key and call connect with it. 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(key, client)

Complete the CortexPlus connection with the short authentication key the user received by email after signup. Ask the user to paste the key, then call this tool; never guess or invent the key. The response includes an API key that the AI platform should save in its CortexPlus connector configuration.

Input Schema

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "The authentication key pasted by the user from their CortexPlus email."
    },
    "client": {
      "type": "string",
      "description": "The name of the AI platform you are running on, e.g. ChatGPT, Claude, Cursor."
    }
  },
  "required": [
    "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 recorded8 tools