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. Start Codex from an environment that has
PDL_AGENT_TOKEN set, then use /mcp to inspect the active connection. See the
official OpenAI command reference
for other configuration options.
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. See the
Claude Code MCP guide for configuration locations and
alternatives.
Cursor
Make PDL_AGENT_TOKEN available in Cursor's environment and add this entry to
~/.cursor/mcp.json for your user, or .cursor/mcp.json for one project:
{
"mcpServers": {
"propertydatalabs": {
"url": "<MCP URL shown in Agent access>",
"headers": {
"Authorization": "Bearer ${env:PDL_AGENT_TOKEN}"
}
}
}
}Restart Cursor after changing its environment. See the Cursor MCP guide for environment-variable setup.
For another compatible client, create a remote Streamable HTTP connection with the MCP URL and
send the token in an Authorization: Bearer … header. Use token authentication; PropertyDataLabs
does not provide an OAuth sign-in flow for this connection.
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 export from an existing run. | exports:create and results:read |
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 new estimate. Importer and Aggregator estimates use the Zillow search's current listing count when available. Fetcher and Monitoring estimates use their current active-property counts. If the balance is too low, no approval token is issued. Add credits and request another estimate.
- 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 add permissions, create a new token, update the client, confirm that it connects, and revoke the old token. Follow the same steps before a token expires after 90 days.
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 returns a limited set of normalized property fields. It does not expose raw source responses, owner names, or phone numbers. Agent exports expire after 24 hours; request a fresh download link while the export is still available, or create a new export after it expires.
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.
If the connection fails
- Authentication error: Confirm that the client sends the full token in the bearer header, with no extra spaces or line breaks. Check its expiry and revoked status under Agent access.
- Permission error: Check the token's scopes and the account's current plan access. Creating an export needs both Results and Create exports; polling or downloading it needs Read exports.
- No jobs or results: Confirm that the token belongs to the expected PropertyDataLabs account and that the job or completed result is still available there.
- Access temporarily unavailable: Check the service status and try again after the incident is resolved.
Keep access under your control
- 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.
