Skip to main content
The Lofty MCP server exposes the same Lofty Developer API documented on this site to any Model Context Protocol client — Claude, or any other MCP-compatible agent — so it can search for the right operation, inspect its parameters, and call it. There’s no generated SDK and nothing to install; you point your MCP client at one URL.

Why four tools instead of one per endpoint

The API has 123 operations — the same coverage as the API Reference on this site: leads, notes, tasks, transactions, communication, calendar, webhooks, and team/routing configuration. Exposing each one as its own MCP tool would put every schema into the model’s context on every turn, which measurably degrades tool selection as the list grows — and the list only grows over time. Instead, the MCP server exposes four tools that cover the entire API:
  1. search_apis — find which operation matches an intent, by keyword.
  2. describe_api — get the full parameter schema for one operation.
  3. invoke_api — call it.
  4. list_custom_fields — look up your team’s custom lead fields, which aren’t in any static schema.
The trade-off is one extra round trip (search, then describe, then call) instead of a single tool call — worth it because the tool list never grows no matter how many endpoints the underlying API adds.

Endpoint

The server speaks Streamable HTTP (JSON-RPC 2.0) and is stateless — no session affinity is required between requests, so it’s safe to call from behind a load balancer or a serverless client.

The four tools

Every call runs through the same authentication, authorization, and rate limiting as a direct REST request — invoke_api can’t do anything the authenticated user couldn’t already do through the Lofty CRM itself.

Security: this connects an agent to real, writable CRM data

Unlike a read-only documentation server, invoke_api can create, update, and delete real records — leads, notes, tasks, transactions — as the authenticated user. Keep two risks in mind when wiring this up:
  • Prompt injection. Content read back through invoke_api (a lead’s notes, a text message, a custom field value) is untrusted input from your CRM data, not from you — if an attacker can get text into a record your agent later reads, that text can attempt to redirect the agent’s next action. Don’t let an agent chain a read of CRM content directly into a write or delete without a human confirming the specific call, especially when other MCP servers or tools are connected in the same session.
  • Destructive operations. describe_api marks any operation that modifies or deletes data; treat that as a hard stop for confirmation, not a suggestion.

Next steps

Quickstart

Connect a client and make your first search → describe → invoke round trip.

Authentication

How API keys and OAuth 2.0 tokens both work over MCP.

Tools Reference

Full input schema and example calls for all four tools.

Troubleshooting

Common errors and how to resolve them.