The Johns Islander — Kiawah, Seabrook and Johns Island
Server Details
Kiawah, Seabrook and Johns Island, SC: neighborhoods, MLS market, every fee, flood zones, what's on.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 10 tools
Tools mostly target distinct needs: market stats, neighborhood records, fee ledger, flood lookup, events, directory, and contact. Some overlap exists because estimate_range, true_cost, island_market, and get_neighborhood all surface pricing or cost information, but each is scoped differently enough for a careful agent.
All names use snake_case and are readable, but the set mixes noun-only names (fees, places, happenings), noun phrases (flood_zone, island_market, true_cost), and verb_noun names (estimate_range, get_neighborhood, list_neighborhoods, request_contact). This is not a consistent verb_noun pattern, though it is not chaotic.
10 tools is well within a reasonable range for a hyperlocal real estate and island-info server. Each tool appears to earn its place by covering a distinct data source or action.
The surface covers core informational needs: neighborhood lists and detail, market stats, fee ledger, cost calculator, flood zone, places directory, events, and agent contact. Potential gaps include active property-level listing search or a get_place detail operation, but most real-estate research workflows can be completed or routed via request_contact.
Available Tools
10 toolsestimate_rangeThe living CMA rangeARead-onlyIdempotentInspect
Arithmetic, not a price opinion: the middle half of closed-sale price per square foot (25th–75th percentile) for a complex, or for attached or detached homes island-wide, times the given heated square feet. For a real CMA, send the person to request_contact.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | For the island-wide figure: attached (villa, townhome) or detached | |
| sqft | Yes | Heated square feet | |
| island | Yes | kiawah = Kiawah Island (incl. Cassique and Orange Hill on Johns Island); seabrook = Seabrook Island | |
| neighborhood | No | Optional name or slug; without it, or when the complex has under five recent sales, the island-wide figure is used |
Output Schema
| Name | Required | Description |
|---|---|---|
| low | No | Dollars: 25th percentile × sqft |
| high | No | Dollars: 75th percentile × sqft |
| basis | No | Which sales the range rests on |
| middle | No | Dollars: median × sqft |
| attribution | No | MLS attribution |
| what_this_is | No | Arithmetic on aggregates, not an appraisal |
| price_per_sqft | No | p25, median, p75 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent read, so safety needs no restating. The description adds genuinely useful context: the underlying data source (closed sales), the statistical method (interquartile middle half), and an interpretive caveat that the result is not an appraisal — which tells the agent how to present the number.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler, front-loading the most important framing ("Arithmetic, not a price opinion") before the method and the routing instruction. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations cover the safety profile. The description supplies method, scope, fallback awareness, and an alternative-tool route — nothing an agent needs in order to call this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including the sub-five-sales fallback to island-wide. The description's "for a complex, or for attached or detached homes island-wide" largely restates that schema split rather than adding new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific computation and resource: the 25th–75th percentile of closed-sale price per square foot multiplied by heated square feet. It also explicitly distinguishes itself from the CMA workflow by routing agents to request_contact, so an agent can place it among siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Arithmetic, not a price opinion" plus "For a real CMA, send the person to request_contact" gives an explicit boundary and names the alternative tool. It never states the positive trigger (use this when a client wants a quick ballpark figure) in so many words, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feesEvery fee to buy and ownARead-onlyIdempotentInspect
The fee ledger for Kiawah, Seabrook or Johns Island: each buyer, owner and rental charge with its amount, who charges it, how sure it is (confirmed / secondary / conflicting / not published), its source and the date it was checked.
| Name | Required | Description | Default |
|---|---|---|---|
| island | Yes | kiawah = Kiawah Island; seabrook = Seabrook Island; johns-island = Johns Island (incl. Kiawah River) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | The ledger page |
| rule | No | How to quote unsettled lines |
| lines | No | Each fee: name, charged_by, amount, applies_to, confidence, source, checked, note |
| island | No | Island name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful context on data-confidence categories, who charges each fee, source, and checked date, though it omits permissions or rate-limit details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; each clause adds either scope or useful fee metadata. The size is appropriate for a simple one-parameter lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, one-parameter lookup with a rich schema, annotations, and output schema, the description covers scope and data quality well. It could better route agents among sibling tools, but nothing essential is missing for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the required island enum fully documented. The description mirrors the three island names but does not add syntax or meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource, the fee ledger for Kiawah, Seabrook, and Johns Island, and enumerates buyer, owner, and rental charges plus metadata. It is clearly more specific than the name alone, but does not explicitly distinguish itself from siblings like true_cost or estimate_range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent can infer this is for fee lookup on the three islands. However, there is no explicit when-to-use or when-not guidance versus true_cost, estimate_range, or island_market.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flood_zoneFlood zone for an addressARead-onlyIdempotentInspect
One street address in Charleston County: FEMA's flood zone and base flood elevation at the point the Census geocoder places it, the map panel and its date, whether it is inside a town or the City of Charleston, the county tax district, and the ground's height from USGS lidar. Live calls to the government services named in sources. A geocoded point, not a survey — the person confirms on the parcel's elevation certificate.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Street address with city and ZIP, e.g. "1518 Main Rd, Johns Island, SC 29455" |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | The flood page |
| flood | No | zone, subtype, special_flood_hazard_area, base_flood_elevation_ft, datum |
| inside | No | Municipality, if any |
| sources | No | The government services used |
| map_panel | No | FEMA panel id and effective date |
| tax_district | No | County tax district |
| matched_address | No | The address the geocoder matched |
| ground_ft_navd88 | No | Ground height from USGS lidar |
| services_that_did_not_answer | No | Which live services failed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint and a closed-world profile, so the safety burden is offloaded. The description still adds real behavioral context: it discloses that results come from live government service calls (latency/availability implications), names the underlying data sources, and flags the accuracy limitation of a geocoded point versus a survey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the opening clause, followed by the output inventory and then the caveat — a sensible ordering. The single dense sentence is information-rich but somewhat list-heavy; every clause carries content, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with an output schema and full annotation coverage, the description supplies everything needed: scope, data sources, behavioral traits, and the accuracy caveat. An agent can call it correctly and interpret the result without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'address' parameter, so the baseline is 3. The description goes slightly beyond the schema by constraining the input to a single address within Charleston County, which the schema's format hint does not state, and by implying the point is determined by the Census geocoder.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (FEMA flood zone + base flood elevation for one address) and enumerates exactly what is returned: map panel and date, town vs City of Charleston, county tax district, and USGS lidar ground height. No sibling tool covers flood data, and the scope ('One street address in Charleston County') is stated up front so an agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It scopes usage precisely (single address, Charleston County only) and adds a when-not-to-rely caveat ('A geocoded point, not a survey — the person confirms on the parcel's elevation certificate'). What it lacks is any explicit routing to alternatives, though none of the sibling tools overlap, so the practical risk is low.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_neighborhoodOne neighborhood's recordBRead-onlyIdempotentInspect
One neighborhood's record. Kiawah and Seabrook: sourced facts (each with who published it), regime manager, the county's homes and lots, its MLS sales by year, the living-CMA price-per-square-foot range, what it costs to own (fee ledger lines) and the page URL.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name or slug, e.g. "Pelican Watch Villas" or "pelican-watch-villas"; on Johns Island the MLS subdivision name, e.g. "Kiawah River" or "Stonoview" | |
| island | Yes | kiawah = Kiawah Island; seabrook = Seabrook Island; johns-island = Johns Island (incl. Kiawah River) |
Output Schema
| Name | Required | Description |
|---|---|---|
| mls | No | Sales by year and the last 24 months, or why the MLS can't count it |
| url | No | The record's page |
| name | No | Neighborhood |
| costs | No | Fee ledger lines |
| facts | No | Sourced facts, each with who said it |
| county | No | The county roll: homes, lots, deeds |
| sources | No | Label, url, what it supports, date checked |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds provenance context ('each with who published it') and payload scope, which is mildly useful. It lists return contents rather than behavior, and says nothing about missing-record handling or island-specific differences beyond the odd 'Kiawah and Seabrook:' scoping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, which is good. However the remainder is a long run-on enumeration of payload fields, much of which duplicates what the existing output schema already conveys, and 'Kiawah and Seabrook:' dangles without a clear predicate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description is under no obligation to explain return values — yet it spends nearly all its words doing exactly that. The genuinely useful gaps (when to prefer this over list_neighborhoods or island_market, and what happens on a name miss) remain unaddressed. Adequate, but with clear gaps for a two-required-parameter lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the island enum is fully documented in the schema (including the Johns Island caveat), so the baseline is 3. The description contributes no parameter-level guidance — it neither explains the name/slug acceptance rules nor how island interacts with name resolution. Nothing is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description makes clear this retrieves a single neighborhood's record and enumerates its contents (sourced facts, regime manager, homes/lots, MLS sales, CMA range, fee ledger, page URL). It is distinguishable from list_neighborhoods and island_market by the singular 'one neighborhood' framing. The verb is implied rather than stated ('One neighborhood's record' is close to restating the title), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use instruction, no prerequisites, and no named alternative among the ten siblings. The agent can infer it is the detail-lookup counterpart to list_neighborhoods, but this is left entirely to inference. No exclusions or boundary conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
happeningsWhat's on: today, tomorrow, the weekend, live musicARead-onlyIdempotentInspect
What's happening on the islands and across Charleston, as one list cut on the islands' clock: the Towns' and the library's calendars, the music venues' own feeds (the Charleston Pour House, the Royal American), the year's big dates, the special events, what venues posted and a person approved, and a weekly sweep of the venues with no feed. Every item carries its organizer's page; the door price is as the venue lists it. Use when = today, tomorrow, weekend, week (next 7 days) or all (next 3 weeks); tag = Music for live music.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| when | No | ||
| island | No | islands = Kiawah, Seabrook, Johns Island, Wadmalaw; charleston = the rest of Charleston |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | The events page |
| rule | No | Listed, never ranked |
| as_of | No | The islands' clock when this was cut |
| count | No | How many |
| items | No | Each: title, when, time, through, place, area, tag, cost, url, source |
| window | No | today | tomorrow | weekend | week | all |
| sources | No | Which calendars answered |
| featured | No | The next big dates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, non-destructive, closed-world lookup, so the safety profile is covered. The description adds genuinely useful context beyond that: the provenance of each item, that every entry carries its organizer's page, that door price is as the venue lists it, and the 'weekly sweep' cadence that hints at freshness limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is a long comma-chained inventory of sources that reads more like marketing copy than a spec, and the practical 'Use when' instruction is buried at the end rather than front-loaded. It is not padded with filler, but it could be tightened considerably without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description adequately covers sourcing, coverage, and the temporal/tag scoping an agent needs to call it. The main residual gap is any guidance on ordering or result volume, which is minor given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (just the island enum), so the description has to carry the load and largely does: it defines week as 'next 7 days' and all as 'next 3 weeks', and maps tag='Music' to live music. These are meanings not recoverable from the bare enum values, though the remaining tag values are left to the enum names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly establishes this as an aggregated 'what's on' events list for the islands and Charleston, and enumerates the specific sources it merges (town/library calendars, venue feeds like the Pour House and Royal American, a weekly sweep). It is distinguishable from siblings like fees, flood_zone, or places, though it never names an alternative sibling explicitly and phrases the action as 'what's happening' rather than a crisp verb+resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use when = today, tomorrow, weekend, week (next 7 days) or all (next 3 weeks)' line gives concrete usage framing, but it is really documenting a parameter rather than telling the agent when this tool beats a sibling. There is no when-not guidance and no reference to any of the other ten tools, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
island_marketAn island's verified MLS marketARead-onlyIdempotentInspect
Kiawah, Seabrook or Johns Island: the last 12 months of residential sales island-wide from the MLS's own statistics (every island). Kiawah and Seabrook add home sales from 2021-01-01 to the last pull (2026-10-14), checked month by month against the MLS's own statistics: the last 12 months, each year's price per square foot and price-cut share, each price band's days on market and months of supply, and what cutting the price has meant for sellers.
| Name | Required | Description | Default |
|---|---|---|---|
| island | Yes | kiawah = Kiawah Island; seabrook = Seabrook Island; johns-island = Johns Island (incl. Kiawah River) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | The page |
| island | No | Island name |
| by_year | No | Kiawah/Seabrook: sales, median price and price per square foot by year |
| attribution | No | MLS attribution |
| for_sellers | No | Kiawah/Seabrook: what cutting the price did |
| last_12_months | No | Island-wide MLS statistics for the last 12 months |
| price_bands_last_12_months | No | Kiawah/Seabrook: sold, for sale and months of supply by price band |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds genuine context beyond that: the data is verified month by month against MLS statistics, and the returned history is asymmetric by island (Kiawah and Seabrook reach back to 2021-01-01, others apparently do not). It does not discuss latency, caching, or refresh cadence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, but both are long run-ons built from colon-delimited clause stacks listing metrics. The island/time-range scoping is front-loaded, which helps, yet the metric inventory in sentence two reads as filler given an output schema already exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return fields, and it sensibly focuses on scope, provenance, and per-island time ranges. The one-parameter schema is fully documented. Minor gap: it never states what Johns Island actually returns, only that it lacks the Kiawah/Seabrook extras.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum is fully described, so baseline would be 3. The description goes further by explaining that the island choice materially changes the payload: Kiawah and Seabrook add multi-year history and extra metrics, while Johns Island does not. That is real selection-relevant meaning beyond the enum labels.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: 12 months of residential sales statistics for Kiawah, Seabrook or Johns Island, drawn from the MLS's own figures. It lacks an explicit verb (no 'get'/'return') and never contrasts itself with siblings like estimate_range or true_cost, so an agent must infer that this is a read of aggregated market metrics rather than a valuation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling to prefer for related questions (estimate_range, true_cost, get_neighborhood all sit in adjacent territory). The only implicit guidance is that the tool is island-scoped market data, which is not enough to route between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_neighborhoodsList an island's neighborhoodsBRead-onlyIdempotentInspect
Every neighborhood on Kiawah, Seabrook or Johns Island. Kiawah and Seabrook: every neighborhood and villa regime — type, area, regime manager, MLS sales since 2021 and the median price per square foot over the last 24 months where five or more sales allow. Facts about places only.
| Name | Required | Description | Default |
|---|---|---|---|
| island | Yes | kiawah = Kiawah Island; seabrook = Seabrook Island; johns-island = Johns Island (incl. Kiawah River) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | The island page |
| island | No | Island name |
| attribution | No | MLS attribution (Johns Island) |
| neighborhoods | No | Each neighborhood: name, slug, area, type, regime_manager, mls_sales_in_window, median_price_per_sqft_24_months, url |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's added value is its disclosure of data scope: MLS sales since 2021 and a median price/sqft computed only where five or more sales allow, and the 'facts about places only' framing that rules out subjective content. That is genuinely useful beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Scope is front-loaded in the first sentence, but the second sentence is a long, dense enumeration of return fields that partially duplicates the output schema. It is serviceable rather than tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return structure, and it is complete enough to call the tool: one required enum parameter, three valid islands, and the level of detail the agent should expect. It never says how Johns Island differs in content from the Kiawah/Seabrook branch, which is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single enum parameter's meaning (including the Johns Island/Kiawah River note) is fully documented in the schema. The description adds no format, syntax, or selection detail beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description make clear this is a full listing of neighborhoods for one of three named islands, with per-island content enumerated (type, area, regime manager, MLS history). It is distinguishable from the singular sibling get_neighborhood by scope, though that contrast is never stated in words.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives such as get_neighborhood for a single neighborhood or island_market for market-level data. The only implied usage is 'you want everything on an island,' which an agent must infer from 'Every neighborhood on...'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
placesWhere to eat, what to do, who to callARead-onlyIdempotentInspect
The island directory: 193 real places on Kiawah, Seabrook, Johns Island, Wadmalaw and the Charleston area — restaurants, coffee, groceries, golf, beaches and parks, charters, fishing, places to stay, vacation rentals, health care, pets, home services, home watch and the towns — each with what it is, its address, phone and website, from its own site. Listed, never ranked; no one pays to be here. Search by words, island or category.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Words to match in the name or what it does, e.g. "oysters", "kayak", "pharmacy" | |
| island | No | ||
| category | No | eat-drink = Eat & drink; coffee-treats = Coffee & treats; groceries-wine = Groceries, wine & spirits; shopping = Shopping; golf = Golf; beach-parks = Beaches & parks; on-the-water = On the water; fishing = Fishing; stay = Places to stay; vacation-rentals = Vacation rentals; health = Health care; pharmacy = Pharmacies; pets = Pets; banks-mail = Banks & mail; fitness-wellness = Fitness & wellness; activities = Things to do; home-services = Home services; home-watch = Home watch; insurance = Insurance; business-services = Marketing & business services; civic = Town & county |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | The directory |
| rule | No | Listed, never ranked |
| count | No | How many matched |
| places | No | Each place: name, what, category, island, area, address, phone, website, access, gate, source, checked, url |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds useful editorial context ('listed, never ranked; no one pays to be here' and data sourcing 'from its own site'), but says nothing about what happens with an empty query or how limit/default result sizing behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the directory's scope before the search mechanics, and the category enumeration is deferred to the schema rather than repeated. Some phrasing ('no one pays to be here') is marketing-tinged but does convey a useful non-commercial guarantee.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and all four filters are at least touched on. The only real gap is default/limit behavior for an unconstrained call, which an agent may need to call it efficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: query and category carry descriptions, island's enum is self-explaining, but limit has no description in either schema or description. The description links the params to search behavior ('Search by words, island or category') but adds no detail on limit defaults or maximum result counts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a curated directory of 193 places) and the retrieval mechanism ('Search by words, island or category'), plus the exact domains covered (Kiawah, Seabrook, Johns Island, Wadmalaw, Charleston). It is unmistakably distinct from siblings like fees, flood_zone, estimate_range and true_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the three search axes (words, island, category), which implies how to invoke it, but gives no explicit when-to-use/when-not-to-use guidance relative to alternatives such as happenings or island_market, which an agent could plausibly confuse for local listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_contactAsk Mike Olson to get in touchAInspect
Sends the person's question to Mike Olson, a licensed South Carolina real estate agent with eXp Realty, LLC. Only call this when the person asked you to. It never carries consent to calls or texts — Mike emails the person himself to confirm before anything else.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The person's own email — where Mike will write to confirm | ||
| island | No | ||
| question | Yes | What they want to know or do (buy, sell, a CMA, an MLS alert for a neighborhood …) | |
| first_name | Yes | ||
| neighborhood | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | What happens now |
| error | No | Why it wasn't saved, when it wasn't |
| status | No | received | not saved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false), and the description adds real behavioral context: the request goes to a third-party human, it never constitutes consent to calls/texts, and Mike emails to confirm first. It omits the non-idempotency that the annotation flags (repeated calls likely create duplicate requests).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, purpose first, then the permission gate, then the consent clarification. No filler; each sentence changes how an agent would behave.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the description covers the consent/permission flow an agent most needs. The only real gap is the semantics of the optional location parameters (island enum, neighborhood).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, so "email", "question", and "first_name" get description-level framing (where Mike writes to confirm; what they want to know) while "island" and "neighborhood" are left entirely to the schema. Adequate but it does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it sends the person's question to a named, credentialed human agent. That is clearly distinct from the informational siblings (estimate_range, flood_zone, island_market, etc.), though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Only call this when the person asked you to" is an explicit, permission-gated when-to-use rule with a clear when-not implication. It stops short of naming alternatives, but the constraint is unusually strong and specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
true_costWhat it costs to buy and ownBRead-onlyIdempotentInspect
The site's true-cost calculator: for a price on Kiawah, Seabrook or Johns Island, the buyer's closing costs, the first year of owning (property tax, association dues, base utilities), what comes later and the seller's side — each line from the fee ledger with how sure it is. An estimate from published fees, not a closing statement or tax advice.
| Name | Required | Description | Default |
|---|---|---|---|
| use | No | primary = the buyer's legal residence (4% assessment); second = second home or rental (6%) | |
| area | No | Johns Island only: unincorporated county, inside the City of Charleston, or Kiawah River | |
| club | No | Seabrook only: the Seabrook Island Club membership level | |
| kind | No | ||
| place | Yes | ||
| price | Yes | Purchase price in dollars | |
| financed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | The calculator link with these inputs |
| inputs | No | The inputs as understood |
| at_closing | No | Lines and total |
| coming_later | No | Lines |
| not_included | No | What the estimate leaves out |
| sellers_side | No | Lines |
| what_this_is | No | An estimate from published fees |
| first_year_of_owning | No | Lines and total |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: each line item comes "from the fee ledger with how sure it is" (per-line confidence), and the output is explicitly an estimate, not a closing statement or tax advice. It stops short of 5 because it says nothing about coverage limits of the fee ledger or how uncertainty is expressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, which is good, but the description is a single dense run-on that packs the cost breakdown, the ledger-confidence detail, and the disclaimer into one breathless sentence. No sentence is wasted, but the structure could be split for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and an output schema presumably covering the return shape, the description only needs to orient the agent on scope, and it does: it enumerates which cost lines are computed and characterizes the result as an estimate. The remaining gap is parameter-level guidance for the five enum inputs and the conditionality of area/club, which the description leaves entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 57%, and the description compensates for almost none of it — it names only price and place (the two required params) and says nothing about use, area, club, kind, or financed. The enum params carry their own schema text, but kind and financed are undocumented in both places, so the description fails to close the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ("true-cost calculator") and enumerates the cost categories it computes (buyer's closing costs, first year of ownership, later costs, seller's side), which is clear enough to distinguish it from generic siblings like fees. It never names a sibling or explicitly contrasts with estimate_range, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is for total cost-of-ownership questions about a specific priced property. The only near-guidance is the caveat that it is "an estimate from published fees, not a closing statement or tax advice," which bounds reliability but not tool selection — there is no instruction about when to prefer fees or estimate_range instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- First observed
estimate_range - First observed
fees - First observed
flood_zone - First observed
get_neighborhood - First observed
happenings - First observed
island_market - First observed
list_neighborhoods - First observed
places - First observed
request_contact - First observed
true_cost
Related MCP Connectors
Charleston County GIS — Charleston County, South Carolina open geospatial data (ArcGIS).
Zoning, homes per lot, short-term rentals, tax and flood for any property in Austin and Nashville.
312K+ FL commercial parcels, 6,400+ verified listings, AI visibility reports, x402 micropayments
Find licensed real estate agents, search MLS, route leads. Remote MCP for SC + GA brokerages.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables searching and querying Charleston County, South Carolina open geospatial data (parcels, addresses, zoning) via ArcGIS Feature Services.21 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to look up real estate agents, search MLS listings, submit buyer/seller leads, and access proprietary seller-intent signals in SC and GA.MIT
- FlicenseNot gradedqualityDmaintenanceLA County ADU buildability checks, zoning rules, permit trends, and cost estimates — free, no auth.-
- AlicenseNot gradedqualityDmaintenanceLive real estate market data for 895 US metros. Ask your AI assistant about home prices, rental yields, investment health scores, migration trends, and affordability. Free tier covers top 50 markets (no account needed). Premium tier unlocks all 895 markets, HUD Fair Market Rents, side-by-side market comparison, and filtered market search.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.