# DealScanner

> Search real-estate deals, rank top areas, run rental/BRRRR/flip analysis, pull sold comps.

- name: io.dealscanner/dealscanner
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 88/100
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.dealscanner%2Fdealscanner
- tools: https://api.protogrid.dev/v1/servers/io.dealscanner%2Fdealscanner/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

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


## Trust

- hygiene: 100
- liveness: 98
- freshness: 65
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-95% ~updated-142d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: whoami (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); area_stats (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); search_deals (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,053 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 1,053 tokens to load them all
- tool set hash: 0599ae00b8456b127794820aaef53d9c
- badge: [![protogrid quality](https://protogrid.dev/badge/io.dealscanner/dealscanner.svg)](https://protogrid.dev/servers/io.dealscanner/dealscanner)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.dealscanner.io/mcp (streamable-http, auth none, reachable true, uptime30d 0.9464286)

## Packages

_none_

## Tools (7)

- `analyze_brrrr`: Run a BRRRR (buy-rehab-rent-refinance-repeat) analysis.

    Provide either `address` to analyze an existing listing, or the raw inputs
    (`purchase_price`, `rehab_cost`, `arv`, `monthly_rent`) for an ad-hoc deal.
    
- `area_stats`: Get aggregated market, sheriff, sold, and investment stats for one area.

    Args:
        name: Neighborhood or municipality name (e.g. "Point Breeze North").
        area_type: "neighborhood" or "municipality".

    Returns counts, median prices, average cap rate, and sold-comp metrics
    for the area.
    
- `get_comps`: Get recently sold comparable properties.

    Args:
        query: Address or area substring to match.
        limit: Max results (1-100).
    
- `get_property`: Get the full DealScanner analysis for one property by street address.

    Args:
        address: Full property address.
        strategy: "flip", "rental", or "brrrr".
    
- `search_deals`: Search DealScanner investment properties.

    Args:
        query: Address, municipality, or neighborhood text to match.
        strategy: Investment lens - one of "flip", "rental", "brrrr".
        min_price / max_price: Listing price bounds (USD).
        beds / baths: Minimum bedroom / bathroom count.
        property_class: Comma-separated neighborhood grades (A,B,C,D).
        source: "market" (listed) or "sheriff" (auction).
        limit: Max results (1-100).

    Returns a dict with `results`, `total`, and pagination info.
    
- `top_investment_areas`: Rank the best areas to invest (neighborhoods + municipalities).

    Answers "where should I invest?" using DealScanner's market intelligence.

    Args:
        sort_by: Ranking metric - one of "cap_rate" (avg cap rate),
            "roi"/"flip_watch" (projected flip ROI), "count" (inventory),
            or "price" (lowest median price first).
        limit: Number of areas to return (1-50).

    Returns a dict with `areas` (name, type, cap_rate, roi, count,
    median_price, ...) sorted by the chosen metric.
    
- `whoami`: Return the identity and scopes of the current DealScanner API principal.
