# Motley MCP Server (remote · mcp.motley.nyc)

Live NYC family data: neighborhoods, schools, admissions, safety, health, and resources.

- Trust score: 66/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.motley.nyc`: 66/100 (this document), [markdown](https://verifymcp.io/servers/hypnolabs-io-motley-mcp/mcp.md), [page](https://verifymcp.io/servers/hypnolabs-io-motley-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.motley.nyc/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.0`

## 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-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 15 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 71/100
  - 60% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2071 tokens (~121/item across 17 items; 15 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 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.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http hypnolabs-io-motley-mcp https://mcp.motley.nyc/mcp
```

### Codex

```toml
[mcp_servers.hypnolabs-io-motley-mcp]
url = "https://mcp.motley.nyc/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add hypnolabs-io-motley-mcp --url https://mcp.motley.nyc/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  hypnolabs-io-motley-mcp:
    url: "https://mcp.motley.nyc/mcp"
```

### Other

```json
{
  "mcpServers": {
    "hypnolabs-io-motley-mcp": {
      "type": "http",
      "url": "https://mcp.motley.nyc/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-08-03 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 65, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 65, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 63, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 62)

First indexed and scored.

## MCP tools (15)

### `search-neighborhoods` (~68 tokens)

Search and filter NYC neighborhoods by borough or name. Returns NTA codes, names, boroughs, and centroid coordinates.

Input parameters:

- `borough` (string): Filter by borough
- `limit` (number): Max results
- `query` (string): Search NTA name (case-insensitive)

Output parameters:

- `count` (number): Number of neighborhoods returned
- `neighborhoods` (array)

### `get-neighborhood` (~73 tokens)

Get full details for a single NYC neighborhood including demographics, raw 0-100 scores, location, and a family-readable interpretation (labeled score bands + cached editorial blurbs). Use the nta_code from search-neighborhoods.

Input parameters:

- `nta_code` (string, required): NTA code (e.g. BK0101)

Output parameters:

- `borough` (number|null)
- `borough_name` (string|null)
- `nta_code` (string)
- `nta_name` (string|null)

### `get-neighborhood-summary` (~98 tokens)

Get a decision-ready, family-readable summary of one NYC neighborhood: a one-paragraph fit verdict, labeled score bands (e.g. 'Peace of Mind: strong (78/100)'), and cached editorial blurbs — with raw scores still available. The interpretation-first front door; start here when a family wants an answer, not a data dump.

Input parameters:

- `nta_code` (string, required): NTA code (e.g. BK0101)

Output parameters:

- `borough` (number|null)
- `borough_name` (string|null)
- `nta_code` (string)
- `nta_name` (string|null)
- `summary` (string)

### `get-schools` (~117 tokens)

Get schools within a neighborhood — public, charter, and private. Includes quality ratings, grade levels, contact info. Use count_only for a quick summary, or limit/offset to page the full list (the response reports total/returned).

Input parameters:

- `count_only` (boolean): Return only counts by governance type
- `limit` (integer): Max schools to return (ignored when count_only)
- `nta_code` (string, required): NTA code
- `offset` (integer): Number of schools to skip, for paging through the full list

Output parameters:

- `total` (number)

### `browse-schools` (~394 tokens)

Find NYC schools citywide by what a family wants — borough, community school district (1-32), grade band (pre-K/elementary/middle/high), school type (public/charter/private), admissions method (zoned, screened, unscreened, limited unscreened, ed-opt, audition, SHSAT, charter lottery, private, universal pre-K), and program focus (arts, sports, STEM, language, academic, clubs). Use this when the family describes the KIND of school they want; use get-schools when you already have an nta_code and want everything in that neighborhood. Pass only the filters actually stated — at least one is required, and an invented one returns nothing. Program focus is tagged on public and charter schools only.

Input parameters:

- `admissions_method` (array): How the school admits students; matches a school admitting by ANY listed method. Call get-admissions-methods or explain-admissions-method for what each one means.
- `borough` (string): Limit to one borough. Omit unless the family named one.
- `district` (array): Community school district numbers, 1-32. A borough is NOT a district — for 'schools in the Bronx' use `borough` and omit this. Never guess one.
- `governance` (array): School type. Omit unless the family named one.
- `grade_band` (string): prek (K-12 schools that also run 3-K/pre-K), elementary (K-5), middle (6-8), high (9-12)
- `limit` (integer): Max schools to return
- `offset` (integer): Number of schools to skip, for paging
- `program_categories` (array): Program focus; matches a school offering ANY listed focus. 'arts' covers art, music, dance, drama and theater; 'extracurricular' means clubs. Tagged on public and charter schools ONLY.

Output parameters:

- `filters_applied` (object)
- `returned` (number)
- `schools` (array)
- `total` (number)

### `get-resources` (~45 tokens)

Get family resource counts for a neighborhood: recreation centers, playgrounds, libraries, hospitals, farmers markets, ADA subway stations.

Input parameters:

- `nta_code` (string, required): NTA code

Output parameters:

- `ntaCode` (string)

### `get-activities` (~131 tokens)

Get kids' activities and businesses in a neighborhood — classes, sports, arts, tutoring, etc. from Foursquare data. Use count_only for category breakdown, or limit/offset to page the full list (reports total/returned). Each place's last_refreshed is when we last verified it with Foursquare.

Input parameters:

- `count_only` (boolean): Return only category counts
- `limit` (integer): Max activities to return (ignored when count_only)
- `nta_code` (string, required): NTA code
- `offset` (integer): Number of activities to skip, for paging through the full list

Output parameters:

- `total` (number)

### `get-safety` (~65 tokens)

Get safety and health environment indicators for a neighborhood: crime complaints, collisions, HPD violations, air quality, lead levels, asthma rates — plus a family-readable interpretation of the Peace of Mind and Air & Water Quality scores.

Input parameters:

- `nta_code` (string, required): NTA code

Output parameters:

- `ntaCode` (string)

### `get-comparable` (~71 tokens)

Find neighborhoods most similar to a given one based on a 9-dimension score vector (family density, wealth, education, safety, transit, etc.). Returns similarity scores.

Input parameters:

- `limit` (number): Number of comparable neighborhoods
- `nta_code` (string, required): NTA code to find similar neighborhoods for

Output parameters:

- `comparables` (array)
- `source` (object)

### `find-neighborhood` (~164 tokens)

Find which NYC neighborhood (NTA) an address or coordinate is in. Pass a NYC address (geocoded via OpenStreetMap) OR lat+lng. Returns the NTA code, name, borough, and a decision-ready family-fit summary. Use this to turn a real-world location into a neighborhood you can pass to the other tools.

Input parameters:

- `address` (string): A NYC street address or place name (e.g. "350 5th Ave, Manhattan"). Geocoded via OpenStreetMap, NYC-bounded. Provide this OR lat+lng.
- `lat` (number): Latitude (NYC box). Provide with lng instead of an address.
- `lng` (number): Longitude (NYC box). Provide with lat instead of an address.

Output parameters:

- `nta` (object)
- `query` (object)

### `rank-neighborhoods` (~224 tokens)

Rank NYC neighborhoods by what a family cares about. Pass per-metric weights (family density, schools, affordability, neighborhood character, transit, safety, air & water quality) and/or ranked priority keywords; optionally scope to one borough. Returns the top neighborhoods with a fit score and the metric breakdown — a deterministic weighted sort (the per-child Smart Match stays in the Motley app).

Input parameters:

- `borough` (string): Restrict the ranking to one borough
- `limit` (integer): How many top neighborhoods to return
- `min_population` (integer): Residential floor — drops parks/cemeteries/airports that score ~100 by having almost no residents (default 1000).
- `priorities` (array): Ranked priority keywords, most important first — e.g. ["safety","schools","affordability"]. Mapped to metric weights with rank decay (used only when `weights` is absent).
- `weights` (object): Per-metric importance (0+; higher = matters more). Any subset; normalized internally. Overrides priorities when both are given.

Output parameters:

- `count` (number)
- `neighborhoods` (array)
- `scope` (object)
- `scores_as_of` (string|null)
- `weights_used` (object)

### `compare-neighborhoods` (~109 tokens)

Compare 2–6 NYC neighborhoods side by side across the 9 family-fit metrics (Family Fit, Families, Affordability, Schools, Neighborhood Character, Transit, Safety, Health, Activities). Pass an array of NTA codes; returns a per-metric matrix with each neighborhood's band and the per-metric leader.

Input parameters:

- `nta_codes` (array, required): 2–6 NTA codes to compare side by side (from search-neighborhoods). Unscored codes are dropped.

Output parameters:

- `metrics` (array)
- `neighborhoods` (array)
- `scores_as_of` (string|null)

### `get-admissions-methods` (~170 tokens)

Get the full NYC school-admissions reference: every entry point from 3-K and Pre-K through Kindergarten, Gifted & Talented, and the 8 middle/high admission methods (SHSAT, audition, screened, Ed-Opt, limited unscreened, unscreened, zoned, charter lottery) — each with its typical application window. The methods carry a live program count plus a special_badge naming any extra ask beyond the standard application (an audition, a test, an open-house sign-in), null when there is none; optional band/governance filters narrow the count. Knowledge only.

Input parameters:

- `band` (string): Filter the MS/HS methods to one grade band
- `governance` (string): Filter the MS/HS program counts to public or charter schools

Output parameters:

- `entry_points` (array)
- `filters` (object)
- `methods` (array)
- `note` (string)

### `explain-admissions-method` (~205 tokens)

Explain one NYC admission entry point or method in full — the plain-English explainer, its typical deadline window, and, when the method asks a family for more than a ranked application, exactly what it requires (audition or portfolio, SHSAT registration, a demonstrated-interest sign-in, a private school's own test/interview track) plus the extra paperwork that comes with it. Pass a method key (shsat, audition, screened, ed_opt, limited_unscreened, unscreened, zoned, charter_lottery, private_admissions, prek_universal) or an early entry point (three-k, pre-k, kindergarten, gifted-talented).

Input parameters:

- `method` (string, required): An admission method key (shsat, audition, screened, ed_opt, limited_unscreened, unscreened, zoned, charter_lottery, private_admissions, prek_universal) OR an early entry point (three-k, pre-k, kinder…

Output parameters:

- `full` (string)
- `key` (string)
- `kind` (string)
- `label` (string)
- `program_count` (number)
- `short` (string)
- `special_requirements` (object)
- `stage` (string)
- `typical_window` (string)

### `get-admissions-demand` (~125 tokens)

Get how competitive admission to one specific school is, program by program: seats vs. applicants, applicants-per-seat, offer/fill rate, and a family-readable competitiveness tier (Accessible / Competitive / Highly Competitive). Pass a school DBN (from get-schools). Sourced from MySchools — present mostly for screened/choice high-school programs; zoned, charter-lottery, and private schools usually have none.

Input parameters:

- `dbn` (string, required): School DBN (e.g. 02M475 for Stuyvesant, 13K430 for Brooklyn Tech)

Output parameters:

- `dbn` (string)
- `governance` (string|null)
- `note` (string)
- `programs` (array)
- `school_name` (string|null)

## Diagnostics

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

## Score history

- 2026-08-03: 66
- 2026-08-02: 65
- 2026-08-01: 65
- 2026-07-31: 65
- 2026-07-30: 65
- 2026-07-29: 64
- 2026-07-28: 63
- 2026-07-27: 63
- 2026-07-26: 62

## Links

- Remote endpoint: https://mcp.motley.nyc/mcp
- Repository: https://github.com/HypnoLabs-io/motley-mcp
- Website: https://motley.nyc/mcp
- Changelog RSS feed: https://verifymcp.io/servers/hypnolabs-io-motley-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/hypnolabs-io-motley-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/hypnolabs-io-motley-mcp/mcp
