Obtain RESO-certified MLS credentials and confirm the server's OData service root URL (typically ending in /odata or /reso/odata).
Send a GET request to the Property resource with an OData $filter parameter, e.g., $filter=StandardStatus eq 'Active' and ListPrice ge 300000 and ListPrice le 600000.
Add $select to restrict returned fields to only what you need (e.g., ListingKey, ListPrice, BedroomsTotal, City) to reduce payload size.
Handle pagination by inspecting the @odata.nextLink value in the response and following it until no next link is present.
Parse the value array from the JSON response; each element is a listing object with RESO-standard field names.
Cache the ETag or ModificationTimestamp from each record to support incremental refresh on subsequent queries.
Known gotchas
MLS servers vary in which OData query options they support; some reject $expand or complex $filter expressions — test each operator separately before combining.
RESO field names are standardized but MLSs often add non-standard local fields with prefixes; do not assume a field exists without checking the $metadata document first.
Rate limits are commonly 1–5 requests per second; aggressive polling will get your API key suspended without warning.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp