Synapse Layer — Trust Infrastructure for AI Agents
MCP-native Trust Infrastructure for AI Agents. Persistent encrypted memory with Trust Quotient.
使うべきか
品質と安全性
検出事項(4)
- LOWsave_to_synapse 内
- LOWstore_memory 内
- LOWneural_handover 内
- LOWslo_report 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"synapse-layer": {
"url": "https://forge.synapselayer.org/api/mcp"
}
}
}リモートエンドポイント
https://forge.synapselayer.org/api/mcpstreamable-httpできること
ツール一覧
ツール(13)
🟢recall(query, reason, scope, agent_id, limit, ...)
Retrieve relevant persisted memory using semantic, temporal, priority, or hybrid routing. Governance: requires reason (10–200 chars). Rate limit: 20/min.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What to recall — natural language query for memory retrieval."
},
"reason": {
"type": "string",
"description": "REQUIRED (10–200 chars). Audit policy: MEMORY_EXPORT_GOVERNANCE_V1. Human-readable justification for retrieving PLAINTEXT memory. Without this parameter the call WILL fail with code -32602. Example: \"User asked me to summarize last week decisions.\""
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
],
"description": "Explicit memory scope. \"agent\" (default, fail-closed) = limits recall to the given agent_id (or the token agent). \"tenant\" = cross-agent recall within the authenticated tenant. If omitted with agent_id present, \"agent\" is inferred; if both omitted, the token agent is used (verified-token scope)."
},
"agent_id": {
"type": "string",
"description": "Agent identifier (canonical or alias). Used only when scope=\"agent\" or scope is inferred."
},
"limit": {
"type": "number",
"description": "Maximum memories to return (1–50, default: 10)."
},
"mode": {
"type": "string",
"enum": [
"auto",
"temporal",
"semantic",
"priority",
"hybrid"
],
"description": "Recall routing mode. \"temporal\" = pure chronological, \"semantic\" = FTS + TQ ranking, \"priority\" = critical/high-TQ first, \"hybrid\" = weighted blend, \"auto\" = detect from query (default)."
},
"subject": {
"type": "string",
"description": "ESCOPO1 (optional): opaque 8-128 char token ([A-Za-z0-9._:-]) that isolates memory to a single person within a shared connect-token. Omit for token-scoped behavior. Never include PII/email."
}
},
"required": [
"query",
"reason"
]
}出力スキーマ
{
"type": "object",
"properties": {
"memories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"content": {
"type": "string"
},
"similarity": {
"type": "number"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
},
"count": {
"type": "number"
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
]
}
},
"required": [
"memories",
"count",
"scope"
]
}🟡save_to_synapse(content, agent_id, project, type, importance, ...)
Persist memory with encryption at rest, sanitization, and deduplication controls.
入力スキーマ
{
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "The memory content to store securely."
},
"agent_id": {
"type": "string",
"description": "Agent identifier for memory isolation. Defaults to \"default\"."
},
"project": {
"type": "string",
"description": "Project identifier (e.g., SYNAPSE_LAYER)."
},
"type": {
"type": "string",
"description": "Event type: [MILESTONE], [DECISION], [ALERT], [AUTO-STRAT], [AUTO-OP], [AUTO-INSIGHT], [AUTO-DECISION], [AUTO-CONTEXT], [MANUAL]."
},
"importance": {
"type": "number",
"description": "Accepted for compatibility; not enforced by the API."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags for categorization."
},
"force_intent": {
"type": "string",
"description": "MANUAL OVERRIDE ONLY — use apenas quando você (humano) quer forçar explicitamente a classificação de intenção. Valores reconhecidos: preference | fact | procedural | bio | critical | operational | strategic | compliance | security | system_directive | clinical | general | ephemeral. Se não tiver certeza, NÃO preencha este campo — o sistema classifica automaticamente. Valores não reconhecidos são ignorados silenciosamente e retornados em warnings."
},
"intent_reason": {
"type": "string",
"description": "Auditable reason for forcing intent classification. Max 500 characters. Ignored if force_intent is absent.",
"maxLength": 500
},
"subject": {
"type": "string",
"description": "ESCOPO1 (optional): opaque 8-128 char token ([A-Za-z0-9._:-]) that isolates memory to a single person within a shared connect-token. Omit for token-scoped behavior. Never include PII/email."
}
},
"required": [
"content"
]
}出力スキーマ
{
"type": "object",
"properties": {
"memory_id": {
"type": "string"
},
"status": {
"type": "string"
},
"trust_quotient": {
"type": "number"
}
},
"required": [
"memory_id",
"status"
]
}🟢process_text(text, agent_id, project, source)
Extract candidate memories from free-form text with governance filters and sanitization.
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Free-form text to scan for auto-save triggers."
},
"agent_id": {
"type": "string",
"description": "Agent identifier. Defaults to \"default\"."
},
"project": {
"type": "string",
"description": "Force a specific project (e.g., SYNAPSE_LAYER, OFFLY). Auto-detected if omitted."
},
"source": {
"type": "string",
"description": "Source identifier (default: mcp)."
}
},
"required": [
"text"
]
}出力スキーマ
{
"type": "object",
"properties": {
"extracted": {
"type": "array",
"items": {
"type": "object"
}
},
"storedCount": {
"type": "number"
}
},
"required": [
"extracted",
"storedCount"
]
}🟢search(query, reason, scope, agent_id, limit, ...)
Search persisted memory across agent scopes using full-text matching. Governance: requires reason (10–200 chars) because results contain plaintext content.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query — natural language or keywords."
},
"reason": {
"type": "string",
"description": "REQUIRED (10–200 chars). Audit policy: MEMORY_EXPORT_GOVERNANCE_V1. Human-readable justification for retrieving PLAINTEXT memory. Without this parameter the call WILL fail with code -32602. Example: \"Checking prior migration decisions for the user.\""
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
],
"description": "Explicit search scope. \"agent\" (default, fail-closed) = limits search to the given agent_id (or the token agent). \"tenant\" = cross-agent search within the authenticated tenant. If omitted with agent_id present, \"agent\" is inferred; if both omitted, the token agent is used (verified-token scope)."
},
"agent_id": {
"type": "string",
"description": "Agent identifier (canonical or alias). Used only when scope=\"agent\" or scope is inferred."
},
"limit": {
"type": "number",
"description": "Maximum results to return (1–50, default: 20)."
},
"subject": {
"type": "string",
"description": "ESCOPO1 (optional): opaque 8-128 char token ([A-Za-z0-9._:-]) that isolates memory to a single person within a shared connect-token. Omit for token-scoped behavior. Never include PII/email."
}
},
"required": [
"query",
"reason"
]
}出力スキーマ
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object"
}
},
"count": {
"type": "number"
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
]
}
},
"required": [
"results",
"count",
"scope"
]
}🟢health_check
Check service availability, engine version, and storage health. Public method.
入力スキーマ
{
"type": "object",
"properties": {}
}出力スキーマ
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"version": {
"type": "string"
},
"dbLatencyMs": {
"type": "number"
}
},
"required": [
"status",
"version"
]
}🟢initialize_context(detail, reason)
Initialize a persistent memory context for a conversation or agent session. Returns REDACTED metadata by default (detail="summary"). Use detail="full" with a reason (10–200 chars) to retrieve plaintext content under MEMORY_EXPORT_GOVERNANCE_V1.
入力スキーマ
{
"type": "object",
"properties": {
"detail": {
"type": "string",
"enum": [
"summary",
"full"
],
"description": "Detail level. \"summary\" (default) = redacted metadata only, no plaintext. \"full\" = plaintext content; REQUIRES the reason parameter and is audit-logged."
},
"reason": {
"type": "string",
"description": "REQUIRED only when detail=\"full\" (10–200 chars). Audit policy: MEMORY_EXPORT_GOVERNANCE_V1. Human-readable justification for retrieving PLAINTEXT context. Without it, detail=\"full\" WILL fail with code -32602."
}
},
"required": []
}出力スキーマ
{
"type": "object",
"properties": {
"memories": {
"type": "array",
"items": {
"type": "object"
}
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
]
},
"agent_id": {
"type": "string"
}
},
"required": [
"scope"
]
}🟡save_memory(content, agent_id, tags, force_intent, intent_reason, ...)
Save a memory entry to the persistent store. Alias of save_to_synapse.
入力スキーマ
{
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "The memory content to store securely."
},
"agent_id": {
"type": "string",
"description": "Agent identifier for memory isolation."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags for categorization."
},
"force_intent": {
"type": "string",
"description": "MANUAL OVERRIDE ONLY — use apenas quando você (humano) quer forçar explicitamente a classificação de intenção. Valores reconhecidos: preference | fact | procedural | bio | critical | operational | strategic | compliance | security | system_directive | clinical | general | ephemeral. Se não tiver certeza, NÃO preencha este campo — o sistema classifica automaticamente. Valores não reconhecidos são ignorados silenciosamente e retornados em warnings."
},
"intent_reason": {
"type": "string",
"description": "Auditable reason for forcing intent classification. Max 500 characters. Ignored if force_intent is absent.",
"maxLength": 500
},
"subject": {
"type": "string",
"description": "ESCOPO1 (optional): opaque 8-128 char token ([A-Za-z0-9._:-]) that isolates memory to a single person within a shared connect-token. Omit for token-scoped behavior. Never include PII/email."
}
},
"required": [
"content"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"stored": {
"type": "boolean"
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
]
}
},
"required": [
"id",
"stored",
"scope"
]
}⚪store_memory(content, agent_id, tags, force_intent, intent_reason, ...)
Store structured memory with metadata and trust scoring.
入力スキーマ
{
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "The memory content to store securely."
},
"agent_id": {
"type": "string",
"description": "Agent identifier for memory isolation. Defaults to \"default\"."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags for categorization."
},
"force_intent": {
"type": "string",
"description": "MANUAL OVERRIDE ONLY — use apenas quando você (humano) quer forçar explicitamente a classificação de intenção. Valores reconhecidos: preference | fact | procedural | bio | critical | operational | strategic | compliance | security | system_directive | clinical | general | ephemeral. Se não tiver certeza, NÃO preencha este campo — o sistema classifica automaticamente. Valores não reconhecidos são ignorados silenciosamente e retornados em warnings."
},
"intent_reason": {
"type": "string",
"description": "Auditable reason for forcing intent classification. Max 500 characters. Ignored if force_intent is absent.",
"maxLength": 500
},
"subject": {
"type": "string",
"description": "ESCOPO1 (optional): opaque 8-128 char token ([A-Za-z0-9._:-]) that isolates memory to a single person within a shared connect-token. Omit for token-scoped behavior. Never include PII/email."
}
},
"required": [
"content"
]
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"stored": {
"type": "boolean"
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
]
}
},
"required": [
"id",
"stored",
"scope"
]
}🟢recall_memory(query, reason, scope, agent_id, limit, ...)
Recall persisted memory by query. Alias of recall.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What to recall — natural language query for memory retrieval."
},
"reason": {
"type": "string",
"description": "REQUIRED (10–200 chars). Audit policy: MEMORY_EXPORT_GOVERNANCE_V1. Without this the call WILL fail with code -32602. Example: \"Checking user project status.\""
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
],
"description": "Explicit memory scope. \"agent\" (default, fail-closed) = limits recall to the given agent_id (or the token agent). \"tenant\" = cross-agent recall within the authenticated tenant. If omitted with agent_id present, \"agent\" is inferred; if both omitted, the token agent is used (verified-token scope)."
},
"agent_id": {
"type": "string",
"description": "Agent identifier (canonical or alias). Used only when scope=\"agent\" or scope is inferred."
},
"limit": {
"type": "number",
"description": "Maximum memories to return (1–50, default: 10)."
},
"mode": {
"type": "string",
"enum": [
"auto",
"temporal",
"semantic",
"priority",
"hybrid"
],
"description": "Recall routing mode."
},
"subject": {
"type": "string",
"description": "ESCOPO1 (optional): opaque 8-128 char token ([A-Za-z0-9._:-]) that isolates memory to a single person within a shared connect-token. Omit for token-scoped behavior. Never include PII/email."
}
},
"required": [
"query",
"reason"
]
}出力スキーマ
{
"type": "object",
"properties": {
"memories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"content": {
"type": "string"
},
"similarity": {
"type": "number"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
},
"count": {
"type": "number"
},
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
]
}
},
"required": [
"memories",
"count",
"scope"
]
}🟢list_memories(scope, agent_id, limit, subject)
List memory metadata with pagination and governance limits.
入力スキーマ
{
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"agent",
"tenant"
],
"description": "Explicit memory scope. \"agent\" (default, fail-closed) = lists memories for the given agent_id (or the token agent). \"tenant\" = lists memories across all agents of the authenticated tenant."
},
"agent_id": {
"type": "string",
"description": "Agent identifier (canonical or alias). Used only when scope=\"agent\" or scope is inferred."
},
"limit": {
"type": "number",
"description": "Maximum memory metadata rows to return. Hard-capped: default 5, max 10. Values above 10 are silently reduced to 10."
},
"subject": {
"type": "string",
"description": "ESCOPO1 (optional): opaque 8-128 char token ([A-Za-z0-9._:-]) that isolates memory to a single person within a shared connect-token. Omit for token-scoped behavior. Never include PII/email."
}
}
}出力スキーマ
{
"type": "object",
"properties": {
"memories": {
"type": "array",
"items": {
"type": "object"
}
},
"count": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"memories",
"count"
]
}🟡memory_feedback(memory_id, memoryId, signal, session_id, sessionId)
Submit feedback to adjust trust scoring for stored memories.
入力スキーマ
{
"type": "object",
"properties": {
"memory_id": {
"type": "string",
"description": "ID of the memory to provide feedback on (canonical snake_case name)."
},
"memoryId": {
"type": "string",
"description": "Deprecated camelCase alias of memory_id — still accepted for backward compatibility."
},
"signal": {
"type": "string",
"enum": [
"used",
"ignored",
"helpful",
"irrelevant"
],
"description": "Feedback signal: used (auto), helpful (positive), irrelevant (negative), ignored."
},
"session_id": {
"type": "string",
"description": "Optional session identifier for tracking (canonical snake_case name)."
},
"sessionId": {
"type": "string",
"description": "Deprecated camelCase alias of session_id — still accepted for backward compatibility."
}
},
"required": [
"signal"
]
}出力スキーマ
{
"type": "object",
"properties": {
"memoryId": {
"type": "string"
},
"success": {
"type": "boolean"
},
"signal": {
"type": "string"
}
},
"required": [
"memoryId",
"success"
]
}⚪neural_handover(token, reason, consuming_agent)
Transfer contextual state between agents with continuity controls.
入力スキーマ
{
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "The handover token (64 hex chars). Generated by the source agent/user in Forge UI."
},
"reason": {
"type": "string",
"description": "REQUIRED (10–200 chars). Human-readable justification for consuming this handover. Example: \"Receiving project context from Claude session.\""
},
"consuming_agent": {
"type": "string",
"description": "Agent identifier consuming the handover (defaults to token agent)."
}
},
"required": [
"token",
"reason"
]
}出力スキーマ
{
"type": "object",
"properties": {
"handoverId": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"status"
]
}🟢slo_report(admin_token, window_hours)
Return uptime and SLO metrics for the MCP service.
入力スキーマ
{
"type": "object",
"properties": {
"admin_token": {
"type": "string",
"description": "Admin authentication token. Must match ADMIN_TOKEN environment variable."
},
"window_hours": {
"type": "array",
"items": {
"type": "number"
},
"description": "Time windows in hours for the report. Default: [24, 168] (24h + 7d)."
}
},
"required": [
"admin_token"
]
}出力スキーマ
{
"type": "object",
"properties": {
"window": {
"type": "string"
},
"uptime": {
"type": "number"
},
"p50": {
"type": "number"
},
"p95": {
"type": "number"
},
"errorRate": {
"type": "number"
}
},
"required": [
"uptime"
]
}コミュニティ
エビデンス