Skip to main content
Glama

create_relation

Link two memories with a typed relationship to establish connections and organize information within the Mnemex memory system.

Instructions

Create an explicit relation between two memories.

Links two memories with a typed relationship (e.g., "references",
"follows_from", "similar_to").

Args:
    from_memory_id: Source memory ID.
    to_memory_id: Target memory ID.
    relation_type: Type of relation.
    strength: Strength of the relation (0.0-1.0).
    metadata: Additional metadata about the relation.

Returns:
    Created relation ID and confirmation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
from_memory_idYes
metadataNo
relation_typeYes
strengthNo
to_memory_idYes

Implementation Reference

  • The main handler function for the 'create_relation' tool, decorated with @mcp.tool(). It validates inputs, checks for existing relations, creates a new Relation model instance, persists it using db.create_relation, and returns a success response with details.
    @mcp.tool()
    def create_relation(
        from_memory_id: str,
        to_memory_id: str,
        relation_type: str,
        strength: float = 1.0,
        metadata: dict[str, Any] | None = None,
    ) -> dict[str, Any]:
        """
        Create an explicit relation between two memories.
    
        Links two memories with a typed relationship.
    
        Args:
            from_memory_id: Source memory ID (valid UUID).
            to_memory_id: Target memory ID (valid UUID).
            relation_type: Type of relation (must be one of: related, causes, supports,
                           contradicts, has_decision, consolidated_from).
            strength: Strength of the relation (0.0-1.0).
            metadata: Additional metadata about the relation.
    
        Returns:
            Created relation ID and confirmation.
    
        Raises:
            ValueError: If any input fails validation.
        """
        # Input validation
        from_memory_id = validate_uuid(from_memory_id, "from_memory_id")
        to_memory_id = validate_uuid(to_memory_id, "to_memory_id")
        relation_type = validate_relation_type(relation_type, "relation_type")
        strength = validate_score(strength, "strength")
    
        if not db.get_memory(from_memory_id):
            return {"success": False, "message": f"Source memory not found: {from_memory_id}"}
        if not db.get_memory(to_memory_id):
            return {"success": False, "message": f"Target memory not found: {to_memory_id}"}
    
        if existing := db.get_relations(
            from_memory_id=from_memory_id,
            to_memory_id=to_memory_id,
            relation_type=relation_type,
        ):
            return {
                "success": False,
                "message": f"Relation already exists: {existing[0].id}",
                "existing_relation_id": existing[0].id,
            }
    
        relation = Relation(
            id=str(uuid.uuid4()),
            from_memory_id=from_memory_id,
            to_memory_id=to_memory_id,
            relation_type=relation_type,
            strength=strength,
            created_at=int(time.time()),
            metadata=metadata or {},
        )
        db.create_relation(relation)
    
        return {
            "success": True,
            "relation_id": relation.id,
            "from": from_memory_id,
            "to": to_memory_id,
            "type": relation_type,
            "strength": strength,
            "message": f"Relation created: {from_memory_id} --[{relation_type}]--> {to_memory_id}",
        }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/prefrontal-systems/mnemex'

If you have feedback or need assistance with the MCP directory API, please join our Discord server