AI Cortex Storage

Persistent cloud memory for AI agents. Store and search key-value memories across sessions.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
80%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,336Tokens (tool definitions)
~572 BTypical response size
Moderate attention impact (1.04% 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": {
    "mcp": {
      "url": "https://memory.aic0rt3x.dev/mcp"
    }
  }
}

Remote endpoints

https://memory.aic0rt3x.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools
verifiedversion not recorded15 tools