MCP App Store
by KeenEthics
Data & Analytics
RED Atlas API icon

RED Atlas API

by Juan Versolato

Overview

RED Atlas gives your AI assistant direct, authenticated access to RED Atlas real-estate data for Puerto Rico and Colombia. Search and retrieve listings, parcels, properties, transactions, permits, taxes and market news; run market statistics and analytics (rankings, cross-tabs, trends and one-call market reports); look up locations and boundary polygons; generate AVM and comparables valuation reports; and pull parcel owner/contact enrichment. Ask in natural language and get answers grounded in Atlas data, with canonical links back to the RED Atlas app. Access uses the user's own RED Atlas account and is billed to their plan.

Tools

atlas_asset_class_report

ChatGPT
Profiles ONE asset class (office, retail/business, warehouse, residential, ...) in a single call: for-sale and for-rent aggregates, a building-class (A/B/C) breakdown, the top municipalities by asking value, month-over-month velocity, AND the total stock of that use — property count plus built area — which yields shareOfStockListed, the percent of the stock currently on the market. Use this instead of chaining atlas_get_stats + atlas_top_by + atlas_velocity by hand. COST: this runs ~7 metered queries and is billed as such (reported in meta.creditCost) — it saves round-trips, not credits. Outlier-flagged placeholder prices are excluded from every money figure, and the area sum drops impossible outliers (see inventory.excludedByAreaCap — quote it with the total). Read meta.notAvailable before reporting anything it lists as missing, and never estimate those.

atlas_comparable_sales

ChatGPT
THE tool for "what did comparable properties actually sell for". Returns RECORDED SALES (registry transactions — real closed prices, not asking prices) near a coordinate, each with its distance from the subject and price per m², plus the median sale price and median price per m² already computed. Optionally returns comparable active listings alongside them, clearly separated — those are ASKS and are not sale evidence. Use this for any valuation, offer-price, underwriting or "is this priced fairly" question. A near/bbox query on transactions is refused (that index has no coordinates), so this is the ONLY way to reach sales by location — never conclude comparable sales are unavailable in Atlas without calling it. PASS THE SUBJECT'S builtArea, lotArea, rooms and toilets whenever you know them: the matching is a similarity search, and comps chosen without them are merely nearby rather than comparable. Runs the comparables report and waits for it (usually seconds); if generation is still running when the wait budget ends you get status "processing" and a reportId to poll with atlas_get_report. Charges the report cost once, reported in meta.creditCost.

atlas_create_comparables_report

ChatGPT
Starts a market-comparables report around a subject property: similar LISTINGS and — unless you turn it off — the RECORDED SALES near it, each with its distance from the subject. This is the Atlas source for "what did comparable properties actually sell for"; recorded sales are registry transactions, not asking prices. Async like AVM — poll atlas_get_report for the result, or call atlas_comparable_sales to do the create and the polling in one step. Charges credits per report (see meta.creditCost).

atlas_enrich_contacts

