Intempt Docs
Developer Docs

MCP Server

Connect Intempt to Claude, Cursor, Windsurf and other MCP hosts. Install, authenticate, and choose how much of the tool surface to expose.

MCP Server

The Intempt MCP server lets an AI assistant read and edit your Intempt project in plain language. It speaks the Model Context Protocol, so any MCP-capable host can use it.

It is published on npm as @intempt-technologies/mcp.

What it can and cannot do

Read this before you plan an integration around it. The ceiling is deliberate, not a gap waiting to be filled.

Reads your projectYes. Segments, users, accounts, events, journeys, deals, analytics, brand assets
Edits one record at a timeYes. 51 single-record edit tools
Creates anythingNo. Not a single create tool is served
Sends messages or emailNo. No send tool exists
DeletesYes, one record at a time, with no undo
Bulk operationsNo

Asked to create a segment or bulk-delete users, the honest answer is "use the console." There is no tool to approximate it with. See Limits for the full ceiling.

Install

npx -y @intempt-technologies/mcp

Most hosts are configured to run that command for you rather than you running it directly. See Host setup for the exact config for Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Zed and Cline.

The binary name is intempt-mcp-server.

Authenticate

Two ways. Interactive is right for a desktop host, a static token is right for CI.

Interactive. Ask the assistant to log you in, and it runs the login tool. It opens a browser, you sign in, and the token is stored locally.

Static token. Set INTEMPT_AUTH_TOKEN to a JWT. This skips the interactive flow entirely, which is what you want in automation where no one is present to click a browser prompt.

Scope it to an org and project

Every data call runs against one organization and one project. Set both:

export INTEMPT_ORG=your-org
export INTEMPT_PROJECT=your-project

If your account belongs to exactly one of each, login resolves them for you and you can skip this. Otherwise set them explicitly, or ask the assistant to switch with the use_project tool.

Switching project changes what writes touch. The seven generate_* tools persist a real record into whichever project is active, so confirm the scope before generating into a project you just switched to.

How many tools you get

A fresh install serves 10 tools, not the full catalogue. The surface is revealed in waves so a new host is not handed 126 tools on day one.

AddsEnabled by default
Always on6 session tools: login, logout, whoami, org and project switchingYes
core wave4 reads: segments, users, segment members, attribute columnsYes
read waveDetail and list reads across accounts, deals, events, journeysNo
analytics waveFunnels, retention, insights, dashboards, brand readsNo
content waveThe 7 generate_* tools. Each writes a record into the active projectNo
write waveEvery remaining single-record edit, including the 11 deletesNo
Full catalogue126 toolsNo

The 10 you get out of the box:

login  logout  whoami  list_orgs  list_projects  use_project
list_segments  list_users  list_segment_users  list_attribute_columns

To widen it, set INTEMPT_MCP_TOOLS to a comma-separated list of wave names, exact tool names, or all:

# everything
export INTEMPT_MCP_TOOLS=all

# just add the read wave
export INTEMPT_MCP_TOOLS=read

# a wave plus one specific tool
export INTEMPT_MCP_TOOLS=read,analyze_funnel_overall

Waves past core are not equally proven. read and analytics are partially verified against production; content and write are untested, and write includes the 11 deletes that have no undo. Tools lists what each wave contains and how far each has been verified.

Environment variables

VariableDefaultDescription
INTEMPT_ORGOrganization slug. Required
INTEMPT_PROJECTProject slug. Required
INTEMPT_AUTH_TOKENStatic JWT. Skips interactive login
INTEMPT_MCP_TOOLScoreWaves and tool names to enable, or all
INTEMPT_API_URLhttps://api.intempt.comAPI gateway URL
INTEMPT_AUTH_URLsame as INTEMPT_API_URLAuth service URL. There is no separate auth.intempt.com host

For remote mode over HTTP instead of stdio, see Host setup.

Natural language in, no IDs

Every tool takes names, emails and descriptions. You do not look up internal IDs and you do not pass them. Ask for "everything about sarah@acme.com" and the server resolves the address to a user itself.

One exception worth knowing: list_users and list_segment_users search cannot match an email address. Any search term containing @ returns nothing, so an empty result does not mean the person is absent. Both are default tools, so you will hit this on a fresh install. It is a backend bug, not a usage error.

On this page