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
verifiedversion not recorded15 tools
verifiedversion not recorded15 tools
verifiedversion not recorded15 tools
verifiedversion not recorded15 tools