---
title: "Get started with MCP"
description: "Connect Codex, Claude Code, Cursor, or another MCP client to your PropertyDataLabs Cloud results."
canonical: "https://www.propertydatalabs.com/docs/data-and-integrations/mcp"
---

# Get started with MCP

Connect an AI assistant to PropertyDataLabs to inspect existing Cloud jobs, analyze normalized
property records, and create JSON or NDJSON exports. MCP access is included with the **Pro plan**
and every higher eligible plan.

PropertyDataLabs uses a remote Streamable HTTP MCP server and a scoped personal access token. The
token controls which operations the client may use and can be revoked independently from your
account password.

## Before you connect

You need:

* An active Pro, Ultra, or eligible legacy Team or Enterprise subscription
* At least one completed Cloud run if you want the assistant to inspect property results
* An MCP client that supports remote Streamable HTTP servers and bearer authentication

## 1. Create a personal access token

1. Open [Account settings → Agent access](/account/settings/agent-access).
2. Under **Create a credential**, enter a name that identifies the client, such as `Codex on MacBook`.
3. Select only the scopes the client needs. For analysis, start with **Jobs** and **Results**.
4. Select **Create token**.
5. Copy the `pdl_pat_` value immediately. PropertyDataLabs shows the complete token only once.

Create a separate token for every client. Tokens expire after 90 days and can be revoked at any
time from the same settings page.

## 2. Copy the MCP server URL

The **Agent access** status card shows the MCP URL for the current PropertyDataLabs environment.
Copy that exact value. The examples below use `` as a placeholder.

## 3. Add PropertyDataLabs to your client

Choose the instructions for your MCP client.

### Codex

Make the token available in the environment that starts Codex, then add the remote server:

```bash
export PDL_AGENT_TOKEN="pdl_pat_..."

codex mcp add propertydatalabs \
  --url "<MCP URL shown in Agent access>" \
  --bearer-token-env-var PDL_AGENT_TOKEN
```

Run `codex mcp list` to confirm the server is configured. In the Codex terminal interface, use
`/mcp` to inspect the active connection.

### Claude Code

Set the token variable, then replace the MCP URL placeholder before running the command:

```bash
export PDL_AGENT_TOKEN="pdl_pat_..."

claude mcp add --transport http propertydatalabs \
  "<MCP URL shown in Agent access>" \
  --header "Authorization: Bearer ${PDL_AGENT_TOKEN}"
```

Open `/mcp` in Claude Code to inspect the connection. Because this form places the token in the
client configuration, keep that file private and revoke the token if it is exposed.

### Cursor

Make `PDL_AGENT_TOKEN` available in Cursor's environment and add this entry to `mcp.json`:

```json
{
  "mcpServers": {
    "propertydatalabs": {
      "url": "<MCP URL shown in Agent access>",
      "headers": {
        "Authorization": "Bearer ${env:PDL_AGENT_TOKEN}"
      }
    }
  }
}
```

For another compatible client, create a remote Streamable HTTP connection with the MCP URL and
send the token in an `Authorization: Bearer …` header.

## 4. Try the connection

Start a conversation with PropertyDataLabs enabled and ask:

> List my Cloud jobs, then show the most recent completed run. Summarize the available property
> records and ask before creating an export.

The assistant should first call `pdl_get_capabilities`, then use only tools allowed by the token's
scopes. Read operations and agent exports do not consume Cloud collection credits.

## Available tools

| Tool                   | What it does                                                          | Required scope   |
| ---------------------- | --------------------------------------------------------------------- | ---------------- |
| `pdl_get_capabilities` | Shows plan access, granted scopes, credits, and supported operations. | None             |
| `pdl_list_jobs`        | Lists existing Cloud jobs without changing or starting them.          | `jobs:read`      |
| `pdl_list_runs`        | Lists retained runs for a Cloud job.                                  | `results:read`   |
| `pdl_get_run`          | Shows one run and its record and credit totals.                       | `results:read`   |
| `pdl_list_properties`  | Pages through normalized properties from a run.                       | `results:read`   |
| `pdl_get_property`     | Retrieves one normalized property record.                             | `results:read`   |
| `pdl_get_run_insights` | Retrieves saved insights for a run.                                   | `results:read`   |
| `pdl_create_export`    | Creates a JSON or NDJSON artifact from an existing run.               | `exports:create` |
| `pdl_get_export`       | Checks export status and returns a short-lived download link.         | `exports:read`   |

## How access is limited

PropertyDataLabs checks the token, scope, resource ownership, current subscription, and service
availability on every request. Supplying a job, run, or property ID is not proof of access.

MCP cannot create, edit, start, archive, or delete Cloud jobs. It also does not expose raw provider
payloads, owner names, phone numbers, or fields that require separate privacy and redistribution
review. Large exports expire after 24 hours; request a fresh download link while the artifact is
still available.

The service defaults to 120 requests per minute for each credential and 300 requests per minute for
each user. If the client receives a `429` response, wait for the `Retry-After` interval before trying
again.

## Safety

* Start with **Jobs** and **Results**. Add export permissions only when the workflow needs them.
* Never put a token in a URL, prompt, chat message, screenshot, or source repository.
* Use a different token for each client so one connection can be revoked without disrupting others.
* Review generated analysis against source URLs and observation times before making a property,
  investment, lending, or legal decision.
* Revoke an unfamiliar or exposed credential immediately under
  [Account settings → Agent access](/account/settings/agent-access).

## Next steps

* Read the [AI agent access reference](/docs/data-and-integrations/ai-agents) for response fields,
  pagination, REST access, errors, and export manifests.
* Review the [Pro plan](/docs/subscription-plans/pro).
* [Contact support](/legal/contact) with the client name, approximate time, operation, and request ID
  if a connection fails. Never include the token or a signed download URL.