Get started with MCP
Connect Codex, Claude Code, Cursor, or another MCP client to your PropertyDataLabs Cloud jobs and results.
Connect an AI assistant to PropertyDataLabs to inspect and manage existing Cloud jobs, analyze normalized property records, start a run after you approve its credit estimate, and create JSON or NDJSON exports. It can also search the public product documentation and cite the page it used when answering questions about Cloud Jobs or the browser extension. MCP access is included with Solo Lifetime, 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:
- Solo Lifetime or 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
- Open Account settings → Agent access.
- Under Create a credential, enter a name that identifies the client, such as
Codex on MacBook. - Select only the scopes the client needs. For analysis, start with Read jobs and Results.
- Select Create token.
- 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 <MCP URL shown in Agent access> 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:
export PDL_AGENT_TOKEN="pdl_pat_..."
codex mcp add propertydatalabs \
--url "<MCP URL shown in Agent access>" \
--bearer-token-env-var PDL_AGENT_TOKENRun 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:
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:
{
"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. Starting a job
does consume credits and always requires a separate estimate and your explicit approval.
Available tools
| Tool | What it does | Required scope |
|---|---|---|
pdl_get_capabilities | Shows plan access, granted scopes, credits, and supported operations. | None |
pdl_search_docs | Searches public product documentation and returns canonical page references. | None |
pdl_read_doc | Reads one search result as Markdown so the assistant can answer from the source. | None |
pdl_list_jobs | Lists existing Cloud jobs. | jobs:read |
pdl_update_job | Changes a job name or automatic schedule. Schedule changes also require jobs:run. | jobs:write |
pdl_archive_job | Archives a job without deleting it. | jobs:write |
pdl_unarchive_job | Restores an archived job without starting it immediately. A scheduled job also requires jobs:run. | jobs:write |
pdl_prepare_job_run | Estimates credit usage and returns the approval message and short-lived token. | jobs:run |
pdl_start_job_run | Starts the job only after explicit approval of the prepared estimate. | jobs:run |
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 |
Ask product questions
For questions about Cloud Jobs, the Zillow Data Exporter browser extension, billing, or
troubleshooting, the assistant can call pdl_search_docs, open the best match with pdl_read_doc,
and include the returned canonical url in its answer. These operations search only public
PropertyDataLabs documentation. They do not read account data, consume Cloud credits, or require a
resource scope beyond a valid credential.
For example, ask:
How do I change a Cloud Importer schedule? Please answer from the PropertyDataLabs docs and link to the page you used.
Approve a job run
Starting a Cloud job is deliberately a two-step action:
- The assistant calls
pdl_prepare_job_run. - PropertyDataLabs checks the current job, available credits, the latest successful run, and a fresh estimate. Importer and Aggregator estimates use the configured Zillow search through the existing scraping-provider path when a current listing count is needed. Fetcher and Monitoring estimates use their current active-property counts.
- The assistant shows the returned
approvalMessagewithout weakening or omitting its uncertainty warning. - Only after you explicitly approve that message may it call
pdl_start_job_runwithapproved: true, the short-livedapprovalToken, and a newidempotencyKey.
An approval token expires after 10 minutes and is bound to the credential, account, job, estimate, and current job configuration. If the job changes or the token expires, the assistant must prepare a new estimate. The estimate is not a hard maximum: live listings and building-unit counts can change before or during collection.
Example approval message:
The last successful run used 546 credits. A fresh estimate suggests approximately 610 credits based on Zillow’s current listing count. You have 2,340 credits available. Actual usage may differ because listings can change. Do you approve starting this job?
Existing tokens keep their original scopes. To grant either new job scope, create a new token and revoke the old one after updating the client.
How access is limited
PropertyDataLabs checks the token, scope, resource ownership, current account entitlement, and service availability on every request. Supplying a job, run, or property ID is not proof of access.
MCP can edit the job name and automatic schedule, archive or unarchive a job, and start an explicitly approved run when the token grants the corresponding scopes. It cannot create or delete jobs, and job deletion remains available only in the PropertyDataLabs interface. MCP 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 Read jobs and Results. Add management, run, or export permissions only when the workflow needs them.
- Ask the assistant to cite the returned documentation URL when answering product questions.
- Grant Run jobs only when you want the client to prepare estimates and request approval to run jobs. Never approve a run without reviewing the displayed estimate, balance, and uncertainty.
- 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.
Next steps
- Read the AI agent access reference for response fields, pagination, REST access, errors, and export manifests.
- Review Solo Lifetime if the account uses a one-time license with separately purchased Cloud credits.
- Review the Pro plan.
- Contact support with the client name, approximate time, operation, and request ID if a connection fails. Never include the token or a signed download URL.
