Skip to main content

API - Claude set-up

Integrate our API with Claude so you can query it in natural language at any time.

Written by Domenico Davis

Live

Connect PMI to Claude in four flavours. The easiest is the Claude Connector on the web or mobile app, just paste one URL and you are done. Claude Desktop, Cursor, and the Claude API are also covered for power users.

One-URL connector…/mcp?api_key=pmi_live_…

Free tier100 credits/month, all 28 tools

Setup timeAbout 30 seconds

Pick your flavour

Same URL, same key. The difference is just where the conversation lives.

Option A · Easiest

Paste one URL into Claude.ai, the mobile app, or Claude Desktop's Settings panel. No config files, no restarts. Works on every plan including Free.

Option B · Advanced

The older JSON-config approach. Useful if you already manage other MCP servers in claude_desktop_config.json and prefer to keep them together.

Option C

The AI-first code editor. Ideal if you do data analysis in notebooks or maintain Python integrations against the PMI API.

Option D

For production agents. Slack bots, customer support tools, internal automation. Python and TypeScript SDKs supported.

See it in action

If you've never connected an MCP server to Claude before, these public walkthroughs show what the experience looks like. PMI works the same way.

Anthropic · Official

Anthropic's official help-centre article. Step-by-step screenshots of adding a custom connector via Settings → Connectors. Exactly the flow PMI uses.

Video walkthrough

Quick YouTube walkthrough showing what the "Add custom connector" flow looks like end-to-end. Same flow as connecting PMI.

MCP · Official

The Model Context Protocol team's own guide to connecting remote servers. Vendor-neutral, covers the standard Claude flow.

Option A: Claude Connector

By far the easiest way to connect PMI to Claude. The connector takes one URL with your API key embedded as a query parameter, no JSON files, no restarts. Works in Claude.ai in your browser, the iOS and Android apps, and Claude Desktop on Mac and Windows. Available on every plan including Free.

Watch the walkthrough

A 2-minute video showing exactly how to add PMI to Claude as a custom connector, end to end.

PMI · Claude setup3:39

Connect PMI to Claude

Plan limits. Free users can add one custom connector. Pro, Max, Team and Enterprise can add as many as they like. On Team and Enterprise plans, an Owner has to add the connector at the org level once, then individual users connect to it from their own settings.

1

Grab your one-URL connector string

Get your PMI API key from the dashboard, then build your connector URL by appending it as a query parameter:

Your connector URL (copy this)

https://api.propertymarketintel.com/mcp?api_key=pmi_live_c9ef932f5845ec16cf747ed8c1a95d0e29bd74aedb6b7118af7c8722980e6160

Replace pmi_live_YOUR_KEY_HERE with your actual key. That's the entire setup, no separate Authorization header needed. The server reads the key from the query string, authenticates your account, and exposes all 28 tools.

2

Open Claude's connector settings

Same flow on web, mobile, or desktop:

  • Claude.ai (web): , or click your profile then Settings → Connectorsclaude.ai/settings/connectors

  • Claude Desktop (Mac/Windows): click your profile in the bottom-left, then Settings → Connectors

  • Mobile (iOS/Android): tap your profile, then Settings → Connectors

Scroll to the bottom and click Add custom connector.

3

Paste the URL and add

