# SimplyRETS MCP by usefulapi (remote · simplyrets.usefulapi.io)

Search SimplyRETS MLS listings and open houses; read listing and market analytics.

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-25

## Components

- remote · `simplyrets.usefulapi.io`: 63/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-simplyrets/simplyrets.md), [page](https://verifymcp.io/servers/io-usefulapi-simplyrets/simplyrets)

## Channel facts

- Endpoint: `https://simplyrets.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.5.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-25.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 72/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2995 tokens (~299/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the SimplyRETS MCP by usefulapi server?

SimplyRETS MCP by usefulapi is a hosted endpoint at https://simplyrets.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-simplyrets 'https://simplyrets.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-simplyrets": {
      "url": "https://simplyrets.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-simplyrets": {
      "type": "http",
      "url": "https://simplyrets.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-simplyrets]
url = "https://simplyrets.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-simplyrets": {
      "type": "remote",
      "url": "https://simplyrets.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-simplyrets --url 'https://simplyrets.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-simplyrets:
    url: "https://simplyrets.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-simplyrets": {
      "Transport": "http",
      "Url": "https://simplyrets.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-simplyrets -t streamable-http -u 'https://simplyrets.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-simplyrets": {
      "type": "http",
      "url": "https://simplyrets.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-25 (score 63, +1)

- [functional] Server version: 1.5.1 → 1.5.3
- [functional] Server version: 1.5.0 → 1.5.1

### 2026-10-24 (score 62, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Server version: 1.4.0 → 1.5.0
- [functional] Server version: 1.3.0 → 1.4.0
- [functional] Server version: 1.1.0 → 1.3.0

### 2026-10-23 (score 62, 0)

- [functional] Server version: 1.0.1 → 1.1.0

### 2026-10-22 (score 62, +1)

- [functional] Server version: 1.0.0 → 1.0.1

### 2026-10-21 (score 61, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-20 (score 61)

First indexed and scored.

## MCP tools (10)

### `simplyrets_get_account_info` (~70 tokens)

Get account info

What these API credentials can reach: the MLS vendor ids (needed as `vendor` on multi-MLS apps), the time of each vendor's last sync, usernames and the available endpoints (/properties, /openhouses, /agents, /offices, /properties/analytics). OPTIONS /.

### `simplyrets_get_feed_metadata` (~74 tokens)

Get feed metadata

Values present in an MLS feed, to build valid searches: statuses, property types, cities, counties, neighborhoods, areas and features, plus the last sync time. OPTIONS /properties.

Input parameters:

- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).

### `simplyrets_search_listings` (~941 tokens)

Search listings

Search MLS listings (SimplyRETS /properties): by keyword, status, type, price, beds, baths, area, year, city, zip, neighborhood, agent, broker, features or a map polygon. Returns address, price, status, photos, agent, office, property details and remarks, without empty fields. Pass count=true to get the total. Page with next.offset or next.lastId. GET /properties.

Input parameters:

- `agent` (array): Listing agent MLS ids (the co-listing agent is not matched).
- `brokers` (array): Broker or listing office ids, as your MLS provides them.
- `cities` (array): Cities (case-insensitive). simplyrets_get_feed_metadata lists the cities in the feed.
- `coListAgent` (array): Co-listing agent MLS ids.
- `count` (boolean): Also return the total number of matches (slower on big feeds).
- `counties` (array): Counties (case-insensitive).
- `exteriorFeatures` (array): Exterior features, e.g. 'Porch'.
- `features` (array): Interior features, e.g. 'Wet Bar'.
- `idx` (string): IDX display filter. Default 'null' hides listings whose address or entire listing may not be displayed online; 'ignore' returns them too. Your MLS's display rules still bind how you use the data.
- `include` (array): Extra fields: compliance (IDX display data) and rooms (when the feed has them).
- `lastId` (integer): Cursor: 0 for the first page, then the previous reply's next.lastId (sort is ignored when set).
- `limit` (integer): Results per page, 1-100 (default 10).
- `maxGarageSpaces` (integer): Maximum garage spaces.
- `maxacres` (integer): Maximum acreage.
- `maxarea` (integer): Maximum living area, sq ft.
- `maxbaths` (integer): Maximum bathrooms.
- `maxbeds` (integer): Maximum bedrooms.
- `maxdom` (integer): Maximum days on market (needs Days on Market data in the feed).
- `maxlistdate` (string): Listed on or before this date or date-time (UTC unless a timezone is given).
- `maxprice` (integer): Maximum price.
- `maxyear` (integer): Maximum year built.
- `minGarageSpaces` (integer): Minimum garage spaces.
- `minacres` (integer): Minimum acreage.
- `minarea` (integer): Minimum living area, sq ft.
- `minbaths` (integer): Minimum bathrooms.
- `minbeds` (integer): Minimum bedrooms.
- `minlistdate` (string): Listed on or after this date or date-time (UTC unless a timezone is given).
- `minprice` (integer): Minimum price.
- `minyear` (integer): Minimum year built.
- `modified` (string): Only listings whose MLS modification time is on or after this date or date-time.
- `neighborhoods` (array): Neighborhoods or subdivisions (case-insensitive).
- `offset` (integer): Records to skip (the previous reply's next.offset). Do not combine with lastId.
- `ownership` (array): Ownership values (feed dependent).
- `points` (array): A polygon of 'lat,lng' points (3 or more); returns listings inside it. Needs latitude/longitude in the feed.
- `pool` (array): Pool: 'true', 'false' or a value such as 'Private'.
- `postalCodes` (array): Postal / zip codes.
- `q` (array): Keyword search over MLS number, street, unit, city, postal code, subdivision and area; several values match any.
- `salesAgent` (array): Selling agent MLS ids (sales.agent).
- `sort` (string): Sort field; a leading minus is descending. Ignored with lastId.
- `specialListingConditions` (array): Special conditions such as REO, Short Sale or Auction (feed dependent).
- `state` (array): State or province (case-insensitive).
- `status` (array): Listing status (default Active). Closed = sold or leased.
- `subTypeText` (array): Original MLS sub type text values.
- `subtype` (array): Property sub type; not every feed supports every value.
- `type` (array): Property type (default residential and rental).
- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).
- `water` (array): Water body: 'true', 'false' or a value.

### `simplyrets_get_listing` (~138 tokens)

Get listing

One listing by its SimplyRETS id (`mlsId`, the number in search results; NOT the public MLS number `listingId`). Full detail: address, geo, price, photos, agent, office, property, school, tax, remarks. GET /properties/{mlsId}.

Input parameters:

- `include` (array): Extra fields to include, when the feed has them.
- `mlsId` (integer, required): SimplyRETS listing id (the `mlsId` field of a search result).
- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).

### `simplyrets_list_open_houses` (~331 tokens)

List open houses

Upcoming open houses with the listing they belong to: filter by property type, listing id, city, broker, agent, price, size, beds, baths and start date. Page with next.offset or next.lastId. GET /openhouses.

Input parameters:

- `agent` (string): Agent id.
- `brokers` (array): Broker ids.
- `cities` (array): Cities (case-insensitive).
- `include` (array): Extra fields: rooms.
- `lastId` (integer): Cursor: 0 for the first page, then the previous reply's next.lastId (sort is ignored when set).
- `limit` (integer): Results per page, 1-100 (default 10).
- `listingId` (string): Only open houses for this public MLS listing id.
- `maxprice` (integer): Maximum listing price.
- `minarea` (integer): Minimum living area, sq ft.
- `minbaths` (integer): Minimum bathrooms.
- `minbeds` (integer): Minimum bedrooms.
- `minprice` (integer): Minimum listing price.
- `offset` (integer): Records to skip (the previous reply's next.offset). Do not combine with lastId.
- `sort` (string): Sort field; a leading minus is descending. Ignored with lastId.
- `startdate` (string): Scheduled start of the open house.
- `type` (string): Property type of the listing (default residential; one type per query).
- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).

### `simplyrets_get_open_house` (~94 tokens)

Get open house

One open house by its key (the `openHouseKey` of a list result). GET /openhouses/{openHouseKey}.

Input parameters:

- `include` (array): Extra fields: rooms.
- `openHouseKey` (integer, required): Open house key from simplyrets_list_open_houses.
- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).

### `simplyrets_list_agents` (~159 tokens)

List agents

The agent roster of the MLS feed: id, name, address, contact and office. Needs the Agents API add-on on your SimplyRETS app (the demo credentials return an empty list). GET /agents.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 10).
- `name` (string): First name, last name or both.
- `offset` (integer): Records to skip (the previous reply's next.offset). Do not combine with lastId.
- `q` (array): Search agent ids and email addresses.
- `state` (string): Agent address state.
- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).

### `simplyrets_list_offices` (~209 tokens)

List offices

The brokerage office roster of the MLS feed, newest modification first. Needs the Offices API add-on on your SimplyRETS app (the demo credentials cannot use it). Pass count=true for the total. GET /offices.

Input parameters:

- `count` (boolean): Also return the total number of matches.
- `limit` (integer): Results per page, 1-100 (default 10).
- `name` (string): Partial, case-insensitive office name.
- `offset` (integer): Records to skip (the previous reply's next.offset). Do not combine with lastId.
- `q` (array): Match office MLS id, main office MLS id, email (exact) or name (partial).
- `state` (string): Partial, case-insensitive state.
- `username` (string): Feed username, when the credentials have several for the vendor.
- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).

### `simplyrets_get_market_analytics` (~631 tokens)

Get market analytics

Statistics for the listings a search matches (same filters as simplyrets_search_listings): total count, average price, bedrooms, full baths, living area, lot size and year built, and the number of listings per area. Use it for market summaries of a city, zip or price band. GET /properties/analytics.

Input parameters:

- `agent` (array): Listing agent MLS ids (the co-listing agent is not matched).
- `brokers` (array): Broker or listing office ids, as your MLS provides them.
- `cities` (array): Cities (case-insensitive). simplyrets_get_feed_metadata lists the cities in the feed.
- `counties` (array): Counties (case-insensitive).
- `exteriorFeatures` (array): Exterior features, e.g. 'Porch'.
- `features` (array): Interior features, e.g. 'Wet Bar'.
- `idx` (string): IDX display filter. Default 'null' hides listings whose address or entire listing may not be displayed online; 'ignore' returns them too. Your MLS's display rules still bind how you use the data.
- `maxGarageSpaces` (integer): Maximum garage spaces.
- `maxacres` (integer): Maximum acreage.
- `maxarea` (integer): Maximum living area, sq ft.
- `maxbaths` (integer): Maximum bathrooms.
- `maxbeds` (integer): Maximum bedrooms.
- `maxdom` (integer): Maximum days on market (needs Days on Market data in the feed).
- `maxprice` (integer): Maximum price.
- `maxyear` (integer): Maximum year built.
- `minGarageSpaces` (integer): Minimum garage spaces.
- `minacres` (integer): Minimum acreage.
- `minarea` (integer): Minimum living area, sq ft.
- `minbaths` (integer): Minimum bathrooms.
- `minbeds` (integer): Minimum bedrooms.
- `minprice` (integer): Minimum price.
- `minyear` (integer): Minimum year built.
- `neighborhoods` (array): Neighborhoods or subdivisions (case-insensitive).
- `points` (array): A polygon of 'lat,lng' points (3 or more); returns listings inside it. Needs latitude/longitude in the feed.
- `pool` (array): Pool: 'true', 'false' or a value such as 'Private'.
- `postalCodes` (array): Postal / zip codes.
- `q` (array): Keyword search over MLS number, street, unit, city, postal code, subdivision and area; several values match any.
- `salesAgent` (array): Selling agent MLS ids (sales.agent).
- `status` (array): Listing status (default Active). Closed = sold or leased.
- `subtype` (array): Property sub type; not every feed supports every value.
- `type` (array): Property type (default residential and rental).
- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).
- `water` (array): Water body: 'true', 'false' or a value.

### `simplyrets_get_listing_analytics` (~87 tokens)

Get listing analytics

Analytics for one listing, such as its price per square foot. GET /properties/{mlsId}/analytics.

Input parameters:

- `mlsId` (integer, required): SimplyRETS listing id (the `mlsId` field of a search result).
- `vendor` (string): MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-simplyrets/simplyrets#diagnostics

## Score history

- 2026-10-25: 63
- 2026-10-24: 62
- 2026-10-23: 62
- 2026-10-22: 62
- 2026-10-21: 61
- 2026-10-20: 61

## Common questions

### What is the SimplyRETS MCP by usefulapi server?

SimplyRETS MCP by usefulapi is listed in the public MCP registry as io.usefulapi/simplyrets. Search SimplyRETS MLS listings and open houses; read listing and market analytics. This page covers its hosted endpoint (https://simplyrets.usefulapi.io/mcp).

### Is the SimplyRETS MCP by usefulapi server safe to use?

SimplyRETS MCP by usefulapi scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the SimplyRETS MCP by usefulapi server expose?

SimplyRETS MCP by usefulapi exposes 10 tools: simplyrets_get_account_info, simplyrets_get_feed_metadata, simplyrets_search_listings, simplyrets_get_listing, simplyrets_list_open_houses, and 5 more. Their descriptions and schemas cost roughly 2,734 tokens of context every time the server is loaded.

### Does the SimplyRETS MCP by usefulapi server require authentication?

Yes. SimplyRETS MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the SimplyRETS MCP by usefulapi server still maintained?

SimplyRETS MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://simplyrets.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/simplyrets/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-simplyrets/simplyrets.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-simplyrets/simplyrets.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-simplyrets/simplyrets
