Korean Real Estate Transactions
Server Details
Korean apartment and housing sale/rent records (MOLIT) by natural-language address. No key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- goyo-studio/korean-real-estate-mcp
- GitHub Stars
- 0
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of misselection. The tool's purpose (querying Korean real-estate transaction records) is clearly stated and non-overlapping with anything else on the server.
A single tool uses a clear verb_noun snake_case pattern (get_korean_real_estate_transactions) with no competing conventions to conflict with it.
A single tool is borderline thin for a server, even one wrapping essentially one endpoint. It does absorb many query modes via parameters (type, tradeType, groupBy, area bands), which partially justifies the narrow surface.
Query coverage looks rich, but the surface is read-only and has notable gaps: no metadata/schema or region-lookup helper, so agents must guess locations and recover from 422 candidates client-side, and there is no way to fetch a specific record by ID or list supported hint vocabulary.
Available Tools
1 toolget_korean_real_estate_transactionsAInspect
Query official Korean real-estate transaction records (국토교통부 실거래가, MOLIT via data.go.kr) with a natural-language Korean address or apartment-complex name, e.g. '강남구 대치동 은마 아파트 매매'. Returns flat JSON: period statistics (avg/min/max price in KRW, or deposit/monthly-rent stats for rentals) plus individual transactions, newest first. For trend questions ('월별 추이', 'how did prices move'), pass groupBy=month to get stats_by_month[]; for a size condition ('전용 84', '국평'), pass an areaMin/areaMax band — both aggregate over the full matching set, unlike the row list which is capped at limit. Hint words inside q (아파트/오피스텔…, 매매/전세/월세) are auto-inferred as type/tradeType/rentSubtype; explicit fields always win. Ambiguous locations return HTTP 422 with candidates[] — pick one and retry. Unresolvable locations return 404. All inferences are disclosed in resolved_note; coverage gaps in missing_months. Terms (as-is, no warranty): https://realestate-api.goyostudio.io/terms — data may be corrected or cancelled after initial publication; not investment advice. PRICING: currently free within edge or app rate limits (50 requests / 10 seconds per IP). HTTP 429 with error RATE_LIMITED and a Retry-After header — wait that many seconds, then retry. x402-ready: a fixed micro-price per request (indicative $0.001–$0.01, USDC on Base) may be enabled later, after which unpaid requests receive HTTP 402 Payment Required per the x402 protocol (https://x402.org); agents with x402 support handle this automatically. Current pricing status: GET https://realestate-api.goyostudio.io/openapi.json → x-pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Natural-language Korean address and/or complex name. Max ~30 Korean characters (90 UTF-8 bytes), max 8 whitespace-separated tokens. Do not include period words ('최근 3개월' is ignored — use startDate/endDate). | |
| type | No | Property type. Default apartment unless inferred from q. rent is available only for apartment/officetel/rowhouse/detached; presale/land/commercial/industrial are sale-only. | |
| limit | No | Max transaction rows returned (default 100). Statistics always cover the full matching set regardless of limit. | |
| areaMax | No | Maximum EXCLUSIVE area (전용면적) in ㎡, inclusive. | |
| areaMin | No | Minimum EXCLUSIVE area (전용면적) in ㎡, inclusive. Not supply area (공급면적). A '84 type' apartment is usually 84.0-85.9㎡, so pin it with areaMin=84 & areaMax=86. | |
| endDate | No | YYYY-MM inclusive. Default: current month. | |
| groupBy | No | Set to 'month' for stats_by_month[] — per-month aggregates over the full matching set. Required for trend/추이 questions: the transaction rows are capped at limit, so a trend cannot be rebuilt from them. | |
| startDate | No | YYYY-MM inclusive. Default: 11 months before endDate (12-month window). Max range 24 months. | |
| tradeType | No | sale = 매매 (default), rent = 전월세 (jeonse + wolse combined unless rentSubtype filters). | |
| rentSubtype | No | Only with tradeType=rent. jeonse (전세) = deposit-only; wolse (월세) = has monthly rent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: it describes return ordering, aggregation semantics, inference disclosure via resolved_note, coverage gaps via missing_months, rate limits, HTTP 429 Retry-After behavior, and data correction caveats. This is far beyond what the schema alone provides.
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 description is front-loaded with purpose and return format, then moves through usage hints, errors, terms, and pricing. It is longer than typical because the API has many operational details, but it remains information-dense; the pricing and x402 paragraphs are somewhat verbose for a tool definition.
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?
There is no output schema, but the description explains the flat JSON return: period statistics, individual transactions, newest-first ordering, stats_by_month[] for trends, and metadata fields like resolved_note and missing_months. It also covers error behavior, rate limits, and pricing status, so an agent has enough context to call the tool correctly.
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%, so the baseline is 3, but the description adds meaningful cross-parameter semantics: hint words inside q are auto-inferred as type/tradeType/rentSubtype, explicit fields always win, and groupBy/area filters aggregate over the full matching set unlike the capped row list. Most individual parameter details remain in the schema, so this is strong added context rather than complete parameter documentation.
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 opens with a specific verb and resource: query official Korean real-estate transaction records from MOLIT/data.go.kr using a natural-language Korean address or apartment-complex name. It includes a concrete example and states the return shape, so the tool's purpose is unmistakable even without siblings.
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 explicitly says when to use key modes: pass groupBy=month for trend questions, pass areaMin/areaMax for size conditions, and rely on explicit fields over inferred hint words. It also tells the agent how to recover from ambiguous locations (HTTP 422 with candidates) and unresolvable locations (404).
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.
1 tool update
- First observed
get_korean_real_estate_transactions
Related MCP Connectors
Korean apartment sale transactions (MOLIT): price, area, floor, deal date, cancellations by district
Official Korean apartment sale prices (MOLIT). Clean JSON, data global models cannot know — paid pe…
Seoul apartment signals: 25 districts from official transactions, scans. Pay-per-call x402.
Korean business, bid and real-estate analytics, parcel, building register and simple-auth data
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides South Korean real estate transaction price lookup (sales and rent) for apartments, row houses, single-family homes, and officetels via MCP tools using public data from data.go.kr.83 npmMIT
- FlicenseNot gradedqualityFmaintenanceEnables natural language queries to retrieve Korean real estate transaction data (land, commercial, apartments) from the public API, returning structured tables and summary statistics.-
- AlicenseNot gradedqualityDmaintenanceQueries Korean apartment sale transaction data (RTMS) by region code and contract date. Optimized for token efficiency with compressed JSON and Korean field names.8 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables querying Korean apartment sales and rental transaction data from the public data portal through natural language, with tools for searching transactions and computing price statistics.3 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.