ClickCease

Leni developers

Build on Leni’s intelligent runtime platform, powered by your data and context

A single Leni API gives your agents everything they need to deliver exceptional, highly accurate outputs: authorized data, organizational and personal context, memory, and specialized real-estate tools. Use it server-to-server over HTTP or connect compatible AI assistants through Leni’s remote MCP runtime. Both connection modes use the same Leni accounts, tenant boundaries, and usage policies as the Leni application.

Server-to-server

HTTP API

All sandbox and production project keys call https://api.prod.ca-central-1.leni.co. The key itself determines its environment, limits, and billing behavior; there is no separate sandbox hostname.

SettingValue
Base URLhttps://api.prod.ca-central-1.leni.co
AuthenticationX-Api-Key: <key> or Authorization: Bearer <key>
JSON requestsContent-Type: application/json
File requestsUse multipart parts named files or the documented JSON base64 shape.

Project keys are not MCP credentials

Never paste a Leni project API key into Claude or another MCP client. MCP uses OAuth sign-in and a user-specific consent grant.

Quick start

curl -sS "https://api.prod.ca-central-1.leni.co/users/custom-analysts" \
  -H "X-Api-Key: $LENI_API_KEY"
  • Sandbox keys are limited to 5 requests per minute and a monthly trial quota.
  • Production keys are limited to 120 requests per minute. Metered analysis uses included subscription credit first, then funded API credits when available.
  • Respect Retry-After on 429 responses and use idempotent retry behavior.
  • Supported attachments are limited to 50 MB per decoded file.

Current surface

HTTP API reference

The authenticated project-key owner is the security principal for these routes. User and organization identifiers supplied by a client cannot be used to impersonate a different account.

MethodPathPurpose
POST/users/run-modelsRun a Leni AI request. Durably accepted work returns HTTP 202 and exact identifiers for polling.
GET/users/me/chat-messagesList the authenticated API-key owner’s messages.
GET/users/me/chat-messages/:messageIdRead one owned message and its current state.
GET/users/me/chat-sessions/:sessionIdRead a session in which the authenticated owner participates.
GET/users/me/chat-sessions/:sessionId/messagesRead the authorized transcript for a session.
POST/users/me/chat-sessions/attachmentsResolve authorized file references for a session or message.
POST/users/me/chat-sessions/message-responsesRead authorized persisted response rows for a session or message.
POST/users/get-user-memoryList memory available to the authenticated owner.
POST/users/add-to-memoryCreate a memory note, with optional supported attachments.
POST/users/update-memoryUpdate an existing memory note owned by the authenticated context.
POST/users/custom-analystsCreate a custom analyst.
GET/users/custom-analystsList custom analysts for the authenticated owner.
PUT/users/custom-analysts/:analystIdUpdate an owned custom analyst.
DELETE/users/custom-analysts/:analystIdDelete an owned custom analyst.

See the detailed HTTP API reference for request fields, response shapes, examples, limits, uploads, polling, memory, and custom analyst contracts.

Long-running analysis

POST /users/run-models can return HTTP 202 after durable admission. Preserve the exact run, message, and session identifiers, do not repeat an accepted POST, and poll the documented owner-scoped message route until it is terminal. Do not infer a session identifier from an analysis identifier.

Memory writes

HTTP API memory routes currently support list, create, and update. The MCP surface has a separately scoped delete tool that requires explicit user intent.

AI assistants

Connect through Leni MCP

The Leni intelligent runtime exposes account-scoped real-estate, financial, market-research, operating, and context tools to a compatible AI host. Each user signs in to Leni, sees the organization and requested permissions, and grants access through OAuth.

SettingValue
Remote MCP URLhttps://mcp.leni.co/mcp
OAuth issuerhttps://auth.leni.co
TransportStreamable HTTP over HTTPS
AuthenticationOAuth 2.0 sign-in and consent with a Leni account

Connect from Claude

Individual Free, Pro, or Max account

  1. Open Customize → Connectors.
  2. Select Add custom connector, name it Leni, and enter https://mcp.leni.co/mcp.
  3. Connect, sign in to Leni, review the organization and permissions, and approve.
  4. Enable Leni for the conversation.

Claude Team or Enterprise

  1. An Owner or Primary Owner opens Organization settings → Connectors, selects Add → Custom → Web, and adds https://mcp.leni.co/mcp.
  2. Each member opens Customize → Connectors, finds Leni, and authenticates their own Leni account.
  3. The member enables Leni for the conversation. Organization policies may further limit access.
CapabilityBehavior
Account and usageRead the plan, whether analysis is available, and the percentage of included usage remaining. Dollar credit balances are not exposed.
Portfolio dataDiscover approved Leni semantic-layer models and run bounded, read-only queries for operating and financial data.
AnalysisRun context-aware real-estate, financial, market-research, operating, and organizational analysis with Leni’s specialized tools.
Context and memoryConsult relevant personal and organization-scoped context. Create, update, or delete memory only when the user explicitly requests it and the OAuth grant permits it.

When an assistant calls Leni

Connecting Leni makes its tools available; it does not force every request through Leni. The AI host chooses tools from the prompt, enabled connectors, tool descriptions, conversation context, and its built-in capabilities. For a reliable handoff, say “Use Leni to…” and name the connected-data task.

Example requests

  • “Use Leni to show my current portfolio occupancy.”
  • “Use Leni to show how many open work orders I have.”
  • “Use Leni to show rent collected this month.”
  • “Use Leni to explain the main drivers of the change in collections.”
  • “Research downtown Toronto, then use Leni to compare it with the markets in my portfolio.”

Market research through Leni

Use Leni analysis when external market research or multi-step synthesis is needed. The runtime can combine context-aware research tools with the user’s authorized portfolio data and memory. Direct structured-data tools remain limited to authorized Leni data, while the AI host may also use its own approved web capabilities.

Trust boundaries

Data access and billing

  • Every MCP request is bound to the OAuth subject and that user’s active Leni organization.
  • Direct portfolio queries receive server-owned organization and authorized-property filters.
  • MCP clients cannot submit SQL, and direct Leni semantic-layer queries are read-only.
  • One organization’s models, properties, memory, and analysis cannot be selected by another organization’s token.
  • Analysis uses the same included plan usage and funded API-credit spillover as Leni. When neither is available, Leni returns a usage-exhausted error.
  • The account tool exposes percentage usage remaining, not the underlying dollar credit balance.

Read the developer integrations privacy notice for the data categories, connected-assistant flow, retention practices, and customer controls that apply to the HTTP API and MCP runtime.

Operations

Troubleshooting

ProblemWhat to check
Leni is not usedConfirm the connector is enabled, ask explicitly to use Leni, and review the host’s tool-access mode.
Cannot add the connectorA Claude Team or Enterprise owner may need to add the custom connector for the organization first.
Sign-in or consent failsReconnect Leni and confirm the Leni user has an active organization.
Analysis is still runningHTTP API: keep the exact runId, messageId, and sessionId returned by HTTP 202, then poll GET /users/me/chat-messages/:messageId until terminal. MCP: keep the returned analysisId and ask the assistant to check status; use sessionId for transcript retrieval.
Usage exhaustedOpen Leni to manage the plan or fund API-credit spillover, then retry.
HTTP API returns 401Confirm the key is active and sent in X-Api-Key or Authorization: Bearer. Query-string keys are not supported.

Need help with an account or integration? Sign in to Leni and contact the team with the request ID, analysis ID, or failing endpoint. Never include a complete API key in a support message.