Installation
Connecting an MCP client for yourself (Claude, Cursor, etc.)? Skip the SDK: run npx configure setup and choose For myself, or paste https://mcp.configure.dev into your client; OAuth runs automatically. This page is for developers integrating Configure into an app they ship.
Install the TypeScript SDK in the project that hosts your existing agent:
bash
npm install configureThe SDK requires Node.js 18 or later because it uses the built-in fetch. On older runtimes, pass your own implementation as options.fetch.
Installation does not run setup. Run setup yourself:
bash
npx configure setupFor an app or agent integration, run npx configure setup --users or choose For my users in the interactive wizard.
Setup opens Configure developer auth in the browser. Create or sign into a developer account, choose an existing agent or create one, and let setup write the browser/server values into .env:
bash
CONFIGURE_API_KEY=sk_...
CONFIGURE_PUBLISHABLE_KEY=pk_...
CONFIGURE_AGENT=your-agentCreating an API key is a credential step. It is not a decision to build a new product. When setup asks for an agent, the default for an existing product is to choose the existing agent handle for the agent you already ship. Register a new handle only when you are intentionally starting a fresh agent shell. If .env already has CONFIGURE_API_KEY, CONFIGURE_PUBLISHABLE_KEY, and CONFIGURE_AGENT, reuse them and do not rerun setup.
Agent handles are lowercase letters, numbers, and hyphens, 2-63 characters, and must start and end with a letter or number.
txt
allowed: your-agent
allowed: acme-concierge-2
not allowed: Your Agent
not allowed: atlas_support
not allowed: profileSome handles are reserved beyond profile: common infrastructure names (api, app, admin, docs, web, memory, mcp, auth, tools, connectors, dashboard, status) and, for a brand-new agent, provider names (chatgpt, claude, gemini, grok, configure). Setup rejects a reserved handle with "This name is reserved"; pick your product's own name.
Construct Configure only on your server:
ts
import { Configure } from "configure";
const configure = new Configure({
apiKey: process.env.CONFIGURE_API_KEY,
agent: process.env.CONFIGURE_AGENT,
});Secret keys stay server-side. Browser code uses CONFIGURE_PUBLISHABLE_KEY with the hosted Configure script. The script tag alone renders nothing. Calling a surface without publishableKey or agent renders a setup notice in the target element instead of the surface. With valid keys, the call mounts the hosted surface:
html
<script src="https://configure.dev/js/configure.js"></script>
<div id="configure-entry"></div>
<script>
Configure.link({ el: "#configure-entry", publishableKey: "pk_...", agent: "your-agent" });
</script>Continue with the Quick Start to add Continue with Configure, inline chat controls, profile reads, model tools, tool execution, and turn write-back to an existing agent.