Examples

Python + Anthropic

Add persistent memory to a Claude-powered Python agent in two lines.

1. Install

pip install "coorda[anthropic]"

2. Wrap your Anthropic client

One import, one wrap line. Every messages.create() call now reads and writes through Coorda.

import anthropic
from coorda import Coorda

coorda = Coorda(api_key="ck_live_...")
claude = coorda.wrap(anthropic.Anthropic(), agent_id="triage-bot")

response = claude.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Summarize this ticket"}],
    coorda={"entity_id": "customer_123"},
)
How context is injected
For Anthropic, Coorda prepends prior context to the first user message (since Anthropic's API uses a separate system parameter). Your agent sees the context without any other changes.

Before and after

Without the SDK
import requests, anthropic

COORDA = "https://coorda-app.vercel.app"
H = {"X-API-Key": "ck_live_...", "Content-Type": "application/json"}

def handle(entity_id, user_msg):
    prior = requests.get(
        f"{COORDA}/api/context/inject",
        params={"query": user_msg, "entityId": entity_id},
        headers=H,
    ).json()
    content = user_msg
    if prior.get("hasContext"):
        content = f"{prior['context']}\n\n{user_msg}"
    resp = anthropic.Anthropic().messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": content}],
    )
    output = resp.content[0].text
    requests.post(f"{COORDA}/api/context", headers=H, json={
        "taskId": "t1", "entityId": entity_id, "agentId": "triage",
        "input": user_msg, "output": output,
    })
    return output
With wrap()
import anthropic
from coorda import Coorda

coorda = Coorda(api_key="ck_live_...")
claude = coorda.wrap(anthropic.Anthropic(), agent_id="triage")

def handle(entity_id, user_msg):
    resp = claude.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": user_msg}],
        coorda={"entity_id": entity_id},
    )
    return resp.content[0].text

Per-call options

claude.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[...],
    coorda={
        "entity_id": "customer_123",
        "skip_inject": True,
        "skip_store": True,
        "min_similarity": 0.5,
        "limit": 3,
        "metadata": {"priority": "high"},
    },
)
Cross-model memory
A memory stored by a Claude-powered agent is retrievable by an OpenAI-powered agent (and vice versa). Coorda scopes context by entity_id, not by model.