AI agent access
Connect an AI agent to existing Cloud jobs and property results through MCP or REST.
AI agent access lets a client inspect property data that your account has already collected. It supports a remote Model Context Protocol (MCP) endpoint and a versioned REST API backed by the same permissions and response schemas.
Access is included with Pro, Ultra, and eligible legacy Team or Enterprise accounts. It does not let an agent create, edit, start, archive, or delete a Cloud job.
For client-specific setup instructions, start with Get started with MCP.
Before you connect
- Open Settings → Agent access.
- Confirm that the account shows Access enabled.
- Create a credential with only the scopes your client needs.
- Copy the token when it appears. PropertyDataLabs never shows the complete token again.
Treat the token like a password. Do not put it in a prompt, source repository, screenshot, or support message. Create a different token for each client so you can revoke one connection without affecting the others.
Connect an MCP client
The Agent access page shows the MCP endpoint for the current environment. Configure a remote Streamable HTTP server with that URL and send the personal access token as a bearer credential.
{
"url": "<MCP URL shown in Agent access>",
"headers": {
"Authorization": "Bearer pdl_pat_..."
}
}Client configuration formats differ. Keep the token in the client's secret or environment-variable store when one is available.
Use the REST API
The Agent access page also shows the REST base URL. Its OpenAPI document is available at
<REST base URL>/openapi.json.
curl --fail-with-body \
--header "Authorization: Bearer $PDL_AGENT_TOKEN" \
"${PDL_AGENT_API_URL}/jobs?limit=25"Responses use normal JSON and opaque cursors. Pass pagination.nextCursor as the next request's
cursor; do not inspect, modify, store permanently, or share a cursor between credentials. Cursors
expire and are bound to the credential, operation, and request filters.
Available access scopes
| Scope | Allows |
|---|---|
jobs:read | List existing Cloud jobs and their runs. |
results:read | Read normalized property records and existing run insights. |
exports:read | Poll export status and retrieve a fresh, short-lived download URL. |
exports:create | Create JSON or NDJSON export artifacts from an existing run. |
The service defaults to 120 requests per minute for each credential and 300 requests per minute for
each user. Responses include agent-specific limit, remaining, and reset headers. A 429 response
includes Retry-After; wait for that interval rather than retrying immediately.
Tool annotations help a client present actions, but the server enforces scopes and ownership on every request. Revoked, expired, or insufficiently scoped credentials are rejected.
What an agent can read
The initial property contract contains normalized identity, source URL, address, coordinates,
listing status, price or rent, beds, baths, living area, lot area, units, observation time, and
collection time. Missing values are returned as explicit null values. Dates use ISO 8601 and
numeric measurements remain numbers.
PropertyDataLabs reports information retained from the configured collection source. It is not an MLS, appraisal, title report, underwriting decision, legal opinion, or guarantee that a listing is current. Check the source URL and observation time before relying on a record.
The Agent API does not expose raw provider payloads, owner names, phone numbers, or other fields that require a separate privacy and redistribution review.
Use exports for larger result sets
Page through properties for interactive investigation. For a large result, create an ndjson
export and poll its export ID until the status is ready. Download URLs are short-lived and can be
renewed while the export artifact remains available. Artifacts expire 24 hours after creation.
Each export includes a manifest with source IDs, schema version, listing type, scraping depth, selected fields, record count, MIME type, checksum, file size, and expiry. Read and export operations do not consume Cloud collection credits in this release.
Public sanitized examples:
Errors and support
REST errors include a stable code and request ID. MCP tool errors include the same safe message in the tool result. Save the request ID when contacting support, but never include your token, signed download URL, property payload, or personal information.
Check the service status page for known incidents. For an integration problem, contact support with the client name, approximate time, operation, and request ID.
