AI Cortex Storage
Persistent cloud memory for AI agents. Store and search key-value memories across sessions.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"mcp": {
"url": "https://memory.aic0rt3x.dev/mcp"
}
}
}Remote endpoints
https://memory.aic0rt3x.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟢get_memory(key, namespace)
Retrieve a stored value by namespace and key.
Input Schema
{
"type": "object",
"properties": {
"key": {
"description": "≤ 255 characters, no '/'",
"maxLength": 255,
"type": "string"
},
"namespace": {
"description": "≤ 255 characters, no '/'",
"maxLength": 255,
"type": "string"
}
},
"required": [
"namespace",
"key"
]
}🟡put_memory(key, months, namespace, priority, tags, ...)
Store a value with optional tags, priority, and storage duration in months (default 1). value_json must be ≤ 1 MB. On overwrite, the existing expiry is scaled by the KB size ratio of old to new value.
Input Schema
{
"type": "object",
"properties": {
"key": {
"description": "≤ 255 characters, no '/'",
"maxLength": 255,
"type": "string"
},
"months": {
"description": "How long to store this entry in months (default 1, minimum 1). Ignored on overwrite — existing expiry is scaled by the KB size ratio of old to new value.",
"type": "integer"
},
"namespace": {
"description": "≤ 255 characters, no '/'",
"maxLength": 255,
"type": "string"
},
"priority": {
"description": "Importance 1–10; higher = more important. Default 5. Used by top_memories to surface the most relevant context.",
"type": "integer"
},
"tags": {
"description": "Labels for searching and grouping. Duplicates are deduplicated automatically.",
"items": {
"type": "string"
},
"type": "array"
},
"value_json": {
"description": "JSON-encoded value",
"type": "string"
}
},
"required": [
"namespace",
"key",
"value_json"
]
}🔴delete_memory(key, namespace)
Delete a stored value.
Input Schema
{
"type": "object",
"properties": {
"key": {
"description": "≤ 255 characters, no '/'",
"maxLength": 255,
"type": "string"
},
"namespace": {
"description": "≤ 255 characters, no '/'",
"maxLength": 255,
"type": "string"
}
},
"required": [
"namespace",
"key"
]
}🟢list_keys(namespace)
List keys in a namespace with metadata (created_at, updated_at, updated_count, ttl, priority, last_modified_key_id). Returns up to 1000 keys sorted by recency. Expired keys are automatically excluded.
Input Schema
{
"type": "object",
"properties": {
"namespace": {
"description": "≤ 255 characters, no '/'",
"maxLength": 255,
"type": "string"
}
},
"required": [
"namespace"
]
}🟢top_memories(n, namespace)
Return the top N highest-priority non-expired keys in a namespace, ordered by priority descending. Useful for loading the most important context when space is limited. Maximum n is 1000.
Input Schema
{
"type": "object",
"properties": {
"n": {
"description": "Number of keys to return (default 10, max 1000)",
"type": "integer"
},
"namespace": {
"description": "≤ 255 characters, no '/'",
"maxLength": 255,
"type": "string"
}
},
"required": [
"namespace"
]
}🟢list_namespaces
List all namespaces for this account.
Input Schema
{
"type": "object",
"properties": {}
}🟢search_by_tag(tag)
Find (namespace, key) pairs with a given tag. Returns up to 1000 results.
Input Schema
{
"type": "object",
"properties": {
"tag": {
"description": "Tag to search for. Returns up to 1000 (namespace, key) pairs.",
"type": "string"
}
},
"required": [
"tag"
]
}🟢get_account
Get account status, credit balance, and available credits.
Input Schema
{
"type": "object",
"properties": {}
}🟢list_api_keys
List all API keys on this account.
Input Schema
{
"type": "object",
"properties": {}
}🟡create_api_key(label)
Create a new live API key. Only available for active accounts. The key is shown once — store it immediately.
Input Schema
{
"type": "object",
"properties": {
"label": {
"description": "Human-readable label (e.g. 'claude-desktop')",
"type": "string"
}
}
}🔴revoke_api_key(key_id)
Revoke an API key by ID. The key stops working immediately.
Input Schema
{
"type": "object",
"properties": {
"key_id": {
"description": "The key ID to revoke, as returned by list_api_keys.",
"type": "string"
}
},
"required": [
"key_id"
]
}🟢list_payments(limit, offset)
List payment history for this account.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max results (default 50, max 100)",
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "integer"
}
}
}⚪settle_balance
Charges the saved payment method to settle your outstanding balance. Requires explicit user approval before running. For trial accounts, returns the activation URL instead. Minimum charge: $5.
Input Schema
{
"type": "object",
"properties": {}
}🟡submit_exit_feedback(detail, reason)
Submit feedback when a trial ends without activation. Free to call — no credits charged. Only the first submission per account is recorded; duplicates are silently ignored. Call this when the user declines to activate or the trial is exhausted.
Input Schema
{
"type": "object",
"properties": {
"detail": {
"description": "Optional free-text context (truncated at 2000 chars)",
"type": "string"
},
"reason": {
"description": "Primary reason for not activating",
"enum": [
"too_expensive",
"not_useful",
"technical_issue",
"user_declined",
"other"
],
"type": "string"
}
},
"required": [
"reason"
]
}🟡submit_feature_request(description)
Submit a feature request or product feedback. Charged at storage rate: ceil_kb(description_length) × 100 credits per KB. Available to trial and active accounts alike.
Input Schema
{
"type": "object",
"properties": {
"description": {
"description": "Description of the requested feature (truncated at 10,000 chars)",
"type": "string"
}
},
"required": [
"description"
]
}Community
Evidence