Lettance

For developers and property software teams

Rental rules, with the sources attached.

Give your users a useful first answer about a rental in England. Connect an AI tool or your own application to our public rule catalogue and council licensing research.

Free public access. 77 cited rules. 63 of 296 English councils researched. No API key required. Coverage is still growing.

Connect your MCP client

Add a remote server with URL https://lettance.com/mcp and Streamable HTTP transport. Client interfaces differ; use the remote-server settings in your client. This stateless endpoint returns JSON and does not open a server event stream.

curl https://lettance.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"your-app","version":"1.0.0"}}}'

After initialization, send notifications/initialized without an ID, then tools/list or tools/call. Include the negotiated MCP-Protocol-Version header on later requests. Each POST carries one message. Successful notifications return an empty 202; tool calls return JSON-RPC results.

curl https://lettance.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2025-11-25' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"council_licensing","arguments":{"council":"southwark"}}}'

Server-side clients can connect directly. Browser integrations require an allowed Origin; use your own backend or contact us to allow your site. Default request limit: 120 per IP in ten minutes, subject to operational changes. On HTTP 429, respect Retry-After. There is no uptime or freshness SLA for the free service.

Use the TypeScript client

Download the dependency-free TypeScript client and save it as lettance-sdk.ts in your project. Use Bun or a TypeScript bundler. This is an early source release, not a published npm package.

curl -fsS https://lettance.com/developers/sdk -o lettance-sdk.ts
import { LettanceClient, LettanceError } from "./lettance-sdk";

const lettance = new LettanceClient();
const council = await lettance.councilLicensing("southwark");

if (council.researched) {
  console.log(council.researched_at, council.open_questions);
  for (const scheme of council.schemes) {
    console.log(scheme.name, scheme.confidence, scheme.source_urls);
  }
} else {
  console.log(council.message); // Unknown coverage is not no licence.
}

const { results } = await lettance.searchRules("gas safety");
if (results[0]) {
  const rule = await lettance.getRule(results[0].id);
  console.log(rule.status, rule.legal_basis);
}

The client initializes automatically, preserves structured responses and throws LettanceError for HTTP, protocol and tool errors. It uses a 25-second timeout and does not automatically retry or submit private records. Set timeoutMs or inject fetch in the constructor when needed; HTTP errors expose status and retryAfter.

Four read-only tools

Public MCP tools, inputs and returned information
ToolArgumentsResult
check_addresspostcode, household?Licence verdict for one postcode and household type, matching schemes, register window and planning context. A postcode cannot resolve a street-level boundary.
search_rulesqueryUp to ten matching rule summaries, with status and a link to the full cited rule.
get_ruleidFull rule, legal basis, guidance, requirement, deadlines, evidence and confidence.
council_licensingcouncilCouncil schemes, source links, research dates and open questions; researched: false where the catalogue is incomplete.

household accepts single (default), small_hmo or large_hmo. Use tools/list for the current input schemas. Public tools cannot access accounts, saved properties, certificates, notices, repairs or documents.

Keep the evidence in your interface

  • Rules: show status, confidence and legal_basis. Link to the rule page and the cited legislation or guidance. Proposed rules are not current obligations.
  • Council licensing: retain source_urls, researched_at, verified_at and open_questions. These are source snapshots, not a promise of live verification. Fees may depend on exemptions or discounts.
  • Location: postcodes.io resolves the postcode and ward. Planning Data provides planning context. Show each dataset's planningAvailability: unavailable arrays are null, while empty arrays mean a successful lookup found no mapped matches at the postcode centre. Missing data is not evidence that no designation exists; confirm the precise property against council maps.
  • Reuse: links identify the underlying sources; public access does not grant a blanket licence to republish third-party material. Review each source’s terms for your intended use. EPC address records are excluded from this public interface.

Information for privately rented homes in England, not legal advice. Confirm consequential decisions with the responsible council or a qualified adviser. Read our sources and methodology.

Building a paid property product?

The public MCP tools and repository SDK are free today. We are exploring authenticated higher-volume access, change feeds and agreed support for property software teams. These are not available paid endpoints yet.