ChatGPT
Owner/occupant contact data (names, phones, emails, addresses) for a US/Puerto Rico address or person, via skip-trace. BEST WAY TO CALL IT: pass parcelId (+ market) and nothing else — Atlas then builds the query from its own records (the parcel postal address, and in Puerto Rico the owner roll's name), which matches far more often than a listing address does. Resolve the parcelId with atlas_query_data on parcels, or from a listing's parcelId field. Without a parcelId, search by ADDRESS ALONE (numbered street line + city + zip, NO name); add firstName/lastName only to narrow an address search that returned several people. The vendor matches PERSONS only — never put a company, church or organization name in lastName. Queries that cannot match (a development name with no house number, an organization, a bare surname) are REFUSED with a 400 before any vendor call, so read the error hint and fix the query instead of retrying variations. Premium: charges the contacts_enriched credit price per call (echoed in meta.creditCost) whenever contacts are DELIVERED — a no-match costs 0 credits. Repeat lookups of the same subject are served from the RED Atlas store at the same price (data.servedFrom tells which; data.resolvedQuery shows what was actually searched). Only call when the user explicitly needs owner/contact data; for parcel-linked contacts already in Atlas prefer atlas_get_parcel_contacts.

atlas_get_parcel_contacts

ChatGPT
Returns enriched contact information for a parcel. Premium feature: requires a plan with contact enrichment and charges extra credits per call (meta.creditCost). Only call when the user explicitly needs owner/contact data.

atlas_get_record

ChatGPT
Fetches one record by id for an entity type in a market. Costs credits for the fields returned; use fields to limit them. Includes the canonical atlasUrl app link for listings/parcels/properties.

atlas_get_report

ChatGPT
Fetches one report, including its result once status is "completed" and a shareable publicUrl. Free. Poll this after atlas_create_avm_report or atlas_create_comparables_report until status leaves "processing"; a report that ends "abstained" or "failed" was not charged and errorMessage/errorDetail say why.

atlas_get_stats

ChatGPT
Aggregated statistics for a (market, entity) pair — counts, price/area aggregates, percentiles, distributions and derived metrics (e.g. derived.pricePerBuiltAreaMedian). Optionally add an ad-hoc groupBy breakdown, custom percentiles, or an outlier-robust trimmed mean. On listings and transactions the response also carries excludingOutliers — the same price aggregates computed without the documents ingest flagged as isOutlier (scraped placeholder prices such as a $99,900,000 "call for price" listing). QUOTE excludingOutliers FOR ANY MONEY TOTAL OR AVERAGE; the top-level priceStats is the unfiltered figure and can be inflated by a handful of placeholders. Charges a fixed credit cost (reported in meta.creditCost). Supports the same filters as atlas_query_data.

atlas_list_entities

ChatGPT
Lists the entity types (properties, listings, parcels, …) available in a market and their endpoints. Free. Start here when unsure what data a market has.

atlas_list_reports

ChatGPT
Lists the account’s generated reports (all plans). Free.

atlas_lookup_location

ChatGPT
Translates human location names into the stable ids (regionId, cityId, neighborhoodId, …) that atlas_query_data filters expect, and returns boundary polygons. Free (0 credits). kind-specific parameters: cities accepts regionId; neighborhoods accepts cityId; sub-neighborhoods requires neighborhoodIds; zip-codes requires zipCode; buildings requires name and accepts cityId/neighborhoodId. Set includeGeometry to get GeoJSON boundary polygons for markets, regions, cities, neighborhoods, sub-neighborhoods and zip-codes — polygons are large, so keep size small and raise simplify (degrees; higher = coarser) if the result is truncated. sectors/sub-sectors/micro-sectors are a shared property-USE classification (e.g. "Office"), NOT geographic areas — name lookups with no polygon; sub-sectors accepts sectorId and micro-sectors accepts subsectorId to scope to a parent. They apply to properties, permits, tenants and parcels; a TRANSACTION sectorId is a deed type (sale, mortgage, ...) listed in the transactions field guide, not one of these.

atlas_market_profile

ChatGPT
Full market profile for ONE location (a whole market, a region, a city, a neighborhood or a sub-neighborhood): sale and lease medians with monthly series, inventory, days on market, yield, demographics, quality-of-life scores, nearby POIs and local news — in a single call. Resolve the locationId with atlas_lookup_location first. EVERY metric is an envelope: { value, unit, yoy, vsParent, series, availability, caveats } plus optional sourcePeriod { kind, start, end, label? }, captureAsOf. Prefer sourcePeriod for the value; absent means unknown. Live stock uses captureAsOf, independent of snapshot series. Supply/absorption carry inventory captureAsOf and the lagged deed sourcePeriod window. Never date surveys with meta.generatedAt. Read availability before quoting a number — "unavailable" means we genuinely cannot compute it (listed with the reason in meta.notAvailable), and "partial" means the value is real but the caveats change how it should be read (e.g. deed_lag_truncated_12mo, mixed_census_vintages, current_value_only). Never present a metric without its caveats, and never fill an unavailable metric from another source.

atlas_market_report

ChatGPT
Profiles a market in a single call: the aggregated stats block (counts, price/area aggregates, percentiles and derived metrics like median price per m²), a count-per-month trend for the last year, and — when groupBy is set — a ranked breakdown by that dimension. Use this instead of chaining atlas_get_stats + atlas_top_by when you want an overview. Billed as one aggregator call (meta.creditCost), the trend/breakdown add no extra cost.

atlas_pivot

ChatGPT
Cross-tabulates two fields (x by y) with per-cell counts and an optional metric — heatmap/matrix data (e.g. propertyType by city). EITHER AXIS MAY BE A DATE FIELD (createdAt, transactionDate, date): it is then bucketed as a calendar period via interval, which is how you get a per-group TIME SERIES — e.g. xField=propertyType + yField=transactionDate + interval=quarter returns quarterly counts per property type in ONE call instead of one query per period. Charges a fixed credit cost (meta.creditCost).

atlas_query_data

ChatGPT
Lists records of an entity type in a market with pagination, filters, sorting and field projection. Costs credits per record returned — keep limit small and use fields to request only what you need. Each record includes a server-built atlasUrl (canonical app link) for listings/parcels/properties — link to that, never to a record's source url. Response envelope: { data, meta (creditCost), rateLimit (limit/remaining/reset) }.

atlas_read_docs

ChatGPT
Reads the official RED Atlas API docs. Without a topic it returns the section index; with a topic (e.g. "filtering", "credits", "rate limits", "avm") it returns the matching sections. Free. Prefer this over guessing parameters.

atlas_top_by

ChatGPT
Terms aggregation: the top values of groupBy (e.g. propertyType, status, cityId) with their record counts and an optional sub-metric. One call replaces paging + manual counting. Charges a fixed credit cost (meta.creditCost).

atlas_velocity

ChatGPT
How fast a market is moving: the count of new records in the current period vs the previous equal-length period, with the absolute and percent change. E.g. new listings or permits this month vs last month. Charges a fixed credit cost (meta.creditCost). Entities without a usable date field return an error — pass dateField to override the default.

atlas_create_avm_report

Claude

atlas_create_comparables_report

Claude

atlas_get_parcel_contacts

Claude

atlas_get_record

Claude

atlas_get_report

Claude

atlas_get_stats

Claude

atlas_list_entities

Claude

atlas_list_reports

Claude

atlas_lookup_location

Claude

atlas_market_report

Claude

atlas_pivot

Claude

atlas_query_data

Claude

atlas_read_docs

Claude

atlas_top_by

Claude

atlas_velocity

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

35

Tools

3

Prompts

ChatGPT, Claude

Platforms

Category

Home Search

Works with

ChatGPT
Claude

Data refreshed daily