Synapse Layer — Trust Infrastructure for AI Agents
MCP-native Trust Infrastructure for AI Agents. Persistent encrypted memory with Trust Quotient.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (4)
- LOWen save_to_synapse
- LOWen store_memory
- LOWen neural_handover
- LOWen slo_report
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"synapse-layer": {
"url": "https://forge.synapselayer.org/api/mcp"
}
}
}Puntos de conexión remotos
https://forge.synapselayer.org/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {}
}Esquema de salida
{
"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.
Esquema de entrada
{
"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": []
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"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."
}
}
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"type": "object",
"properties": {
"window": {
"type": "string"
},
"uptime": {
"type": "number"
},
"p50": {
"type": "number"
},
"p95": {
"type": "number"
},
"errorRate": {
"type": "number"
}
},
"required": [
"uptime"
]
}Comunidad
Evidencia