ChatGPT Setup
LiveConnect PMI to OpenAI in three ways: the Responses API for developers, a Custom GPT inside ChatGPT for everyone, or the OpenAI Agents SDK for production agents. Pick the one that fits.
Pick your flavour
Three integration paths, depending on whether you're a developer, an end user, or building production agents.
OpenAI Responses API
Native MCP support. Same URL, same Bearer token, same 28 tools. The fastest path if you’re writing server-side agent code.
Jump to setup ↓Option B · For end usersCustom GPT in ChatGPT
Build a PMI-powered GPT inside the consumer ChatGPT app. Uses our OpenAPI spec, no MCP, no code.
Jump to setup ↓Option C · For agent buildersOpenAI Agents SDK
If you’re building with OpenAI’s Python or TypeScript Agents framework. MCP is first-class.
Jump to setup ↓See it in action
If you've never set up MCP or a Custom GPT before, these official walkthroughs from OpenAI show what the experience looks like. PMI works the same way.
Remote MCP servers in the Responses API
OpenAI’s developer guide to connecting MCP servers like PMI. Same JSON shape, just our URL.
platform.openai.com ↑OpenAI · SupportBuilding a Custom GPT
OpenAI’s help-centre article on creating GPTs with Actions. Same Actions panel where you’ll plug in PMI’s OpenAPI spec.
help.openai.com ↑Option A: OpenAI Responses API
OpenAI's Responses API supports MCP servers natively. Direct connection, same URL, same Bearer token, same 28 tools. This is the recommended path for developers.
Get your PMI API key
Find yours under Account → API Keys in the dashboard. Free tier comes with 100 credits/month, enough to try every tool.
Drop PMI into your tools array
Pick your language:
Run it
The model picks the right PMI tools, calls them, and returns a synthesized answer. Each tool call appears in response.output as a typed block, useful if you want to log what was called.
Restricting which tools the model sees
By default the model sees all 28 tools. To narrow it down (e.g. only valuation tools for a valuation-only chatbot):
Add this inside the MCP tool config block. Reduces token cost and stops the model wandering into unrelated tools.
Approval flows for expensive tools
For interactive UIs where the user should confirm expensive calls (the STR estimate is 50 credits a pop):
The model returns control after every tool call so you can show a “Confirm spending 50 credits on STR estimate?” prompt. For server-side agents, leave it "never".
Option B: Custom GPT in ChatGPT
ChatGPT (the consumer product, including ChatGPT Plus, Team, and Enterprise) supports custom integrations through Actions. Actions use OpenAPI specs, not MCP, so we point your Custom GPT at the REST API directly.
This works well for end users who want to chat with their property data. They don't need to know what MCP is.
Create a Custom GPT
In ChatGPT, click your name → My GPTs → Create a GPT. Click Configure.
Set the basics
- Name: e.g. “Property Market Intel”
- Description: “Ask anything about UK property: valuations, comparables, planning, yields, rents, STR revenue.”
- Instructions: see suggested system prompt below
- Conversation starters: a few prompts to seed users
Add Actions (this is where the API plugs in)
Scroll to Actions → Create new action. Three fields to fill:
Authentication
- Authentication type: API Key
- API Key:
pmi_live_YOUR_KEY_HERE - Auth Type: Bearer
Schema
Paste your OpenAPI spec. We auto-generate one from the live API:
Or copy-paste the JSON directly into the schema box (ChatGPT will validate it).
Privacy policy
Set to: https://www.propertymarketintel.co.uk/privacy
Suggested system prompt
Copy this into the Instructions field. It primes the model to use the right endpoints and quote stats correctly.
Save, test, and distribute
Click Update, then Test. Ask: “What's the rental yield in LS6?”. ChatGPT should hit /v1/rents/yields?outcode=LS6 and return the answer.
If you have ChatGPT Team or Enterprise, you can publish the GPT to your workspace. For public Custom GPTs, set Sharing to Anyone with a link in the publish dialog.
Option C: OpenAI Agents SDK
If you're building with the Agents SDK (Python or TypeScript), MCP is first-class. Same URL, same headers.
Python
TypeScript
Which one should I pick?
Best practices
- Use sub-keys, not your master key. One per integration. Cap each one’s monthly credits.
- Filter tool exposure, when the agent's purpose is narrow. A pure rental-yield bot doesn't need access to
pmi_planning_applications. - For public-facing Custom GPTs, gate via
require_approvalon the expensive tools (pmi_str_revenue_estimateis 50 credits, can drain a key fast). - Server-side proxy for browser apps. Never put
pmi_live_…in client-side JavaScript. Build a thin endpoint on your backend that talks to OpenAI with PMI keys living in env vars. - Cache responses by UPRN, for 24h+ in your own layer. Most user-flow patterns re-request the same property within a session.
Troubleshooting
“Tool not found” / “I don’t have access to that tool”
MCP block missing or allowed_tools excluded it. Confirm the tools list in the request, or remove allowed_tools.
Custom GPT returns 401
API key not set correctly in Actions auth. Re-paste the key in Actions → Authentication → API Key.
OpenAI Responses API returns “MCP server unreachable”
URL typo or trailing slash. Must be exactly …/mcp, no trailing slash.
Calls succeed but credits aren’t deducted
You're using a pmi_test_… key. Test keys don't deduct credits. Switch to pmi_live_… for production.
ChatGPT Custom GPT shows “ChatGPT could not call this Action”
OpenAPI spec validation failure. Re-fetch from /v1/openapi.json, we update it on every release.