In the dialog that appears:

  • Name: “PMI” (or whatever you'd like)

  • Remote MCP server URL: paste your full connector URL from step 1, including the ?api_key=… part

  • Skip Advanced settings (no OAuth needed, the API key handles auth)

Click Add, then Connect on the new entry that appears in your list.

4

Enable it in your chat

Open a new conversation and click the + button in the message input area, then Connectors. Toggle PMI on. You'll see “28 tools available” listed underneath.

From now on, just ask Claude property questions, it'll pick the right tools and call them automatically.

What's the rental yield in LS6, and is the area growing in demand?

How many PMI credits do I have left this month?

Find me 3-bed houses under £200k in Leeds with yields above 7%, ranked by yield.

Treat the connector URL like a password. Anyone with the URL can use your credits. If you share a screen recording or paste a URL into a public chat, rotate the key in your dashboard. Best practice: create a sub-key with a credit cap dedicated to this connector.

Option B: Claude Desktop config file (advanced)

Claude Desktop also supports the connector method described in Option A above, which is what most users should use. This option covers the older approach: editing claude_desktop_config.json directly. Worth knowing about if you already manage other MCP servers via that file and want to keep them all in one place, or if you need to scope a key to one specific machine via a stored config.

1

Open the config file

Easiest route: open Claude Desktop, go to Settings → Developer → Edit Config. That opens the file in your default editor and creates it if it doesn't exist.

Or open it directly:

OS

Path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

2

Add the PMI block

If the file is empty, paste the whole thing. If you've already got other MCP servers, just add the pmi entry inside the existing mcpServers object.

claude_desktop_config.json

{   "mcpServers": {     "pmi": {       "type": "http",       "url": "https://api.propertymarketintel.com/mcp",       "headers": {         "Authorization": "Bearer pmi_live_c9ef932f5845ec16cf747ed8c1a95d0e29bd74aedb6b7118af7c8722980e6160"       }     }   } }

Replace pmi_live_YOUR_KEY_HERE with your actual key from the dashboard.

3

Fully quit and reopen Claude Desktop

Cmd+Q on macOS, then relaunch. Closing the window isn't enough. The app needs a clean restart to load the new config.

4

Confirm it loaded

Click the plug icon at the bottom of the chat input box, then select Connectors. You should see “pmi” listed with 28 tools.

If you don't see it, jump to the troubleshooting section at the bottom of this page.

5

Try a real question

Open a new chat and try one of these:

“What's the rental yield in LS6, and what's the live for-sale market like there?”

“How many PMI credits do I have left this month?”

“Pull the AVM for UPRN 100023336956 and list 5 sold comparables within 1km.”

Each tool call appears in the chat with an expandable JSON pane so you can verify the inputs and the response.

Option C: Cursor IDE

Cursor has first-class MCP support. Ideal if you're doing data analysis in notebooks, building a property dashboard, or maintaining integration code against PMI.

1

Open Cursor MCP settings

Three options, same end result:

  • UI: Open Settings → Tools & MCP → New MCP Server.

  • Project-level config: Create .cursor/mcp.json in your project root.

  • Global config: Create ~/.cursor/mcp.json for use across all projects.

Project-level config takes precedence if both exist.

2

Add the PMI block

.cursor/mcp.json

{   "mcpServers": {     "pmi": {       "url": "https://api.propertymarketintel.com/mcp",       "headers": {         "Authorization": "Bearer pmi_live_c9ef932f5845ec16cf747ed8c1a95d0e29bd74aedb6b7118af7c8722980e6160"       }     }   } }

3

Restart Cursor and verify

Open Settings → Tools & MCP. A green dot next to “pmi” means it's connected. Red means the connection failed (check the Authorization header, then check the URL has no trailing slash).

4

Use it in chat

Open Cursor's chat panel (Cmd/Ctrl+L) and try:

“Use the pmi tools to pull the AVM for UPRN 100023336956 and show me 5 sold comparables within 1km, then write a Python function that does the same lookup for any UPRN I pass in.”

“For each outcode in [LS4, LS6, LS11, LS28], call pmi_rents_yields and put the results in a pandas DataFrame.”

Option D: Claude API (Messages API)

For production agents. Slack bots, customer support flows, internal tooling, anything where you're calling Claude programmatically. Use the Anthropic Messages API with an mcp_servers parameter.

Python

Python \u00B7 anthropic SDK

from anthropic import Anthropic  client = Anthropic()  # ANTHROPIC_API_KEY from env  response = client.messages.create(     model="claude-sonnet-4-6",     max_tokens=2048,     mcp_servers=[{         "type": "url",         "url": "https://api.propertymarketintel.com/mcp",         "name": "pmi",         "authorization_token": "pmi_live_c9ef932f5845ec16cf747ed8c1a95d0e29bd74aedb6b7118af7c8722980e6160",     }],     messages=[{         "role": "user",         "content": "What's the projected STR revenue for a 2-bed flat in BA1 1?",     }], )  # Each tool use + result is a content block in response.content for block in response.content:     print(block)

TypeScript

TypeScript \u00B7 @anthropic-ai/sdk

import Anthropic from "@anthropic-ai/sdk";  const client = new Anthropic();  const response = await client.messages.create({   model: "claude-sonnet-4-6",   max_tokens: 2048,   mcp_servers: [{     type: "url",     url: "https://api.propertymarketintel.com/mcp",     name: "pmi",     authorization_token: "pmi_live_c9ef932f5845ec16cf747ed8c1a95d0e29bd74aedb6b7118af7c8722980e6160",   }],   messages: [{     role: "user",     content: "What's the projected STR revenue for a 2-bed flat in BA1 1?",   }], });  console.log(response.content);

What you get back

response.content is an array of typed blocks: text, mcp_tool_use, and mcp_tool_result. Iterate them in order to reconstruct what Claude did. Most apps just need the final text block.

Multi-turn conversations

To continue a conversation (the agent might want to call follow-up tools after seeing a result), feed response.content back as the assistant message and add a new user message:

Python \u00B7 multi-turn

messages = [     {"role": "user", "content": "What's the yield in LS6?"},     {"role": "assistant", "content": response.content},     {"role": "user", "content": "Now show me listings under £200k there."}, ] response2 = client.messages.create(model=..., mcp_servers=..., messages=messages)

Cost considerations

Each tool call is a separate Anthropic API turn. Anthropic charges for the model tokens used to formulate the call and parse the result. PMI bills separately based on which tools were called (same as REST). For a typical agentic interaction, expect 2 to 4 tool calls per user question.

Other Anthropic-powered clients

Anything that wraps Claude with MCP support (Continue, Cline, Aider plugins, etc.) uses the same URL and Bearer token. Look for an “HTTP MCP server” or “Remote MCP” config option and paste:

Generic config

URL:    https://api.propertymarketintel.com/mcp Header: Authorization: Bearer pmi_live_YOUR_KEY_HERE

Best practices

  • Don't put your master key in client configs. Create a sub-key per client (e.g. pmi_live_claude_desktop_macos) so you can revoke it without breaking other integrations.

  • Set a credit cap on each sub-key. Limits how badly an agent gone wild can drain your allowance.

  • Use dry_run=true when prototyping. PMI tools accept this query param. The response shape mirrors the real call but no credits are spent.

  • Watch the connector panel in Claude Desktop. The tool log shows exactly which tools the model picked. If it consistently picks the wrong one, get in touch and we'll tune the description.

  • Pair MCP with a short system prompt. Telling Claude things like “always quote the median, not the mean, when discussing rents” helps it format answers consistently.

Troubleshooting

Connector panel shows "pmi: 0 tools"

You're connected but the tools didn't enumerate. Almost always: the Authorization header isn't being passed. Re-check the JSON in claude_desktop_config.json, common typo is "Header" instead of "Authorization". Then quit and relaunch Claude Desktop fully.

Tool calls return "Authentication failed"

The token is being sent but PMI rejected it. Confirm the key starts with pmi_live_, that it's marked active in the dashboard, and that there's no leading or trailing space in the config.

Tool calls return "Monthly credit limit reached"

You’ve spent your allowance. Upgrade your tier in the dashboard, or wait until the next billing cycle starts.

Claude says "I tried to call pmi but the tool isn't available"

The MCP server isn’t connected. Click the connector panel; if "pmi" isn’t listed at all, the URL is wrong or the file isn’t being read. Re-do the config step.

Latency is bad on tool calls

First call from a fresh Claude Desktop session warms up the MCP connection, expect about 500ms to 1s overhead. Subsequent calls in the same session are sub-200ms beyond the underlying endpoint’s latency.

JSON config edits aren't taking effect

Common causes: invalid JSON (a trailing comma is the usual culprit), saved the wrong file, or didn't fully quit Claude Desktop. Validate your JSON with jq or paste it into an online JSON validator.

Did this answer your question?