GrimTech MCP Server
Model Context Protocol server for persistent AI memory. Store, recall, and manage memories across sessions.
Authorization: Bearer <key> header.
Generate keys at https://mcp.grimtech.co.uk/dashboard/#/apikeys.
edit Write Operations
Create and store new memories. Write operations create or modify data.
Store a new memory in the database. Optionally assign to a space by name — the space is auto-created if it doesn't exist.
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | string | required | Memory title |
| content | string | required | Full memory content (markdown supported) |
| project | string | optional | Space/project name — auto-creates if it doesn't exist |
| collection_id | integer | optional | Optional collection ID (overrides project) |
| tags | string[] | optional | Array of tag strings |
| source | string | optional | Source label (e.g. "session:2026-07-20") |
| importance | integer | optional | Priority 1-5 (default: 3) |
Merge multiple memories into one. Originals are soft-deleted, merged memory gets all tags from all sources.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ids | integer[] | required | At least 2 memory IDs to merge |
| title | string | required | Title for the merged memory |
Create multiple memories in a single call.
| Parameter | Type | Required | Description |
|---|---|---|---|
| items | array | required | Array of memory objects (each with title, content, and optional tags/importance/project) |
Import memories from a previously exported JSON object. Collections are created if they don't exist.
| Parameter | Type | Required | Description |
|---|---|---|---|
| data | object | required | The exported JSON object with memories, collections, tags |
visibility Read Operations
Search, retrieve, and list memories. Read operations never modify data.
Search memories by query string. Returns ranked results. Optionally filter to a specific space.
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | required | Search query string |
| project | string | optional | Filter to a specific space/project |
| limit | integer | optional | Max results (default: 50) |
Retrieve a specific memory by its ID. Returns the full memory object with all fields.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID |
List all memories with optional pagination. Returns truncated previews (first 200 chars of content).
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | optional | Max results (default: 50) |
| offset | integer | optional | Pagination offset (default: 0) |
List all spaces (collections) with their memory counts.
No parameters required.
Retrieve a graph structure of memories, tags, and projects. Returns nodes (memories, tags, projects) and edges (belongs_to, has_tag).
No parameters required.
Get the current authenticated user's profile information.
No parameters required.
Retrieve a space/collection by ID, including all of its memories.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Space/collection ID |
List all tags used across your memories.
No parameters required.
Search memories by exact tag match. Returns memories that have ALL specified tags (AND logic).
| Parameter | Type | Required | Description |
|---|---|---|---|
| tags | string[] | required | Array of tag strings to match |
| limit | integer | optional | Max results (default: 50) |
| offset | integer | optional | Pagination offset (default: 0) |
Find memories similar to a given memory, ranked by similarity score.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID to compare against |
| limit | integer | optional | Max results (default: 10) |
Check whether a proposed title+content would duplicate an existing memory, based on similarity threshold.
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | string | required | Proposed memory title |
| content | string | required | Proposed memory content |
| threshold | number | optional | Similarity threshold 0-1 (default: 0.85) |
Get memory counts broken down by space/collection.
No parameters required.
Retrieve a random sample of memories, optionally scoped to a space.
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | optional | Max results (default: 5) |
| collection_id | integer | optional | Restrict to a specific space |
List all saved versions of a memory (edit history). Versions are created automatically on every update.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID |
Get a specific version of a memory with full content (not truncated).
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID |
| version | integer | required | Version number |
Show a line-by-line diff between two versions of a memory.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID |
| version_a | integer | required | Older version number |
| version_b | integer | required | Newer version number |
List all soft-deleted memories in trash.
No parameters required.
List memories that have passed their expiration date but not yet been purged.
No parameters required.
Get all links for a memory (both directions).
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID |
Export all your memories, collections, and tags as a JSON object.
No parameters required.
sync Update Operations
Modify fields, favourite, or archive existing memories.
Update fields on an existing memory (title, content, tags, importance, source, project).
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID to update |
| title | string | optional | New title |
| content | string | optional | New content |
| tags | string[] | optional | Replacement tag array |
| importance | integer | optional | Priority 1-5 |
| source | string | optional | Source label |
Toggle the favourite flag on a memory.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID to toggle |
Toggle the archived flag on a memory.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID to toggle |
Toggle pin status on a memory (pins it to the top / unpins it).
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID to toggle |
Restore a memory to a previous version. Current state is auto-saved before restoring.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID |
| version | integer | required | Version number to restore |
Restore a soft-deleted memory from trash.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID to restore |
Add tags to multiple memories at once.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ids | integer[] | required | Array of memory IDs |
| tags | string[] | required | Tags to add |
Remove tags from multiple memories at once.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ids | integer[] | required | Array of memory IDs |
| tags | string[] | required | Tags to remove |
Create a typed link between two memories.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Source memory ID |
| linked_id | integer | required | Target memory ID |
| relationship | string | optional | Link type: related, follows-up-on, contradicts, supersedes (default: related) |
Remove a link between two memories.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Source memory ID |
| linked_id | integer | required | Target memory ID |
Regenerate the embedding for a memory (useful after bulk edits or model changes).
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID |
delete Delete Operations
Remove memories and spaces. Delete operations are permanent and cannot be undone.
Delete a specific memory by ID. Also cleans up orphaned tags.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID to delete |
Delete multiple memories by their IDs in a single operation.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ids | integer[] | required | Array of memory IDs to delete |
Delete a space (collection) by ID. Memories inside are NOT deleted — they become unassigned.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Space/collection ID to delete |
Delete multiple spaces by their IDs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ids | integer[] | required | Array of space/collection IDs to delete |
Permanently delete a memory. Cannot be undone.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | required | Memory ID to permanently delete |
Permanently delete all memories in trash (older than 30 days).
No parameters required.
Permanently delete all expired memories.
No parameters required.