Skip to main content
If you already have an LLM tool flow, Raysurfer stays simple:
  1. search() before the run
  2. upload() after the run
That pattern works whether you call Anthropic directly, run through LangSmith/LangChain, or use your own orchestrator.
Core idea: two calls around your existing flow, no retriever plumbing needed.

Quickstart Pattern

Python: Anthropic Tool Flow

TypeScript: Anthropic Tool Flow

LangSmith / Framework Wrapper Pattern

Use the same two-call shape around your existing runner:

Workspace Silo (Enterprise)

When you need per-customer isolation, pass workspace_id/workspaceId on both calls: