Skip to content

Anthropic SDK

bash
npm install @anthropic-ai/sdk memvault

Setup

typescript
import Anthropic from "@anthropic-ai/sdk"
import { MemVault } from "memvault"
import { createMemVaultTools } from "memvault/anthropic"

const anthropic = new Anthropic()
const vault = new MemVault({ db: prisma.memvaultMemory })
const { tools, handleToolCall } = createMemVaultTools({ vault, tenantId: user.id })

Agentic loop

typescript
const messages = []

async function chat(userMessage: string) {
  messages.push({ role: "user", content: userMessage })

  while (true) {
    const response = await anthropic.messages.create({
      model: "claude-sonnet-4-6",
      max_tokens: 1024,
      system: "Always call memvault_recall before responding. Save preferences with memvault_remember.",
      tools,
      messages,
    })

    messages.push({ role: "assistant", content: response.content })

    const toolUses = response.content.filter((b) => b.type === "tool_use")
    if (!toolUses.length) break

    const results = []
    for (const tu of toolUses) {
      const result = await handleToolCall(tu.name, tu.input)
      results.push({ type: "tool_result", tool_use_id: tu.id, content: result })
    }
    messages.push({ role: "user", content: results })
  }
}

What happens

  1. User sends a message
  2. Claude calls memvault_recall — loads memories from Postgres
  3. Claude responds with full context
  4. When user shares preferences → Claude calls memvault_remember
  5. Next session (empty messages) → step 2 recalls those memories again

Released under the MIT License.