Lofty MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Lofty MCP ServerCreate a task for lead 12345 to call back tomorrow"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Lofty MCP Server
Give any AI agent full access to your Lofty (formerly Chime) CRM via natural language.
"Find all leads in the Active stage assigned to John and send them an SMS follow-up"
"Create a task for lead 12345 to call back tomorrow at 9am"
"Show me all transactions over $500k that closed this quarter"
120 tools across 22 modules — full coverage of the Lofty API.
What is this?
This is a Model Context Protocol (MCP) server that wraps the Lofty (formerly Chime) CRM API. Connect it to Claude, Cursor, Windsurf, or any MCP-compatible AI client and your agent can read and write your entire Lofty account using plain English.
Example prompts:
"List all leads tagged 'Hot Buyer' who haven't had activity in the last 7 days"
"Create a call task for lead 9876 assigned to agent Sarah, due in 2 hours"
"Send an SMS to lead 1234: 'Hi, just checking in — are you still looking?'"
"Add a note to lead 5678: 'Interested in 3BR, budget $650k, preapproved'"
"Get all transactions for lead 1234 and show me the property addresses"
Related MCP server: GoHighLevel MCP Server
Tool Summary
Module | Tools | Description |
Sales Agents | 13 | Agent profiles, working leads, plan tasks |
Leads | 12 | Lead management, assignment, activity |
Communication | 10 | SMS, email, call history |
Transactions | 9 | Transaction management |
Tasks V2 | 8 | Modern task API with appointments |
Calendar | 7 | Calendar items and meeting slots |
Tasks V1 | 6 | Legacy task API |
Team Features | 6 | Tags, custom fields, pipelines, ponds |
Lead Routing | 6 | Routing rules and roles |
Intelligent | 6 | AI call scripts, summaries, analysis |
Notes | 5 | Lead notes |
Agent Org | 5 | Organization, offices, permissions |
Notifications | 4 | Push, SMS, and email notifications |
Members | 4 | Team member management |
Lead Manual Log | 4 | Manual activity log types |
Webhooks | 3 | Webhook subscriptions |
Calls | 3 | Call records and recordings |
Listing | 3 | Published listings |
Agent User | 2 | Add agents and tags |
Meta | 2 | Server info and help |
System Logs | 1 | Lead system logs |
Vendor | 1 | Vendor listing |
Total | 120 |
Safe mode (default): 7 delete/destructive tools are disabled — 113 tools active. Set
LOFTY_SAFE_MODE=falseto enable all 120.
Prerequisites
1. Node.js 18+
node --version # must be v18.0.0 or higher2. Lofty API Key or OAuth Token
Lofty supports two authentication methods — both go in the same LOFTY_API_KEY environment variable as a Bearer token:
OAuth2 Access Token (recommended for production):
Register your application in the Lofty developer portal
Complete the OAuth2 flow to obtain an access token
Use the access token as your
LOFTY_API_KEY
API Key (for testing/scripts):
Log in to your Lofty account
Go to Settings → API Keys (or contact Lofty support)
Generate and copy your API key
Note: The Lofty v1 legacy API is scheduled for sunset on August 1, 2026. The tools in this server target the current v2 API paths where available.
Installation
Run without installing (recommended)
# npx
npx @nerdsnipe-inc/lofty-mcp
# pnpm
pnpm dlx @nerdsnipe-inc/lofty-mcp
# bunx
bunx @nerdsnipe-inc/lofty-mcpInstall globally
npm install -g @nerdsnipe-inc/lofty-mcp
lofty-mcpConnecting to AI Clients
Claude Desktop
Edit your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"lofty": {
"command": "npx",
"args": ["-y", "@nerdsnipe-inc/lofty-mcp"],
"env": {
"LOFTY_API_KEY": "your_bearer_token_here"
}
}
}
}With safe mode disabled:
{
"mcpServers": {
"lofty": {
"command": "npx",
"args": ["-y", "@nerdsnipe-inc/lofty-mcp"],
"env": {
"LOFTY_API_KEY": "your_bearer_token_here",
"LOFTY_SAFE_MODE": "false"
}
}
}
}Restart Claude Desktop after saving.
Claude Code (CLI)
claude mcp add lofty \
-e LOFTY_API_KEY=your_bearer_token_here \
-- npx -y @nerdsnipe-inc/lofty-mcpOr add manually to .claude/mcp.json in your project:
{
"mcpServers": {
"lofty": {
"command": "npx",
"args": ["-y", "@nerdsnipe-inc/lofty-mcp"],
"env": {
"LOFTY_API_KEY": "your_bearer_token_here"
}
}
}
}Cursor
Open Settings → MCP and add:
{
"mcpServers": {
"lofty": {
"command": "npx",
"args": ["-y", "@nerdsnipe-inc/lofty-mcp"],
"env": {
"LOFTY_API_KEY": "your_bearer_token_here"
}
}
}
}Windsurf
Add to your Windsurf MCP config:
{
"mcpServers": {
"lofty": {
"command": "npx",
"args": ["-y", "@nerdsnipe-inc/lofty-mcp"],
"env": {
"LOFTY_API_KEY": "your_bearer_token_here"
}
}
}
}Any MCP-compatible client
Use the stdio transport command: npx -y @nerdsnipe-inc/lofty-mcp
Running from Source
git clone https://github.com/nerdsnipe-inc/lofty-mcp
cd lofty-mcp
npm install
# Development (no build needed)
LOFTY_API_KEY=your_token npx tsx src/index.ts
# Build and run
npm run build
LOFTY_API_KEY=your_token node dist/index.jsTool Reference
Leads (12 tools)
Tool | Description |
| List leads with optional filters |
| Get a single lead by ID |
| Create a new lead |
| Update an existing lead by ID |
| Delete a lead by ID (reason required) (safe mode blocked) |
| Assign a lead to a user |
| Update a lead's property inquiry preferences |
| Update a lead's current property information |
| Log an activity event against a lead |
| Get activity history (v1, page-based) |
| Get activity history (v2, cursor-based with timezone support) |
| Look up the assignee agent by phone, email, or external ID |
Sales Agents (13 tools)
Tool | Description |
| Get the current authenticated sales agent profile |
| Get the sales agent assigned to a specific lead |
| Get the current sales agent quota |
| Get sales agent settings |
| Save/update sales agent settings |
| List working leads for the current sales agent |
| Add leads to the working leads list |
| Check if a specific lead is in the working leads list |
| Mute or unmute a working lead |
| Get the mute status for a lead |
| Send an SMS to the agent via the AI number |
| Batch create plan tasks for a lead |
| Get plan tasks for a specific lead |
Tasks V2 (8 tools)
Tool | Description |
| List tasks for a lead (v2 API) |
| Get a single task by ID (v2 API) |
| Create a task or appointment (v2 API) |
| Update a task by ID (v2 API) |
| Delete a task by ID (v2 API) (safe mode blocked) |
| Mark a task as finished |
| Reopen a finished task |
| List tasks assigned to the authenticated user |
Communication (10 tools)
Tool | Description |
| List call communication history for a lead |
| List call communication history (v2 endpoint) |
| List email communication history for a lead |
| List SMS/text communication history for a lead |
| Search communications by agent with filters |
| Send an SMS message to a lead |
| Send an email message to a lead |
| Get a call communication record by communication ID (v2) |
| Get an email communication record by communication ID (v2) |
| Get a text/SMS communication record by communication ID (v2) |
Transactions (9 tools)
Tool | Description |
| List all transactions for a lead |
| Add a new transaction to a lead |
| Get a specific transaction for a lead |
| Update an existing transaction |
| Get the property address for a transaction |
| Update the property address for a transaction |
| Get the list of custom fields for transactions |
| Search transactions with optional filters (v2) |
| Update a Brokermint transaction (callback format) |
Calendar (7 tools)
Tool | Description |
| Query calendar items for a lead (v2 API) |
| Create a calendar item — TASK or APPOINTMENT |
| Update a calendar item by composite ID |
| Delete a calendar item by composite ID (safe mode blocked) |
| Mark a calendar item as finished |
| Reopen a finished calendar item |
| Get available meeting slots for a lead |
Tasks V1 (6 tools)
Tool | Description |
| List tasks for a lead (v1 API) |
| Get a single task by ID (v1 API) |
| Create a task (v1 API) |
| Update a task by ID (v1 API) |
| Delete a task by ID (v1 API) (safe mode blocked) |
| List appointments for a lead (v1 API) |
Team Features (6 tools)
Tool | Description |
| List all tags defined for the team |
| List all custom fields for the team |
| Add or update a custom field value |
| List all lead pipelines for the team |
| List all lead ponds for the team |
| Get a specific lead pond by ID |
Lead Routing (6 tools)
Tool | Description |
| List routing rules for a business type |
| Update a routing rule |
| Get supplement routing rule |
| Update supplement routing rule |
| List all routing roles |
| List assign members for a business type |
Intelligent (AI) (6 tools)
Tool | Description |
| Generate an AI call script for a lead |
| Get AI call summary for a lead |
| Generate an AI call summary for a call |
| List AI lead analysis entries |
| Create an AI lead analysis |
| Generate AI prepare insight for a lead |
Notes (5 tools)
Tool | Description |
| List notes for a lead |
| Get a single note by ID |
| Create a note on a lead |
| Update an existing note |
| Delete a note by ID (safe mode blocked) |
Agent Org (5 tools)
Tool | Description |
| Get organization info |
| Update company information |
| Add a new office to the organization |
| Update an existing office |
| Get permission profiles for the organization |
Notifications (4 tools)
Tool | Description |
| Send an opportunity notification to an agent |
| Send an app push task reminder |
| Send a system SMS to an agent |
| Send a system email to an agent |
Members (4 tools)
Tool | Description |
| Get the current authenticated user profile |
| List all members in the team |
| Get a member by their account email |
| Get a member by their numeric user ID |
Lead Manual Log (4 tools)
Tool | Description |
| List all manual log types |
| Create a new manual log type |
| Get a manual log type by ID |
| Delete a manual log type by ID (safe mode blocked) |
Webhooks (3 tools)
Tool | Description |
| List all webhook subscriptions |
| Subscribe to a Lofty webhook event |
| Delete a webhook subscription (safe mode blocked) |
Calls (3 tools)
Tool | Description |
| List call records for a lead |
| Get a single call record by ID |
| Get the recording URL for a call |
Listing (3 tools)
Tool | Description |
| Get published listings for a site |
| Get listings associated with a specific agent |
| Search listings with advanced filters |
Agent User (2 tools)
Tool | Description |
| Add a new agent profile |
| Add tags to an agent |
Meta (2 tools)
Tool | Description |
| Get information about this MCP server |
| Get usage tips and examples |
System Logs (1 tool)
Tool | Description |
| Get system logs for a specific lead |
Vendor (1 tool)
Tool | Description |
| List vendors |
Example Prompts
Lead management:
"List all leads in the Active pipeline that haven't had any activity in 14 days"
"Create a new lead: Jane Smith, jane@example.com, (555) 987-6543, assign to agent ID 42"
"Update lead 1234: set stage to 'Nurture' and add a note 'Pre-approved, looking for spring'"
Tasks and scheduling:
"Create a call task for lead 5678 due tomorrow at 10am, assign to current agent"
"List all unfinished tasks assigned to me that are overdue"
"Mark task 9012 as finished"
Communication:
"Send an SMS to lead 3456: 'Hi! Just wanted to follow up — still looking in the area?'"
"Show me all email history for lead 7890"
"Search for all communications from agent John in the last 30 days"
AI features:
"Generate a call script for lead 1111 — they're interested in buying a 3BR in Austin"
"Get the AI call summary for lead 2222's last call"
"Create a lead analysis for lead 3333 with current market insights"
Transactions:
"List all transactions for lead 4444 and show the property addresses"
"Search for all transactions over $750k that closed this year"
"Add a transaction to lead 5555: $620,000 purchase, 123 Main St"
Team and admin:
"List all tags defined for our team"
"Get the current routing rules for the residential business type"
"Show me all members of the team and their email addresses"
Environment Variables
Variable | Required | Default | Description |
| Yes | — | Your Lofty Bearer token (OAuth2 access token or API key) |
| No |
| Set to |
Development
Scripts
npm run build # compile TypeScript to dist/
npm run dev # watch mode with tsx
npm test # run all tests with vitest
npm run test:watch # watch mode for tests
npm run test:coverage # coverage reportProject structure
chime-lofty-mcp-server/
├── src/
│ ├── index.ts # server entry point (stdio transport)
│ ├── client.ts # HTTP client, config, LoftyApiError, stripMeta
│ └── tools/
│ ├── leads.ts
│ ├── tasks_v1.ts
│ ├── tasks_v2.ts
│ ├── calendar.ts
│ ├── notes.ts
│ ├── calls.ts
│ ├── communication.ts
│ ├── transactions.ts
│ ├── webhooks.ts
│ ├── sales_agents.ts
│ ├── intelligent.ts
│ ├── notifications.ts
│ ├── members.ts
│ ├── team_features.ts
│ ├── lead_routing.ts
│ ├── lead_manual_log.ts
│ ├── agent_org.ts
│ ├── agent_user.ts
│ ├── vendor.ts
│ ├── listing.ts
│ ├── system_logs.ts
│ └── meta.ts
├── tests/
│ ├── helpers.ts
│ ├── client.test.ts # 26 tests
│ ├── server.test.ts # 56 tests
│ └── tools/ # one file per module
├── bin/
│ └── lofty-mcp.js
├── dist/ # compiled output
└── package.jsonAdding a new tool
Find the module file under
src/tools/for the matching resource (or create a new one).Add a
ToolDefentry withname,description,inputSchema, andhandler.Export it from the module array and import it in
src/index.ts.Add a test in
tests/tools/.Run
npm testto confirm green.
Authentication
The Lofty API uses Bearer token authentication. Every request includes:
Authorization: Bearer <LOFTY_API_KEY>
Content-Type: application/json
Accept: application/jsonBoth OAuth2 access tokens and static API keys use the same header format.
Troubleshooting
Error | Cause | Fix |
| Missing env var | Add |
| Left the default value | Replace with your real Lofty bearer token |
| Invalid or expired token | Re-generate your API key or refresh your OAuth access token |
| Insufficient permissions for this endpoint | Check your account permissions or use an admin token |
Tool not found | Safe mode is on | Set |
| Lofty rate limit hit | Built-in retry with backoff — reduce request frequency if persistent |
Server not showing in Claude Desktop | Config file syntax error or wrong path | Validate JSON, check file path for your OS |
Contributing
Issues and PRs welcome. Please open an issue first for significant changes.
Fork the repo
Create a feature branch
Add tests for your change
Run
npm test— all must passSubmit a PR
License
MIT
Related
Follow Up Boss MCP Server — same pattern for FUB CRM
GHL MCP Server — same pattern for Free Trial GoHighLevel
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NerdSnipe-Inc/lofty-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server