Atlas — Reference Agent
Atlas is a travel planning agent built with Configure. It demonstrates the complete integration pattern: authentication, profile-based personalization, tool calling, memory extraction, and profile seeding.
Live demo: atlas.staging.configure.dev
Source: apps/agents/atlas/server.ts in the Configure repo
What Atlas demonstrates
| Pattern | How Atlas does it |
|---|---|
| Auth proxy | POST /auth/send-otp and /auth/verify-otp forward to client.auth.sendOtp() / client.auth.verifyOtp() |
| Profile → system prompt | client.profile.get(token, userId, { sections }) → profile.format({ guidelines: true }) → injected into Anthropic system prompt |
| Tool calling | CONFIGURE_TOOLS passed to Claude. Full executeTool() switch handles all 16 tools. |
| Agentic loop | Streams responses via SSE. Continues looping while the LLM requests tools. |
| Memory extraction | Fire-and-forget ingest() after every conversation with custom memoryCriteria |
| Profile seeding | Frontend includes <configure-connection-list> and <configure-memory-import> |
| Error handling | Uses classifyError() for user-safe error messages from any source |
Key code paths
System prompt assembly (server.ts ~line 242):
typescript
const profile = await client.profile.get(token, userId, {
sections: ['identity', 'summary', 'integrations'],
});
const context = profile.format({ guidelines: true });
const systemPrompt = `${ATLAS_DESCRIPTION}\n\n${context}`;LLM call (server.ts ~line 261):
typescript
const stream = anthropic.messages.stream({
model: 'claude-sonnet-4-20250514',
max_tokens: 4096,
system: systemPrompt,
tools: [...CONFIGURE_TOOLS, ...UI_TOOLS],
messages,
});Building your own
Atlas is ~370 lines of TypeScript. To build something similar from scratch, see the Build a New Agent section in skill.md, which provides a complete server + frontend template modeled on the Atlas pattern.
For adding Configure to an existing project, see the Quick Start.