Synap Memory

Persistent memory for AI agents — log and recall conversation context over MCP.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
75%
命名の品質
95%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~1,627トークン数(ツール定義)
~2.9 KB一般的なレスポンスサイズ
注意への影響は中程度(128k コンテキストの 1.27%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "synap": {
      "url": "https://synap-mcp.maximem.ai/mcp"
    }
  }
}

リモートエンドポイント

https://synap-mcp.maximem.ai/mcpstreamable-http

できること

ツール一覧

ツール(4)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟡log_exchange(user_message, assistant_message, conversation_id, user_id, customer_id, ...)

After each user message, send the exchange here so it can be remembered. You do not need to decide what is important, just forward the user message (and your reply, if you have one) and Synap will keep what matters. If your app serves more than one end-user, pass that person's stable id as user_id so each person's memory stays separate; if every conversation is the same single user, omit it. SCOPING: customer_id is B2B ONLY. On a B2B instance (user_context_isolation=strict) it is REQUIRED and a user_id on its own is an error. On a B2C instance (user_context_isolation=equals_customer) it is NOT accepted: the API rejects it with HTTP 400, customer-scoped retrieval does not exist there, and user_id is the whole identity. If you do not know which mode this instance is in, send user_id only and no customer_id; GET /api/v1/auth/whoami reports the mode as user_context_isolation. Logging is fire-and-forget by default; set wait_for_processing=true only when you need to confirm the memory finished extracting before continuing.

入力スキーマ

{
  "type": "object",
  "properties": {
    "user_message": {
      "title": "User Message",
      "type": "string"
    },
    "assistant_message": {
      "default": "",
      "title": "Assistant Message",
      "type": "string"
    },
    "conversation_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Conversation Id"
    },
    "user_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stable id of the end-user this call belongs to. On a B2C instance this is the ONLY identifier you send and it is the whole identity. On a B2B instance send it together with customer_id. Omit both if every conversation is the same single user.",
      "title": "User Id"
    },
    "customer_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "B2B ONLY. Required on a B2B instance (user_context_isolation=strict), where a user_id on its own is an error. NOT accepted on a B2C instance (user_context_isolation=equals_customer): the API rejects it with HTTP 400 and there is no customer scope to read from. When in doubt leave this out and send user_id alone. GET /api/v1/auth/whoami reports the mode.",
      "title": "Customer Id"
    },
    "wait_for_processing": {
      "default": false,
      "title": "Wait For Processing",
      "type": "boolean"
    }
  },
  "required": [
    "user_message"
  ],
  "title": "log_exchangeArguments"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "log_exchangeOutput"
}
🟡check_memory_status(ingestion_id)

Check whether a logged exchange has finished processing. Pass the ingestion_id returned by log_exchange. Returns the processing status and how many memories were extracted. Useful to confirm a save completed (extraction is asynchronous). Takes no user_id or customer_id: an ingestion_id already identifies the write, so the identifier contract does not apply here.

入力スキーマ

{
  "type": "object",
  "properties": {
    "ingestion_id": {
      "title": "Ingestion Id",
      "type": "string"
    }
  },
  "required": [
    "ingestion_id"
  ],
  "title": "check_memory_statusArguments"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "check_memory_statusOutput"
}
🟡recall_context(query, max_results, user_id, customer_id)

Before replying, call this to recall anything already known about this user from past conversations. Use the user's latest message as the query. If you serve multiple end-users, pass the same user_id you log with so you recall the right person's memory. SCOPING: customer_id is B2B ONLY. On a B2B instance (user_context_isolation=strict) it is REQUIRED and a user_id on its own is an error. On a B2C instance (user_context_isolation=equals_customer) it is NOT accepted: the API rejects it with HTTP 400, customer-scoped retrieval does not exist there, and user_id is the whole identity. If you do not know which mode this instance is in, send user_id only and no customer_id; GET /api/v1/auth/whoami reports the mode as user_context_isolation.

入力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "max_results": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Max Results"
    },
    "user_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stable id of the end-user this call belongs to. On a B2C instance this is the ONLY identifier you send and it is the whole identity. On a B2B instance send it together with customer_id. Omit both if every conversation is the same single user.",
      "title": "User Id"
    },
    "customer_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "B2B ONLY. Required on a B2B instance (user_context_isolation=strict), where a user_id on its own is an error. NOT accepted on a B2C instance (user_context_isolation=equals_customer): the API rejects it with HTTP 400 and there is no customer scope to read from. When in doubt leave this out and send user_id alone. GET /api/v1/auth/whoami reports the mode.",
      "title": "Customer Id"
    }
  },
  "required": [
    "query"
  ],
  "title": "recall_contextArguments"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "recall_contextOutput"
}
🟡list_recent_memories(max_results, user_id, customer_id)

List recent things remembered about this user. Useful for debugging or to confirm that memory is working. Pass user_id to scope to one person. SCOPING: customer_id is B2B ONLY. On a B2B instance (user_context_isolation=strict) it is REQUIRED and a user_id on its own is an error. On a B2C instance (user_context_isolation=equals_customer) it is NOT accepted: the API rejects it with HTTP 400, customer-scoped retrieval does not exist there, and user_id is the whole identity. If you do not know which mode this instance is in, send user_id only and no customer_id; GET /api/v1/auth/whoami reports the mode as user_context_isolation.

入力スキーマ

{
  "type": "object",
  "properties": {
    "max_results": {
      "default": 10,
      "title": "Max Results",
      "type": "integer"
    },
    "user_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Stable id of the end-user this call belongs to. On a B2C instance this is the ONLY identifier you send and it is the whole identity. On a B2B instance send it together with customer_id. Omit both if every conversation is the same single user.",
      "title": "User Id"
    },
    "customer_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "B2B ONLY. Required on a B2B instance (user_context_isolation=strict), where a user_id on its own is an error. NOT accepted on a B2C instance (user_context_isolation=equals_customer): the API rejects it with HTTP 400 and there is no customer scope to read from. When in doubt leave this out and send user_id alone. GET /api/v1/auth/whoami reports the mode.",
      "title": "Customer Id"
    }
  },
  "title": "list_recent_memoriesArguments"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "list_recent_memoriesOutput"
}

推奨プロンプト

list_items
List all [items] available in Synap Memory
想定されるツール: list_recent_memories
browse_collection
Show me the [collection] from Synap Memory
想定されるツール: list_recent_memories

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 4 件
検証済みバージョンは記録されていませんツール 4 件