korea-realty
Server Details
Korean real estate: court auctions, 10M+ MOLIT records, subscription notice facts, loan/DSR rules
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- sallim-app/korea-realty
- GitHub Stars
- 0
- Server Listing
- korea-realty
TDQS
Scored across 52 tools
The tool descriptions are exceptionally detailed and explicitly delineate overlapping areas with 'this axis' cross-references, so most tools have clearly distinct roles. A few near-duplicate pairs (fetch vs realty_get_auction_case, search vs realty_search_auctions, realty_auction_alerts vs realty_search_auctions) require careful reading but are ultimately distinguishable.
Most tools follow a readable realty_<domain>_<action> snake_case pattern, but naming order is inconsistent: some lead with the action (realty_search_auctions), some with the domain (realty_auction_history), and a few are bare nouns (realty_presale, realty_policy_rules). Three tools (fetch, search, report_issue) break the prefix pattern entirely.
52 tools is a very large surface, well above the 25+ threshold, and although the real estate domain is broad, many tools could be consolidated (e.g., search variants, presale calculators, notice readers). The sheer number creates a heavy navigation burden for agents despite each tool having a specific niche.
The server covers court auctions, public auctions, presales, market prices, loans, taxes, policy rules, redevelopment, demographics, and supply pipelines, forming a remarkably complete Korean real estate advisory surface. Minor gaps exist (e.g., no standalone jeonse yield tool, no registration title lookup), but these are workable and do not create dead ends.
Available Tools
52 toolsfetch경매 사건 상세ARead-onlyIdempotentInspect
search가 돌려준 id로 경매 사건의 전체 내용을 가져온다.
id 형식은 "법원명|사건번호" (예: "서울동부지방법원|2025타경51727").
사건번호는 법원 간 중복되므로 법원명 없이 조회하면 후보 목록이 돌아올 수 있다.
rights(매각물건명세서 요약)가 있으면 법원 공시의 전달로만 인용하고, 없으면(rights_note
참조) 권리관계를 지어내지 말 것 — 권리분석 판단은 이 도구의 데이터 밖이다.
**이 축의 자리** — 사건 상세도 둘이고 입력과 응답 형태로 갈린다. 이 도구는 `search`가
준 `"법원명|사건번호"` 한 덩어리를 그대로 받아 **문서형 텍스트**를 돌려준다(ChatGPT
커넥터 규격). 사용자가 사건번호를 말로 불러줬거나, `rights`·`min_bid_source` 같은 필드를
**값으로** 다뤄야 하면 `realty_get_auction_case`(사건번호·법원명을 따로 받는 구조화 응답)를
써라. 유찰 이력·기일별 저감은 어느 쪽도 아니고 `realty_auction_history`다.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | search가 돌려준 id를 **그대로** 넣는다 — `법원명|사건번호` 형식이다 (예: '서울동부지방법원|2025타경51727'). 파이프 앞은 정식 법원명이고 지원은 '진주지원'처럼 지원명만 오는 행도 있다. 파이프 뒤는 `2026타경3571` 꼴 (연도 4자리 + '타경' + 일련번호, 일련번호는 3~6자리). 법원명 없이 사건번호만 넣으면 사건번호가 법원 간 유일하지 않아 후보 목록이 돌아온다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. Beyond that, the description adds substantial behavioral detail: it returns a document-style text rather than structured fields, may produce candidate lists when court name is omitted, and instructs the agent to treat rights data as a court citation only, not to invent relations. This goes well beyond default annotation semantics.
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 well-structured: a core opening sentence, then id format, then important behavioral caveats, then a disambiguation paragraph. Every chunk has a purpose. It is a bit longer than strictly necessary, and it repeats some id-format details already present in the schema, but the payout is rich guidance in return for the length.
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 single-parameter, read-only tool with no output schema, the description covers the input origin, id format, fallback behavior, the nature of the response (document-form text), and clear differentiation from the two nearby alternatives. This is enough for an agent to invoke the tool correctly and interpret its results in 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?
The only parameter, id, is already thoroughly described in the input schema with format, examples, and the no-court name caveat. Schema coverage is at 100%, so the description's mention of the same id format does not add new parameter meaning. It reinforces the correct usage but does not compensate for a coverage gap that does not exist.
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 clear statement: it fetches the full auction case content using the id returned by search. This verb+resource pairing is immediate and specific. It then explicitly contrasts this with realty_get_auction_case and realty_auction_history, making the tool's niche unmistakable.
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 gives explicit when-to-use guidance: this tool is for taking the exact search-returned id and getting document-like text. It names realty_get_auction_case for structured value handling and realty_auction_history for bid history, providing a clear decision rule among alternatives. The caveat about not fabricating rights relations also guides usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_area_price_bands지역 평형대별 시세 구간ARead-onlyIdempotentInspect
지역의 매매 시세를 평형대 4구간(소형/중소형/중형/대형, 전용면적 기준)으로 조회한다. "○○구에서 무슨 평수대가 얼마쯤 해?"류 질문용 — 특정 단지는 realty_search_complexes를 쓰라.
**이 축의 자리(시세 도구 3종 중)**: 지역의 가격 **수준** 비교는 이게 기본값이다.
이상치 필터(P75의 50% 미만 제외)가 적용돼 realty_region_price_stats의 미필터 평균과
값이 다르며, **수준이 갈리면 이쪽을 우선하라**. 월별 **추이**가 필요하면
region_price_stats, 단지가 특정되면 search_complexes.
구간 라벨의 평수는 **전용평**이다. 사용자의 분양평 감각으로는 소형<60㎡≈분양 24평 미만,
중소형 60~85㎡≈분양 24~34평, 중형 85~115㎡≈분양 34~47평, 대형 115㎡+≈분양 47평 이상.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | 시군구명 (예: 마포구). **법정동까지 넣어도 된다**(예: '마포구 아현동') — 구 하나로 뭉치면 신도심·구도심이 한 값이 된다 | |
| by_dong | No | 법정동 × 평형대 중앙값을 함께 낸다. '이 구에서 어디가 싼가'류 질문의 자리다 — 실측(마포구 6개월, 전용 60~84㎡): 서교동 6.8억 ~ 용강동 27.1억으로 한 구 안에서 4배 갈린다. 표본 3건 이상 칸만 나온다 | |
| period_months | No | 집계 기간(개월) (허용 범위 1~24) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety and idempotence. The description adds key behavioral context beyond that: the outlier filter (excluding values below P75's 50%), the resulting discrepancy with region_price_stats, and the area-unit conversion (전용평 vs 분양평). It stops short of explaining the exact return shape or median semantics, so it is strong but not perfect.
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 and each sentence earns its place: core behavior, use-case positioning, sibling alternatives, outlier caveat, and unit conversion are all compact and organized under clear headings. Although dense, the structure makes it easy to scan and every block addresses a distinct decision or knowledge need.
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 tool with no output schema and three parameters, the description covers the main scoping, alternatives, exception-handling rule, and the important user-facing unit conversion. The only clear gap is that the base result's exact value measure (whether median or other) is not spelled out for the non-by_dong call, though by_dong's schema mentions median. It is very close to complete but has this minor ambiguity.
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?
The input schema is already very descriptive for all parameters (region example, by_dong explanation, period range), so schema coverage is 100%. The description contributes the pyeong-band conversion table, but that relates more to result interpretation than to the actual parameter schema. It adds no new constraint or format guidance for the inputs, so the baseline of 3 is appropriate.
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 states the tool '조회한다' (retrieves) '지역의 매매 시세' split into four specific sizes by dedicated area. It also distinguishes the tool from realty_search_complexes immediately, making the purpose unmistakable and separable from 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 names the default use case (지역 가격 수준 비교), and gives clear exclusions: for monthly trends use region_price_stats, for specific complexes use search_complexes. It also adds the rule to prioritize this tool when price levels conflict with the unfiltered stats. This is exemplary routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_auction_alerts급매 경매 물건ARead-onlyIdempotentInspect
유찰이 누적돼 최저입찰가가 크게 떨어진 물건을 찾는다. "○○에서 유찰 많은 물건"은 sido/sigungu로 좁혀라.
유찰이 많다는 건 싸다는 뜻이기도 하지만 권리관계·물건 하자 등 팔리지 않는 이유가
있다는 뜻이기도 하다. 결과를 추천으로 제시하지 말고 확인이 필요한 후보로 제시하라.
**같은 축의 다른 문**: realty_search_auctions(min_fail_count)로도 유찰 물건을 거를 수
있다 — 조건 필터·목록이 목적이면 그쪽, 저감 큰 후보 발굴(극단 할인 컷 포함)이면 이쪽.
둘을 합쳐 세지 마라(같은 물건이 양쪽에 나온다).
| Name | Required | Description | Default |
|---|---|---|---|
| sido | No | 시도 (예: 세종, 경기도) ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라. | |
| limit | No | 반환 개수 (최대 50) (허용 범위 1~50) | |
| sigungu | No | 시군구 (예: 강남구, 수원시) | |
| usage_name | No | 물건 종류 — 원장 값 예: 아파트·오피스텔·다세대·연립주택·단독주택·다가구주택·근린시설·상가·대지·임야·전답. '빌라'는 표준 분류가 아니라 서버가 '다세대'로 매핑하고 그 사실을 응답에 공시한다. 비우면 전 종류 | |
| min_bid_count | No | 최소 유찰 횟수 (허용 범위 0~100) | |
| max_discount_pct | No | 감정가 대비 최대 할인율(%) — 80%+ 극단 할인은 지분매각·대지권 없음 등 특수물건이 대부분이라, 실수요 후보를 찾을 땐 79 이하로 걸러라 (허용 범위 0~100) | |
| min_discount_pct | No | 감정가 대비 최소 할인율(%) (허용 범위 0~100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description warns that many failed auctions may signal rights issues or defects, and instructs presenting output as candidates needing verification rather than recommendations. It also discloses cross-tool overlap ('same property appears on both sides'), adding behavioral context beyond the readOnly/idempotent annotations.
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 compact and front-loaded: the core purpose appears in the first sentence, with interpretation and sibling routing following in clearly separated sections. Every sentence earns its place, and the bolded alternative guidance is high-density rather than verbose.
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 discovery tool with no output schema, the description supplies purpose, usage boundaries, interpretation guidance, and an overlap warning. Combined with the rich parameter schema, nothing essential for selecting and invoking the tool correctly is missing.
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?
The input schema already provides 100% parameter coverage with detailed descriptions, including the ambiguous '광주' handling, usage_name mapping, and discount-rate guidance. The description adds general context about sido/sigungu narrowing and failed-auction/discount logic, but no per-parameter semantics beyond what the schema already provides.
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 opening sentence states a specific verb and resource: finding properties where accumulated failed bids have driven minimum bid prices down significantly. It also explicitly contrasts the tool with realty_search_auctions, so an agent can distinguish it from a sibling without needing to inspect 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?
The description explicitly names realty_search_auctions(min_fail_count) as the alternative and gives a decision rule: use that tool for condition-filtering/list purposes and this tool for deep-discount candidate discovery. It also instructs narrowing by sido/sigungu and warns not to merge counts because the same property can appear in both tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_auction_history경매 유찰 이력·가격 저감·사진ARead-onlyIdempotentInspect
경매 사건의 유찰 이력(기일별 최저가 저감 시계열)·가격 변동 이벤트·물건 사진 URL을 조회한다. "몇 번 유찰됐어? 얼마나 떨어진 거야? 사진 있어?"류 질문의 담당 도구. 사진은 법원 원천에서 기일 후 소멸해 수집 시점 보존본만 존재한다(국내 공개 API에 드문 축).
court_schedule에서 result='유찰'인 행이 유찰 이력, min_bid_10k의 저감이 가격 흐름이다.
result가 null인 행은 미래 기일이거나 미해독 법원 코드(result_code 원문 병기)다 —
의미를 지어내지 말고 그대로 전하라. **최저가(min_bid_10k)가 없는 행에는 `kind_note`가
붙는다 — 그 행은 입찰 기일이 아니다**(원천 전수에서 최저가·유찰 표기는 kind_code=01에만
붙는다). fail_count가 기일표의 유찰 행 수와 다르면 `fail_count_note`가 그 이유를 댄다
(출처가 목록 원천 vs 기일표로 갈린다) — 둘을 합쳐 세지 마라. tracking·price_events는 2026-07-23 이후 일일
스냅샷 비교분이라 비어 있을 수 있다(비어 있음 ≠ 변동 없음, court_schedule이 정본).
⚠️ court_schedule이 빈 물건(기일표 미수집)의 `current_min_bid_10k`는 건별
`min_bid_source`를 봐야 한다 — item_list면 낡았을 수 있어 min_bid_note가 함께 온다.
그 경우 현재 최저가를 단정하지 말고 note를 사용자에게 전하라(목록·상세와 같은 경고).
| Name | Required | Description | Default |
|---|---|---|---|
| case_no | Yes | 사건번호 — `2026타경3571` 꼴이다(연도 4자리 + '타경' + 일련번호 3~6자리). 원장 전수가 '타경' 접두이고 '2024타경101026'처럼 6자리도 있다. '2026-3571'·'3571'처럼 접두 없이 넣지 마라 | |
| court_name | No | 법원명 — '서울동부지방법원'·'인천지방법원'처럼 정식명으로 넣는다('진주지원'처럼 지원명만인 행도 있다). 사건번호는 법원 간 유일하지 않아(전국 평균 2.8개 법원에서 중복) 생략하면 후보 목록이 돌아온다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description provides substantial behavioral caveats: preservation limits of photos, null-row semantics, `fail_count` discrepancy rules, possible empty `tracking`/`price_events`, and the `min_bid_source` warning. These are exactly the kind of quirks an agent must know before interpreting results. No contradiction with the readOnly/intent annotations.
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 dense but every paragraph conveys a necessary behavioral or interpretive constraint. It front-loads the main purpose and then adds important caveats in an organized way. It is long, yet the information density justifies almost every sentence.
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?
Given that there is no output schema, this description does an unusually thorough job of making interpretation independent of hidden knowledge. It explains how to identify 유찰 records, how to handle null rows, how to treat disagreement with `fail_count`, and how to interpret `current_min_bid_10k` when `court_schedule` is empty. An agent has enough context to avoid a whole class of errors.
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 tool description itself does not add new meaning to `case_no` or `court_name` beyond what the schema already provides. Per the guidance, a baseline of 3 applies when parameters are fully documented in an external 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?
Description states a specific verb+resource 관계: '유찰 이력(기일별 최저가 저감 시계열)·가격 변동 이벤트·물건 사진 URL을 조회한다' and maps it to a concrete user question class. The scope is clear and easily understood. It doesn't explicitly name sibling tools like realty_get_auction_case or realty_search_auctions, so no direct sibling differentiation.
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 gives clear usage context by showing example questions and calling it the '담당 도구' for those questions, so an agent can infer when to call it. It does not explicitly state when to prefer a sibling tool or when not to use this one, so it falls short of the 5-level criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_auction_sale_rate낙찰가율 통계ARead-onlyIdempotentInspect
"이 지역 이 물건은 보통 감정가의 몇 %에 낙찰되나"를 실제 매각결과로 답한다.
입찰가를 정할 때 쓰는 핵심 지표다. `by_fail_count`에 유찰 횟수별 분포가 들어 있어
"2회 유찰된 물건은 보통 몇 %에 낙찰되는가"를 바로 읽을 수 있다.
낙찰가율 = 낙찰가 / 감정가 × 100. 100%를 넘으면 감정가보다 비싸게 팔린 것이다.
표본의 집계 기간은 응답의 `sample_period`(매각기일 min~max)에 있다 — "요즘"류
질문에는 이 범위를 함께 전하라. 기간을 좁히는 파라미터는 백엔드가 지원하지 않는다
(요청해도 조용히 무시됨을 실측했다 — 그래서 노출하지 않는다).
usage_name에 '빌라'를 넣으면 표준 분류인 '다세대'로 자동 매핑해 집계한다(원문
'빌라'는 소수 비표준 표기 행만 잡혀 표본이 조용히 왜곡된다 — 응답에 매핑 사실이
공시된다). 연립주택 통계는 usage_name='연립주택'으로 따로 물어라.
**평형을 섞지 마라(2026-08-16 축 신설)**: 응답의 `by_area_band`가 전용면적대별
낙찰가율이다. 실측(사건 중복 제거): 아파트 전국 전체 79.2%인데 전용 59㎡ 이하 75.7%,
60~84㎡ 82.2%, 서울은 88.9% vs 97.3%다. 대상 물건의 평형을 알면 `area_band`로 좁히고,
지역 요약 하나로 입찰가를 정하지 마라. '면적 미상' 밴드는 공고에 면적 표기가 없는
사건이지 0이 아니다.
**이 축의 자리(경매 가격판단 3종 중)**: 이 %는 **감정가 대비** 통계다. 특정 물건이
실거래 **시세** 대비 싼지는 realty_compare_auction_vs_market이 자동 계산한다 —
분모가 다르니 두 %를 한 문장에 섞지 마라(감정가는 시세와 다른 시점·기준의 값이다).
| Name | Required | Description | Default |
|---|---|---|---|
| sido | No | 시도 — '서울'처럼 줄여 써도 되고 '서울특별시'도 된다(서버가 정식명으로 편다). 원장 표기는 서울특별시·경기도·부산광역시·세종특별자치시·강원특별자치도 같은 정식명이다. ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라. | |
| sigungu | No | 시군구 — 원장 표기 그대로 넣는다(예: '강남구', '평택시', '기장군'). 특례시·일반구는 '수원시 권선구'처럼 두 토막이다. 시도 이름을 여기 붙이지 마라('서울 강남구'는 안 맞는다) — 시도는 sido로 준다 | |
| area_band | No | 전용면적대로 좁힌다. 낙찰가율은 평형에 따라 갈린다 — 대상 물건의 평형을 알면 반드시 넣어라(응답의 by_area_band로도 확인된다) | |
| usage_name | No | 물건 종류 — 원장 값 예: 아파트·오피스텔·다세대·연립주택·단독주택·다가구주택·근린시설·상가·대지·임야·전답. '빌라'는 표준 분류가 아니라 서버가 '다세대'로 매핑하고 그 사실을 응답에 공시한다. 비우면 전 종류 | 아파트 |
| bid_count_max | No | 유찰 횟수 **상한**(이하). 예: 2를 주면 유찰 0·1·2회 물건의 매각결과만 집계한다. 유찰이 쌓일수록 낙찰가율이 내려가므로 대상 물건의 유찰 횟수에 맞춰 좁혀라. 비우면 유찰 횟수 무관 전체(응답의 by_fail_count에 횟수별 분포가 그대로 온다) (허용 범위 0~100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent, and the description adds substantial behavioral context: the sample_period field, the fact that unsupported period parameters are silently ignored, the automatic '빌라'→'다세대' mapping with a warning about sample distortion, and the clarification that '면적 미상' means no area listed, not zero. It also clearly explains the denominator (감정가 vs 시세) to prevent misleading answers.
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 the core purpose and formula, then organized into bold-headed sections for caveats and cross-references. It is longer than strictly necessary—especially the empirical data in the area_band section—but each section serves a distinct purpose and the structure makes it scannable.
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 no output schema, the description compensates by naming and explaining the key response fields: sample_period, by_fail_count, and by_area_band. It also covers edge cases (ambiguous sido, '빌라' mapping, unknown area band) and directs the agent to the correct sibling tool for market-price comparison, making the definition effectively complete for a statistics 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 coverage is 100%, so the baseline is 3; however, the description adds meaning well beyond the schema. It explains that bid_count_max is an upper bound and that the response's by_fail_count gives the distribution by failure count, advises when to set area_band with concrete empirical examples, and details the usage_name mapping behavior. This materially improves an agent's ability to choose parameter values correctly.
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: answers what percentage of the appraisal value a property is typically auctioned at, based on actual sale results. The description explicitly distinguishes this from realty_compare_auction_vs_market, which uses market price as the denominator, so an agent can clearly identify the tool's niche.
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?
Provides explicit when-to-use context: it is the key metric for setting a bid price, and the description advises using area_band when the property's size is known, bid_count_max according to the number of failed auctions, and usage_name='연립주택' for rowhouse statistics. It also explicitly routes market-price comparison to realty_compare_auction_vs_market and warns that period-narrowing parameters are silently ignored.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_capital_gains_tax양도세 계산 — 선언된 양도·취득·보유에 세율표 적용, 합산/연도분산/차손통산 비교ARead-onlyIdempotentInspect
선언된 양도가·취득가·필요경비·보유기간에 양도소득세 세율표를 결정론으로 적용한다 — 기본·단기·분양권 세율, 장특공제 표1, 기본공제, 다주택 중과(선언), 지방소득세 10%. 두 번째 자산을 주면 같은 해 합산 vs 연도분산 vs 차손통산을 비교해 어느 쪽이 유리한지 산출한다. "지금 팔면 양도세 얼마?"·"두 채를 올해 같이 팔까 나눠 팔까?"의 자리다.
경계를 지켜라: ① 입력 전부 **선언**이다 — 보유기간 기산·주택 수·조정대상지역 해당은
사실판단이라 서버가 판정하지 않는다. ② **1세대1주택 비과세·12억 초과 고가주택 안분·
감면 특례는 계산하지 않는다**(not_curated) — 이 결과는 양도 전액이 과세된다는 전제다.
**그렇다고 사용자를 밖으로 내보내지 마라 — 계산기가 없을 뿐 갈림길 지도는 우리에게
있다**: `realty_policy_rules(topic='one_home_exemption_map')`이 5관문(세대·1주택·
보유2년·조정지역 거주2년·12억)과 5경로(일시적2주택·상속·합가·부득이한 사유·상생임대)를
확인 체크리스트와 함께 준다. 비과세 가능성이 보이면 **거기부터** 가고, 그 관문을 다 훑고도
사실판단이 남을 때 비로소 홈택스 모의계산·세무사를 안내하라. ③ 세율표·필요경비 분류·중과
경과조치의 원문·근거 조문은 realty_policy_rules(topic=capital_gains_tax)가 진실원이고,
조정대상지역 지정 현황은 topic=regulated_area다.
응답의 traps·pending_legislation·disclaimer를 함께 전하라.
| Name | Required | Description | Default |
|---|---|---|---|
| share_pct | No | 본인 지분율(%, 공동명의면 예: 50). 양도세는 인별 과세라 본인 지분만 계산하고 기본공제 250만원도 각자 받는다 — 배우자 몫은 배우자 지분으로 따로 호출하라. 두 자산 모두에 같은 지분을 적용한다 (허용 범위 0 초과~100) | |
| asset_type | No | 자산 종류 — 단기세율·장특공제가 갈린다. 분양권은 보유 2년이 넘어도 60%다 | 주택 |
| holding_years | Yes | 보유기간(년, 소수 허용 — 예: 1.5). 취득일~양도일이며 상속·증여 기산 특례는 사실판단이라 호출자가 확정해 선언한다 (허용 범위 0~100) | |
| transfer_year | Yes | 양도(예정) 연도. 2027 이후는 계류 중인 세제개편안이 결과를 뒤집을 수 있어 응답에 실토가 붙는다. 2025 이전 과거 양도는 당시 규칙(중과 유예 등)이라 다루지 않는다 (허용 범위 2026~2035) | |
| asset2_asset_type | No | 두 번째 자산의 종류 | 주택 |
| transfer_price_10k | Yes | 양도가액(만원, 예: 90000=9억). 예정이면 예상 매도가를 선언 | |
| asset2_expenses_10k | No | 두 번째 자산의 필요경비(만원) | |
| asset2_holding_years | No | 두 번째 자산의 보유기간(년) — **transfer_year 기준**이다. 연도분산 시나리오는 이 자산을 다음 해에 파는 가정이라 서버가 보유기간을 +1년으로 다시 계산한다(응답 scenarios.split_years.asset2_recomputed에 실토) (허용 범위 0~100) | |
| multi_home_surcharge | No | 다주택 중과 **선언** — 양도 시점에 그 주택이 조정대상지역 안이고(현재 지정 현황은 topic=regulated_area) 세대 주택 수가 2/3+인 경우. 주택 수 판정(분양권·입주권 가산, 지방 저가주택 제외)은 사실판단이라 서버가 하지 않는다 | 없음 |
| acquisition_price_10k | Yes | 취득가액(만원). 증여받은 자산은 이월과세(10년)로 증여자 원취득가가 될 수 있다 — 응답 traps 확인 | |
| necessary_expenses_10k | No | 필요경비 합계(만원) — 취득·양도 부대비용과 자본적 지출만. 도배·싱크대 같은 수익적 지출은 불인정이다(경계·증빙 요건은 topic=capital_gains_tax 원문) | |
| asset2_transfer_price_10k | No | 두 번째 자산의 양도가액(만원) — 주면 '올해 같이 팔기 vs 내년으로 나누기' 시나리오를 비교한다. asset2_acquisition_price_10k·asset2_holding_years와 함께 줘야 한다 | |
| asset2_multi_home_surcharge | No | 두 번째 자산의 중과 선언 — 첫 자산 매도 후 주택 수가 줄어 지위가 달라질 수 있다. 시나리오별 지위 변화도 선언 그대로 쓴다(서버는 판정하지 않는다) | 없음 |
| asset2_acquisition_price_10k | No | 두 번째 자산의 취득가액(만원) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnly, idempotent, non-destructive) are rich, because the description builds further: the '모든 입력은 선언' oversight rule where the server Judgements facts; the stated assumption that 양도 전액이 과세; that a second asset triggers re-computation of holding years (+1) for split-year scenario disclosed in scenarios.split_years.asset2_recomputed; that pre-2025 transfers and post-2026 pending legislation cause uncertainty (traps/changements) plus mandate to pass via traps·pending_legislation·disclaimer. Beyond the 2026–2026 support range is arrayed. No contradiction with annotations (pure computes/read-only).
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?
Long density is use-safe: front-loaded purpose then the key boundary caveat (not_curated, plained a decisive fork map realty_policy_rules) before any secondary guidance. The three paragraph sections (what it does / boundaries+routing / source-of-truth+delivery mandate) each earn their place; zero filler. For a 14-param tax tool with no output schema, this length is necessary and well-structured overall.
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 complexity+no output schema, the description covers the computation breadth, the declared-input boundary, exclusions, the routing to topic siblings and third-party guidance, and names required response fields (traps, pending_legislation, disclaimer, split.asset2_recomputed). The only gap: the presence of outlined singled-asset return value (the computed tax amount seems implied by '산출한다' but not inspi), so an agent's reply is concise — minor given the amount of guidance otherwise holds.
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 highly detailed per-parameter docs (share_pct при-person, holding_years, fact declaration, asset2_holding_years recomputation, multi_home_surcharge declaration semantics). The description contributes the two-asset conditional behavioral framing (correctly: '두 번째 자산을 주면...') and the mental model of '입력은 모두 declaration', but does not add new individual-parameter meaning beyond what the schema's rich property descriptions already provide. Baseline 3 is correct when the schema carries the burden.
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+resource: applies 양도소득세 세율표 deterministically to declared transfer/acquisition/cost/holding inputs, and with a second asset computes '같은 해 합산 vs 연도분산 vs 차손통산' comparisons. It explicitly contrasts itself with realty_policy_rules and orients the agent with canonical questions ('지금 팔면 양도세 얼마?', '두 채를 올해 같이 팔까 나눠 팔까?'). This distinguishes it from all 56 siblings without needing to open schemas.
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?
Automatically: when to use (selling decision, multi-asset compare), when NOT to use (1세대1주택 exception, 고가주택 12억 안분, 감면 특례 — explicitly not_curated), and then explicit alternatives: realty_policy_rules(topic='one_home_exemption_map') with the 5-gate/5-path, realty_policy_rules(topic=capital_gains_tax) for the source, topic=regulated_area for zone map. It even prescribes the route to be followed ('everything from exemption map first, only if factual remains go to 홈택스/세무사'). Beyond explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_compare_auction_vs_market경매가 vs 실거래 시세 비교ARead-onlyIdempotentInspect
경매 물건의 최저입찰가를 같은 단지 실거래 시세와 대조해 할인율·표면수익률을 낸다. 기본은 오늘 이후 기일 물건만이다(지난 기일이 섞여 나오던 결함 수리, 2026-08-08).
주소·단지명 정규화 정확매칭으로 붙이며, 감정가가 기준선의 50~150% 범위인 건만 비교한다
(지분경매·특수물건을 배제하기 위함). 결과의 `signal`은 주의/관심/보통/낮음/판정보류다.
**시세 기준선은 같은 단지의 같은 면적대(±10%) 실거래 평균이다**(2026-08-16 수리 — 종전엔
단지 전 평형 혼합 평균이라 대형·소형이 섞인 단지에서 할인율이 통째로 어긋났다).
면적을 맞추지 못하면 `discount_vs_market_pct`는 **null**이고 signal은 '판정보류'다 —
그 자리를 `discount_vs_all_types_pct`(혼합평균 대비)로 대신 채워 말하지 마라.
⚠️ 유찰 물건은 `auction.min_bid_source`를 확인하라 — item_list면 최저가가 낡았을 수
있고(`min_bid_note` 동봉) 그 최저가로 계산된 할인율·수익률도 함께 틀어진다.
이 도구는 다른 도구보다 느리다(출처 조회 포함 2~4초).
**이 축의 자리(경매 가격판단 3종 중)**: "이 물건 싸?"는 이게 1차다(시세 자동 조인).
입찰가 책정은 realty_auction_sale_rate(감정가 대비 실제 낙찰가율)와 함께 쓰되,
이 도구의 할인율(시세 대비)과 낙찰가율(감정가 대비)은 **분모가 달라 섞으면 안 된다**.
기준 시세를 손으로 잡을 땐 realty_area_price_bands(수준)/region_price_stats(추이).
| Name | Required | Description | Default |
|---|---|---|---|
| sido | No | 시도 — '서울'처럼 줄여 써도 되고 '서울특별시'도 된다(서버가 정식명으로 편다). 원장 표기는 서울특별시·경기도·부산광역시·세종특별자치시·강원특별자치도 같은 정식명이다. ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라. | |
| limit | No | 비교할 물건 수 (최대 50) (허용 범위 1~50) | |
| case_no | No | 특정 사건 하나만 비교할 때 — `2026타경3571` 꼴(연도 4자리 + '타경' + 일련번호). 주면 지역 조건 대신 이 사건만 보고, 기일 제한도 걸지 않는다. 사건번호는 법원 간 중복되니 court_name을 반드시 함께 주라 | |
| sigungu | No | 시군구 — 원장 표기 그대로 넣는다(예: '강남구', '평택시', '기장군'). 특례시·일반구는 '수원시 권선구'처럼 두 토막이다. 시도 이름을 여기 붙이지 마라('서울 강남구'는 안 맞는다) — 시도는 sido로 준다 | |
| court_name | No | 법원명 — case_no와 함께 쓴다. 사건번호는 법원 간 유일하지 않아(평균 2.8배 중복) 이걸 빼면 다른 법원 물건이 섞이고 최저가 출처도 확정되지 않는다 | |
| usage_name | No | 물건 종류 — 이 도구는 같은 단지 실거래와 붙이므로 '아파트'가 기본이다. 오피스텔·다세대·연립주택도 되지만 단지 매칭률이 떨어진다. 원장 값 예: 아파트·오피스텔·다세대·연립주택·단독주택·근린시설·상가 | 아파트 |
| include_past | No | 지난 기일 물건 포함 여부 — 기본은 오늘 이후 기일만(입찰 가능 후보). case_no 특정 조회는 이 값과 무관하게 기일 제한이 없다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: dated bug fixes (2026-08-08, 2026-08-16), the 50-150% appraised-value filter to exclude share/special properties, the null discount_vs_market_pct behavior with an explicit 'don't substitute discount_vs_all_types_pct' instruction, the 유찰 stale-min-bid caveat via min_bid_source/min_bid_note, and the 2-4s latency warning. No contradiction with annotations.
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?
Front-loaded with the core purpose, then logically progresses through defaults, matching algorithm, null behavior, caveats, performance, and sibling positioning. Every section earns its place given the tool's complexity; only the two dated bug-fix notes are slightly expendable, which keeps it just below a perfect score.
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 no output schema, the description fully explains the signal vocabulary (주의/관심/보통/낮음/판정보류), the null-vs-fallback output fields, and the min_bid_source/min_bid_note interpretation. A 7-param tool with no required params and subtle algorithmic traps is completely specified for correct invocation and result interpretation.
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 detailed per-parameter descriptions, so the baseline is 3. The description adds consequential context above that: usage_name defaults to '아파트' because same-complex matching degrades for other types, and include_past is tied to the future-dates-only default. The schema still does most of the heavy lifting, hence 4 rather than 5.
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: '경매 물건의 최저입찰가를 같은 단지 실거래 시세와 대조해 할인율·표면수익률을 낸다' — compares auction minimum bid against same-complex market transactions to produce discount rate and surface yield. Distinguishes from siblings explicitly: realty_auction_sale_rate (감정가 대비) is called out as having a different denominator, and realty_area_price_bands/region_price_stats are identified as the manual-baseline alternatives.
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?
Explicitly names this tool as the first-line answer to '이 물건 싸?' with automatic market join, and says when to combine it with realty_auction_sale_rate for bid pricing. It warns against mixing denominators (시세 대비 vs 감정가 대비) and routes manual-baseline use to realty_area_price_bands (수준) and region_price_stats (추이). The case_no/court_name bypass behavior is also stated clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_compare_regions[유료] 지역 비교ARead-onlyIdempotentInspect
[유료] 여러 지역의 매매·전세 시세와 추이를 나란히 비교한다. 갈아타기·투자처 비교용.
"어디가 제일 ○○해?"류 순위·탐색 질문은 무료 realty_region_rankings로 먼저 좁혀라 —
이 도구는 비교 대상이 정해졌을 때 쓴다.
⚠️ 지역별 `warning_baseline`·`warning_dispersion`을 avg_price보다 먼저 읽어라 —
이 소스는 이상치 미필터·단지급 혼합이라 avg_price를 그대로 "그 지역 시세"로 인용하면
특정 단지와의 비교 결론이 뒤집힌다(realty_region_price_stats와 같은 공시다).
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | 추이 개월 수 (허용 범위 1~60) | |
| regions | Yes | 비교할 시군구 2개 이상 — 배열(['강남구','서초구']) 또는 쉼표 문자열('강남구,서초구') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, so the bar is lower — but the description adds genuinely non-schema-discoverable behavior: the tool is paid, the source has unfiltered outliers and complex-level mixed data, and avg_price must not be cited directly (warning_baseline/warning_dispersion should be read first). This is the kind of data-quality disclosure that prevents an agent from drawing reversed conclusions.
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 structure is front-loaded: purpose first, then when-not/when-to, then the critical warning. Every section earns its place; only slight density exists in the warning paragraph, which elaborates the 'conclusion can flip' scenario with an example. Slightly wordy but well-organized and non-redundant.
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 2 parameters fully documented in the schema and no output schema, the description compensates by naming the key return fields (avg_price, warning_baseline, warning_dispersion) and their priority, along with the paid status and the decision boundary against rankings. Nothing an agent needs to invoke it correctly and interpret its core warning is missing.
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%: regions (2+ targets, array or comma-string) and months (1–60, default 12) are fully documented in the schema. The description adds no new parameter-level syntax or constraints beyond the schema; the multi-region implication ('여러 지역') restates what the schema already requires. Baseline 3 is appropriate.
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 first sentence states a specific verb+resource: comparing 매매·전세 시세와 추이 for multiple regions side by side. It explicitly differentiates itself from realty_region_rankings (rank/exploration questions) and notes the same data notice as realty_region_price_stats, so an agent can pick this tool apart from 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?
The description explicitly says when NOT to use it ('어디가 제일 ○○해?' exploratory questions should go to 무료 realty_region_rankings first) and when to use it (when comparison targets are already decided). This is a clear when/when-not rule with the alternative named, requiring zero inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_complex_pyeong_price단지 평형별 매매 실거래 내역ARead-onlyIdempotentInspect
특정 단지·특정 평형의 최근 6개월 매매 실거래를 건별(계약일·층·가격)로 조회한다. 평형별 시세 요약만 필요하면 realty_search_complexes의 prices_by_area로 충분하다.
응답에는 **층 밴드별 시세 집계 `price_by_floor_band`**(저층~초고층 밴드별 평균가·건수·
최저 밴드 대비 프리미엄 %)가 함께 온다 — "저층 사면 손해야?", "고층 프리미엄 얼마야?"류
**층별 시세 질문은 이 도구가 담당**이다(층 밴드 축은 다른 도구에 없다).
transactions는 **계약일 내림차순**이고, average_price·median_price는 그 정렬 기준
최근 5건(summary_basis에 그 5건을 그대로 싣는다)이다. 이상 거래는 지우지 않고
`outlier=true`로 표시만 하며(판정 근거는 outliers.method), 층 밴드에는 이상치 제외 값을
`*_ex_outliers`로 병기한다 — **밴드 프리미엄이 몇 건의 산물인지 확인하고 말하라.**
**이름이 더 긴 이웃 단지는 분리해서 뺀다**(0.58.0) — 백엔드가 단지를 이름 부분일치로
찾아 '○○센트레빌' 조회에 '○○센트레빌Ⅱ'가 섞여 들던 자리다. 무엇을 뺐는지·못 가른
면적이 무엇인지는 `meta.complex_isolation`에 그대로 실린다. **못 가른 것은 빼지 않고
못 갈랐다고 적는다** — 그 평형 수치는 단정하지 말고 그 사실을 함께 전하라.
**면적은 사용자가 말한 단위 그대로 넣어라 — 환산은 서버가 한다**(2026-08-22 제보:
"잠실엘스 34평형=전용 84㎡" 질문에서 84가 pyeong_exclusive로 갔다):
- ㎡로 말했으면 → area_m2_exclusive(전용 84㎡ → 84) / area_m2_supply(공급 112.8㎡ → 112.8)
- 평으로 말했으면 → pyeong_supply(분양 "34평") / pyeong_exclusive(전용 실평수 25.4평)
네 개 중 **하나는 필수**다. ㎡ 값을 평 인자에 넣으면 조용히 환산하지 않고 사유와 두
방향 출구를 값으로 적어 거절한다 — 조용한 환산은 사용자의 말을 바꿔치기하는 것이다.
이 도구는 매매 전용이다 — 전월세는 realty_complex_rent_by_pyeong을 쓴다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 개별 거래 내역 수 (허용 범위 1~50) | |
| region | No | 동명 단지 구분용 시군구명 (예: 마포구) | |
| complex_name | Yes | 단지명 (예: 마포래미안푸르지오2단지) | |
| pyeong_supply | No | 분양평수(공급면적, **평**) — 사용자가 말하는 '34평'이 보통 이것이다. **㎡로 말했으면 여기가 아니라 area_m2_supply를 쓰라** (허용 범위 0 초과~400) | |
| area_m2_supply | No | 공급(분양)면적을 **㎡ 그대로** 받는다(예: 112.8). pyeong_supply와 동시에 주면 거절한다 (허용 범위 0 초과~800) | |
| pyeong_exclusive | No | 전용면적 기준 **실평수(평)** — ㎡가 아니다. 전용 84㎡면 25.4를 넣는다. **사용자가 ㎡로 말했으면 area_m2_exclusive를 쓰라** — ㎡ 값을 여기 넣으면 서버가 조용히 환산하지 않고 사유를 대고 거절한다(1평=3.3058㎡) (허용 범위 0 초과~400) | |
| quoted_price_10k | No | 사용자가 **들은 가격**(호가·중개사 제시가·매물 가격, 만원). 주면 실거래 분포와 대조해 `quote_check`로 돌려준다. 이 서버는 **호가 데이터가 없다** — 실거래(MOLIT)뿐이라 '호가가 비싸다/싸다'를 판정하는 게 아니라 **실거래 어디쯤인지 위치만** 알려준다. 사용자가 가격을 말했는데 이 인자를 안 주면 모델이 그 값을 검증 없이 전제로 삼게 된다 | |
| area_m2_exclusive | No | 전용면적을 **㎡ 그대로** 받는다(예: 84, 59, 114.98). 사용자가 '전용 84㎡'라고 말했으면 환산하지 말고 84를 여기 넣어라 — 서버가 평으로 환산하고 그 사실을 응답에 적는다. pyeong_exclusive와 동시에 주면 거절한다 (허용 범위 0 초과~500) | |
| quoted_prices_10k | No | 사용자가 **매물 목록에서 복사·다운로드해 온 호가 여러 개**(만원 배열). 값이 2개 이상이면 단일 대조 대신 **호가 분포 ↔ 실거래 분포**를 비교한다(중위 대 중위, 두 구간이 겹치는지). 호가는 사용자가 가져온 것이라 서버는 **출처·수집시점·중복 매물 여부를 모른다** — 그 한계도 함께 응답에 싣는다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true and destructiveHint=false already in annotations, the description still adds significant behavioral context beyond them: transactions are sorted by contract date descending, average/median are based on the most recent 5 records, outliers are not deleted but marked with outlier=true, and floor bands report both raw and *ex_outliers values. It also discloses the complex-name partial-match isolation behavior (0.58.0) and the refusal-with-reason rejection of silently converting user-given units. No contradiction with annotations exists.
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 long but front-loaded: the primary purpose is stated in the first sentence, and each following paragraph delivers a distinct behavioral contract (sorting, outliers, isolation, units, rent routing). A few maintenance details such as version '0.58.0' and the dated bug report are near-noise for an agent, but the density per sentence is high and no paragraph is filler.
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, so the description must carry the full burden of return semantics — it does, naming price_by_floor_band, meta.complex_isolation, outliers.method, summary_result, *_ex_outlier fields, and quote_check. It also explains edge behavior (unseparated equal-myeong is kept but reported, rejected input returns the reason plus two exit doors). For a 9-parameter domain tool with a subtle unit-conversion pitfall, an agent has what it needs to call and interpret 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 each parameter is already documented individually. The description adds semantic relationships the schema does not spell out: the four area parameters are mutually coordinated with '네 개 중 하나는 필수' and the rule '면적은 사용자가 말한 단위 그대로 넣어라 — 환산은 서버가 한다', including the concrete failing example of putting 84 in pyeong_exclusive. This materially clarifies parameter interplay and prevents a known mis-call, which is beyond the per-parameter schema coverage.
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 opening sentence names a specific verb + resource + scope: '특정 단지·특정 평형의 최근 6개월 매매 실거래를 건별(계약일·층·가격)로 조회한다'. It is further differentiated from its siblings by explicitly stating what it is not: summary-only pricing goes to realty_search_complexes prices_by_area, and rental questions go to realty_complex_rent_by_pyeong. An agent can tell this tool apart 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?
The description gives explicit when-to-use and when-not-to-use guidance with named alternatives: use realty_complex_rent_by_pyeong for 전월세, and use realty_search_complexes' prices_by_area when only 평형별 시세 요약 is needed. It also assigns floor-band price questions ('저층 사면 손해야?', '고층 프리미엄 얼마야?') to this tool because 그 층 밴드 축은 다른 도구에 없다, leaving no ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_complex_rent_by_pyeong단지 평형별 전월세 시세ARead-onlyIdempotentInspect
단지의 평형별 전세 보증금·월세 중앙값을 조회한다. 전세가율(전세÷매매) 계산의 전세 축이다.
complex_key·complex_name 중 하나는 필수. 부분일치는 동명 단지가 섞일 수 있으니
가능하면 realty_search_complexes로 complex_key를 먼저 특정하라.
행 키 supply_pyeong은 **분양평**(전용㎡ ÷ 3.305 ÷ 0.745 반올림) 기준이다.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | 동명 단지를 가르는 지역 — 시군구나 **동**까지(예: '강동구', '방화동'). complex_ambiguous가 돌아오면 이 인자로 좁혀 다시 부르라 | |
| complex_key | No | 정확한 단지 키 — realty_search_complexes가 돌려주는 complex_key | |
| compare_sale | No | 같은 12개월 창의 **매매가를 함께 뽑아 전세가율·전월세 전환율·갭을 계산**한다(기본 켬). 종전엔 note가 '매매를 period_months=12로 따로 불러 나눠라'라고만 지시해 호출자가 손으로 했고, 창을 안 맞추면 전세가율이 수 %p 왜곡됐다 — 그 계산을 서버가 진다 | |
| complex_name | No | 키를 모를 때 단지명 부분일치 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call as read-only/idempotent, so the bar is lower; the description still adds valuable non-schema behavior: partial matching can conflate same-name complexes, the result row key supply_pyeong uses a precise 분양평 conversion formula, and the tool is the jeonse input to a jeonse/sale ratio calculation. These are real operational cues an agent needs and cannot infer from annotations alone.
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 compact, front-loads the purpose and metric, and each sentence earns its place: query scope, calculation role, call prerequisite/disambiguation strategy, and row-key semantics. The bolded terms and line breaks make it skimmable without wasting tokens.
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 moderately complex tool with no output schema, the description plus the rich per-parameter schema covers the input contract, ambiguity handling, and return metric. It stops short of specifying the full response shape or units, so an agent has a small amount of runtime uncertainty, but it is enough to select and invoke 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 description coverage is 100% and every parameter is already documented in the schema, so the baseline is 3. The description adds one piece the schema's required list does not encode: a one-of constraint (complex_key or complex_name) and a preference for complex_key, which materially improves parameter selection.
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 precise verb+resource: '단지의 평형별 전세 보증금·월세 중앙값을 조회한다', naming the exact resource (rent medians by pyeong) and the metric (median). It also states the tool's role as the '전세 축' of the 전세가율 calculation, which separates it from sale-price counterparts in the same domain even without naming them 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?
It gives clear call-guidance: one of complex_key/complex_name is required, partial name matching risks mixing same-name complexes, and the recommended path is to use realty_search_complexes to obtain a complex_key first. This is clear context for when and how to use the tool, though it does not explicitly enumerate sibling tools to avoid beyond the implied jeonse-side scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_complex_report[유료] 단지 통합 리포트ARead-onlyIdempotentInspect
[유료] 단지 하나의 시세·전세·기본정보를 통합 조회한다.
응답에 좌표(latitude/longitude)와 complex_key가 들어 있다 — 이어서
realty_poi_nearby(입지)·realty_predict_price(예측)에 그대로 넣어 심층 분석하라.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | 단지명 (예: 반포자이) | |
| complex_key | No | 정확한 단지 키 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and idempotentHint, so the description only needs to add extra behavioral detail. It does by revealing response contents (coordinates, complex_key) and the paid nature of the report. This meaningfully goes beyond annotations without contradicting them.
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 very concise: a single purpose sentence plus one downstream-routing sentence. It is front-loaded with the core action and wastes no words. The paid indicator and chaining guidance both add clear value.
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?
This is a simple read-only two-parameter tool with no output schema, and the description provides enough context for the main call: what it returns, and how to use that output next. It could be slightly more explicit about whether the user must provide name or complex_key; otherwise the description is sufficiently complete for a tool of this complexity.
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?
Both parameters (name and complex_key) are already described in the schema at 100% coverage, so the baseline is 3. The description adds a bit by saying complex_key will appear in the response and can be reused downstream, but it does not clarify whether one parameter is preferred, required, or how the two relate.
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 states the tool's verb and resource: it queries an integrated report for a single complex (시세, 전세, 기본정보). It conveys scope and content well, but does not explicitly distinguish it from related sibling tools like realty_complex_pyeong_price or realty_complex_rent_by_pyeong.
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 paints a concrete workflow: call this tool first, then feed the returned latitude/longitude and complex_key into realty_poi_nearby and realty_predict_price. That is actionable and clarifies a natural continuation. It does not explicitly mention when not to use the tool or truly contrast alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_demographics인구통계 (인구·가구·연령·인구이동)ARead-onlyIdempotentInspect
지역 인구통계를 조회한다 — "인구 줄고 있어?", "1인 가구 비율은?", "고령화 심해?", "순유입 되는 동네야?"류 질문용.
응답 meta.data_as_of가 실제 최신 시점이다 — warning이 있으면 그대로 사용자에게 전달하고,
밀린 수치를 "지금 인구"로 단정하지 말 것. 연간 계열(households·age)은 기준연도를 밝혀라.
households만 동명 시군구(중구·서구 등)를 거절한다(원천 단명 수집 결함) — 그 경우
population·migration(정식 명칭 수집)으로 대신 조회하라.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | population=월별 인구·세대수 / households=연별 가구원수별 가구(1인가구 등) / age=연령대(5세 구간) 분포·고령화 — 시도 단위만 / migration=월별 전입·전출·순이동 | |
| months | No | population·migration 시계열 창(개월) — 최대 60(5년)이고 더 긴 창은 이 도구로 못 받는다. 연간 계열엔 미적용 (허용 범위 1~60) | |
| region | Yes | 시도(예: 서울)나 시군구(예: 강남구, 수원시). age는 시도 단위만 제공. age에 한해 '전국'도 가능 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), so the bar is for the description to add context. It discloses substantive temporal behavior: response meta.data_as_of is the true recency point, warnings must be forwarded to users, and lagging figures must not be asserted as 'current'. It also reveals a first-party data collection defect for households and the correct alternative route — genuinely useful non-obvious behavior beyond the annotations.
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 compact, front-loaded with purpose and example questions, then progressive: temporal caveats, then the metric-specific bug and fallback. Each sentence adds value and none repeats schema content, though the opening could be slightly shorter without losing clarity.
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 tool with no output schema, the description provides the most critical response-level guidance: full data recency via meta.data_as_of, warning propagation, and base-year framing for annual series. It does not describe the response shape or grouping beyond what metric implies, which is a minor gap given no output schema exists, but the operational essentials for the agent are covered.
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 schema already documents each enum value, the months window (1–60, max 5 years), and age's row-level constraints, so the description need not repeat them. The description adds only indirect param context (which metrics are monthly vs annual, that months cap applies to population·migration). Baseline 3 applies because the schema carries the weight and the prose adds limited extra meaning.
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 uses a specific verb+resource ('지역 인구통계를 조회한다') plus concrete example questions ('인구 줄고 있어?', '1인 가구 비율은?') that make the tool's scope unmistakable. The title and opening line also enumerate the four metric dimensions. It does not explicitly name or differentiate from sibling tools like realty_macro_indicators, so it falls just 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?
Provides strong 'when to use' signals via realistic user questions covering population decline, household composition, aging, and migration. It also gives a metric-specific exclusion (households rejects same-name 시군구) with an instructed fallback to population·migration. It stops short of explicitly contrasting with sibling alternatives (e.g., when to prefer realty_macro_indicators or realty_compare_regions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_get_auction_case경매 사건 상세 조회ARead-onlyIdempotentInspect
사건번호로 경매 물건의 상세를 조회한다.
사건번호는 법원 간 유일하지 않다(전국 평균 2.8개 법원에서 중복). court_name을 생략하면
중복 시 오류와 함께 후보 법원 목록이 돌아오니, 그걸 보고 법원을 지정해 다시 호출하라.
`rights` = 매각물건명세서 핵심(최선순위 설정·인수되는 권리 원문·위험 플래그·배당요구종기).
이것은 법원 공시의 전달이지 권리분석 판단이 아니다 — 답할 때 rights.disclaimer를 함께
전하고, 등기부·임차인 현황 전체가 아님을 밝혀라. rights가 null이면 명세서 미수집
상태(rights_note에 사유)이므로 권리관계를 절대 지어내지 말 것.
⚠️ `rights.claim_amt_10k`는 **경매신청 채권자의 청구금액**(만원)이다 — 임차인
보증금이 아니다(claim_amt_note 참조). 보증금 액수는 이 데이터에 없다.
`min_bid_source`가 item_list면 최저가가 낡았을 수 있다 — 함께 오는 `min_bid_note`를
사용자에게 전하고 단정하지 마라(목록 도구와 같은 경고다).
유찰 이력·기일별 저감·사진은 realty_auction_history가 담당이다.
**이 축의 자리** — 사건번호·법원명을 **따로 받아 구조화 필드**로 돌려주는 상세가 이
도구다. `search` 결과의 id(`"법원명|사건번호"`)를 그대로 들고 있다면 `fetch`가 그 덩어리를
쪼개지 않고 받아 문서형 텍스트로 준다 — 둘은 대체재가 아니라 입력·응답 형태가 다른
짝이다. 조건으로 여러 건을 훑는 것은 `realty_search_auctions`다.
| Name | Required | Description | Default |
|---|---|---|---|
| case_no | Yes | 사건번호 — `2026타경3571` 꼴이다(연도 4자리 + '타경' + 일련번호 3~6자리). 원장 전수가 '타경' 접두이고 '2024타경101026'처럼 6자리도 있다. '2026-3571'처럼 하이픈으로 써도 서버가 '타경'으로 펴고 무엇을 폈는지 응답에 적는다. 다만 '3571'처럼 **연도가 없으면 못 편다**(연도를 지어내면 다른 사건이 된다) — 사용자에게 연도를 물어라 | |
| court_name | No | 법원명 — '서울동부지방법원'·'인천지방법원'처럼 정식명으로 넣는다('진주지원'처럼 지원명만인 행도 있다). '의정부지법'처럼 줄여 넣어도 서버가 정식명으로 편다. 사건번호는 법원 간 유일하지 않아(전국 평균 2.8개 법원에서 중복) 생략하면 후보 목록이 돌아온다. **여기 넣은 법원에 그 사건이 없으면 서버가 법원 없이 한 번 더 찾아보고**, 그래도 없으면 원인 셋(표기·법원·수록범위)을 갈라 돌려준다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only, idempotent, open-world operation, and the description substantially extends this without contradiction: case numbers are non-unique across courts (avg 2.8), duplicate errors return candidate court lists, rights=null means 미수집 and forbids fabrication, claim_amt_10k is the creditor's claim amount rather than the tenant deposit, min_bid_source=item_list signals staleness, and the server's fallback re-search when the named court lacks the case. This is rich disclosure far beyond the annotation 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?
The purpose is front-loaded in the first sentence, followed by a logical ordering: duplicate-number caveat, rights handling rules, the ⚠️ claim_amt trap, stale min_bid warning, sibling exclusions, and a final positioning paragraph (이 축의 자리). It is long, but every sentence addresses a real failure mode or routing decision with zero filler, and the ⚠️ markers highlight the highest-risk misinterpretations.
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 no output schema, the description bears the burden of explaining return-value semantics and does so thoroughly: the rights object and its disclaimer requirement, rights_note for null, claim_amt_10k/claim_amt_note, and min_bid_source/min_bid_note. It states clear boundaries (등기부·임차인 현황 전체 아님, 보증금 액수 없음, history/photos handled elsewhere) and documents error/retry flows. An agent has everything needed to call it safely and interpret its response 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% with already rich per-parameter descriptions (case_no format, hyphen expansion, missing-year trap; court_name formal-name/abbreviation handling and fallback behavior). The description adds the operational retry pattern — on duplicate error, specify the court and call again — and clarifies the tool's input contract as separate structured fields versus fetch's combined id, so it adds genuinely useful value above the schema-dominant baseline of 3, though the schema carries most of the semantic weight.
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 first sentence states a specific verb and resource: '사건번호로 경매 물건의 상세를 조회한다' (query auction property detail by case number). It actively distinguishes itself from siblings across the description — realty_search_auctions for condition-based sweeping, realty_auction_history for 유찰 이력·기일별 저감·사진, and fetch for document-form text from a combined id. An agent can select this tool unambiguously.
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?
Gives explicit when/when-not guidance: omitting court_name triggers a candidate-court list and the imperative retry instruction '그걸 보고 법원을 지정해 다시 호출하라'. It explicitly routes history/session-reduction/photo needs to realty_auction_history, condition sweeping to realty_search_auctions, and the combined-id document case to fetch, stating '둘은 대체재가 아니라 입력·응답 형태가 다른 짝이다'. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_invest_risk[유료] 지역 투자위험 분석ARead-onlyIdempotentInspect
[유료] 지역의 투자 위험도를 변동성·유동성·공급압력 축으로 점수화한다.
응답의 disclaimer(통계 요약이며 투자 권유 아님)를 사용자에게 반드시 함께 전달하라.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | 시군구명 (예: 강남구) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this readOnly, idempotent, and non-destructive. The description adds useful behavioral context: the tool is paid, and the disclaimer in the response must always be conveyed to the user. This goes beyond what annotations provide, though exact output rendering is not detailed.
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 short and front-loaded with the core scoring concept. It loses a little efficiency because the title already notes it is paid, and the same '[유료]' prefix is repeated in the description.
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 single-parameter, low-complexity, readOnly tool, the description conveys the core purpose, scoring axes, required output handling, and paid aspect. Since no output schema exists, a little more detail on response format or score interpretation would improve completeness, but it is not markedly incomplete.
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 schema already fully documents the only parameter ('region'). The description adds no new parameter-related semantics beyond indicating that output is a regional risk score.
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 states a specific verb and resource: it 'scores' 'regional investment risk' across volatility, liquidity, and supply pressure. This distinguishes it from nearby realty tools, though it does not explicitly name sibling alternatives.
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 gives no direct guidance on when to use this tool versus other realty analysis tools. It mentions a required user-facing disclaimer, but not conditions for selection or alternatives, leaving usage largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_loan_eligibility쓸 수 있는 대출 상품 나열 — 용도×지역×주택수 교차 판정ARead-onlyIdempotentInspect
**"내 조건이면 어떤 대출을 쓸 수 있나"**를 상품별로 나란히 낸다 — 사용자가 어느 규칙 토픽을 물어야 할지 몰라도 되게 하는 라우터다.
이 도구가 존재하는 이유: 대출 규칙이 상품별 토픽 7곳에 흩어져 있어서, 지금까지는 **호출자가
어느 토픽을 물어야 할지 알아야** 했다(2026-08-14). 용도·지역·주택수만 주면 **쓸 수 있는 상품과
못 쓰는 이유**를 함께 낸다.
경계: ① **주택 수·생애최초·신혼은 선언**이다(서버가 사실판정하지 않는다) ② **한도 금액을
계산하는 건 구입 목적의 은행권뿐**이고 그건 realty_loan_limit이 한다 — 이 도구는 **자격 대조와
라우팅**이다 ③ 전세·중도금은 보증기관·사업장이 지배해 **한도를 계산하지 않는다**, 전세반환은
**경과조치 해당 여부가 서류로 보는 사실판단**이라 계산하지 않는다 ④ 규칙의
근거·불확실성은 각 상품 토픽(응답의 `topic`)에 있으니 함께 읽어라.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | 소재지(시군구까지, 예: '서울 마포구'·'세종특별자치시') — 수도권·규제지역 판정에 쓴다 | |
| purpose | Yes | 자금 용도 — **같은 담보라도 용도가 규제를 가른다**(구입=LTV·가액구간 한도, 생활안정=1억 한도·다주택 금지, **전세반환=세입자에게 보증금 돌려주는 목적(퇴거자금) — 원칙 1억이지만 6·27 이전 계약분 경과조치가 붙는 유일한 축**, 전세=세입자로 들어갈 때 쓰는 전세자금대출, 중도금=집단대출). ⚠️ **'전세'와 '전세반환'을 섞지 마라** — 방향이 반대다. 모르면 물어라 | |
| homes_owned | No | **세대 기준** 보유 주택 수(선언) — 0=무주택, 1, 2+=다주택. 명의가 갈려도 세대로 센다. 서버는 주택 수를 판정하지 않는다 (허용 범위 0~9) | |
| is_newlywed | No | 신혼 해당 여부(선언) | |
| is_first_time | No | 생애최초 해당 여부(**선언** — 서버는 판정하지 않는다) | |
| house_price_10k | No | 대상 주택 가격(만원) — 정책상품 가격요건 대조에 쓴다 | |
| total_assets_10k | No | 총자산(만원) — **버팀목 전세는 자산 요건이 핵심 관문**이라 전세 문의면 받아라 | |
| annual_income_10k | No | 부부합산 연소득(만원) — 정책상품 소득요건 대조에 쓴다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, the description discloses that declarations like home count, first-time, and newlywed are not fact-checked by the server, that the tool does not compute limits for certain categories, and that rule uncertainty lives in the result's topic field. This is exactly the behavioral context an agent needs.
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 dense but structured clearly with bolded sections and numbered boundary. It has some redundancy with the title and includes a historical rationale that could be trimmed, but each sentence conveys a reason why. It is more thorough than concise, which is justified for a cross-product routing 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?
The description fully compensates for a missing output schema: it says the response contains eligible products and reason, and references the topic field for rule details. It covers edge cases like declarations, non-computed limits, and boundary reads for a tool with 8 parameters and multiple cross-cutting rules.
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?
The input schema already provides 100% parameter coverage with rich descriptions, including the warning not to confuse 전세 and 전세반환 and the role of total_assets_10k for. The description adds routing context but no additional per-parameter meaning, so the baseline 3 is appropriate.
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 states the tool's specific job: given purpose, region, and homes-owned, it lists allowable loan products side-by-side with reasons, acting as a router so the caller does not need to know a rule topic. It also clearly distinguishes itself from realty_loan_limit, which handles loan amount calculation.
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 gives explicit when and when-not guidance: use this tool for eligibility or routing, use realty_loan_limit for purchase limit amounts, and do not expect limits for jeonse/midterm-loan categories because those are governed elsewhere. It also instructs the caller to read the returned topic for rule details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_loan_limit주담대 규제 상한 판정 — LTV·한도·만기·DSR (선언 조건 기준)ARead-onlyIdempotentInspect
선언된 조건(지역·시가·차주 유형·소득)에 대해 주담대 규제 상한을 결정론으로 계산한다 — LTV 상한액, 수도권·규제지역 가액구간 한도(6/4/2억), 만기 상한(30년), 스트레스 DSR 반영 최대 대출액과 어느 규제가 최종 상한인지(binding). "10억 집, 생애최초, 연소득 8천이면 얼마까지 나와?"류 질문의 자리다.
경계를 지켜라: ① 차주 유형은 **선언**이다 — 생애최초·주택 수 해당 여부는 사실판단이라
서버가 판정하지 않는다(응답 inputs_declared가 그 선언을 에코한다). ② 결과는 규제
상한이지 **대출 승인·확약이 아니다** — 은행 심사(소득 인정·방공제·신용도)로 더 줄 수
있다. ③ **DSR 상한은 금리유형(rate_type)에 따라 크게 갈린다** — 기본값 '변동'은
스트레스 금리 전액 가산이라 가장 작은 값이다. 사용자가 상품을 안 정한 상태면
`dsr.by_rate_type` 비교표를 함께 전하고 "N억까지만 된다"고 단정하지 마라. ③ 규칙 원표·근거는 realty_policy_rules(topic=loan_rules), 규제지역 지정 현황은
topic=regulated_area, 생애최초 취득세 감면의 세율표 본체는 topic=acquisition_tax.
특정 분양 공고에 대한 시점별(계약금·중도금·잔금) 자금 판정은
realty_presale_funding_plan. 응답의 uncertainties·disclaimer를 사용자에게 함께 전하라.
| Name | Required | Description | Default |
|---|---|---|---|
| lender | No | 업권 — DSR 한도가 은행 40% / 제2금융권 50%로 갈린다 | 은행 |
| region | No | 주택 소재지(시군구까지, 예: '서울 마포구'·'성남시 분당구'·'부산 해운대구'). 규제지역·수도권 판정에 쓴다. 해석이 모호하면 후보를 돌려주니 is_regulated·is_metro로 직접 선언해도 된다 | |
| borrower | Yes | 차주 유형 — **사용자 선언**이다(서버는 생애최초·주택 수를 판정하지 않는다). 생애최초=본인·배우자 모두 주택 소유 이력 없음, 1주택_처분조건부=6개월 내 기존주택 처분 약정, 서민실수요=우대 요건 충족을 선언한 경우 | |
| is_metro | No | 수도권(서울·경기·인천) 여부 직접 선언 — region 대신/우선 적용 | |
| rate_type | No | 주담대 금리유형 — **스트레스 금리 적용비율이 갈리는 축이다**(변동 100%, 혼합형·주기형은 고정기간 비중별 차등, 순수고정 미적용). 기본값 '변동'은 최악 가정이라 한도가 가장 작게 나온다. 사용자가 상품을 안 정했으면 응답의 by_rate_type 비교표를 함께 전하라. 혼합형=고정기간 후 변동, 주기형=N년 주기로 금리 재산정, 순수고정=만기까지 고정 | 변동 |
| is_regulated | No | 규제지역(투기과열·조정대상) 여부 직접 선언 — region 대신/우선 적용 | |
| credit_loan_10k | No | 신용대출 잔액 또는 받을 예정액(만원). **직접 연 원리금을 계산해 넣지 마라** — 산정만기 5년 강제·산식 두 갈래·스트레스 1억 문턱이 전부 함정이라 서버가 계산한다. existing_annual_debt_payment_10k와 함께 주면 둘 다 합산한다 | |
| house_price_10k | Yes | 주택 시가(만원 단위, 예: 100000=10억). 가액구간 한도가 '시가' 기준이라 분양가·공시가가 아닌 시세를 넣는다 | |
| loan_term_years | No | 희망 만기(년). 수도권·규제지역은 30년 상한으로 조정되며 조정 사실을 응답에 싣는다 (허용 범위 1~50) | |
| desired_loan_10k | No | 받으려는 주담대 금액(만원). 주면 '이만큼 되나'를 판정하고, DSR에 막히면 **무엇을 얼마나 바꾸면 들어가는지**(금리유형·만기·신용대출 축소·금리)를 함께 낸다. '4억 받으려는데 되나요'류 질문의 자리 — 최대치만 받아 모델이 역산하게 두지 마라 | |
| rate_fixed_years | No | 혼합형의 고정금리 기간 또는 주기형의 금리변동주기(년). 미지정이면 시중은행 통상인 5년으로 가정하고 가정 사실을 응답에 싣는다. 변동·순수고정에는 무의미 (허용 범위 0~50) | |
| annual_income_10k | No | 연소득(만원) — interest_rate_pct와 함께 주면 DSR 상한 대출액까지 계산 | |
| interest_rate_pct | No | 약정금리 가정(%, 예: 4.2) — DSR 계산에 필요. 없으면 DSR 금액 계산은 생략된다 (허용 범위 0 초과~20) | |
| credit_loan_rate_pct | No | 신용대출 약정금리(%) — credit_loan_10k를 줬으면 필수다(이자 없이는 원리금을 못 낸다) (허용 범위 0 초과~20) | |
| existing_annual_debt_payment_10k | No | 기존 대출의 연간 원리금 상환액 합계(만원) — DSR 계산에서 차감 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the read-only idempotent annotations: it discloses that the result is a deterministic regulatory cap, that the response echoes inputs via `inputs_declared`, that `dsr.by_rate_type` is provided for rate-type comparison, and that `uncertainties`/ disclaimers must be forwarded. It also warns against overstating 'N억까지만 된다' when the user has not decided the rate type.
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 beginning states the core computation and is followed only by high-value behavioral and routing guidelines; no filler. Although longer than average, every sentence provides either a boundary, an alternative-tool pointer, or a limitation that prevents the agent from giving an incorrect answer.
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 no output schema, the description takes on the necessary burden: it names the key response components (`inputs_declared`, `dsr.by_rate_type`, `uncertainties`, `loan_term adjustment`) and important edge cases such as rate-type sensitivity and declared borrower state. It also provides missing sociable boundaries and sibling routing despite the large sibling set.
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?
Parameter descriptions in the input schema already cover 100% of properties, so the baseline is 3. The description adds no new per-parameter syntax or semantics; it does connect the key behavioral parameters (borrower declaration, rate_type, region/regulatory-area) to the larger outcome, but that is not enough for a higher score given the schema already does the heavy lifting.
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 states a specific verb+resource: it computes the regulatory cap for mortgage loans (LTV cap, 6/4/2억 price-band limits, 30-year term cap, and stress-DSR maximum) and gives an example question that anchors the intended use. It also differentiates this from the same-domain siblings by stating that it is the regulatory cap, not a loan approval/commitment, and that policy-rule and presale-funding questions should go to other tools.
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?
Explicit when-to-use guidance is present via the example question and via boundaries: borrower type is only a declared fact, the result is not an approval, and the default variable rate_type is the worst-case assumption. It also says which sibling to use for rule-source and presale-funding cases, and instructs the agent to send the by_rate_type comparison table rather than asserting a single maximum when the user’s product is unspecified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_location_scores단지 학군·교통 점수ARead-onlyIdempotentInspect
단지의 학군(v5)·교통(지하철·버스) 점수를 조회한다 — "이 아파트 학군 어때? 역세권이야?" 담당. complex_key/complex_name이면 단지 점수, region만 주면 지역 집계+축별 상위 5 단지.
학군 점수는 학원가 강도+군집 보정의 **스크리닝 지표**다 — 학원가 데이터가 시 단위라
도심 외곽 면/읍이 다소 높게 나올 수 있고, 학교 배정·수준 판단이 아니다(그렇게 팔지 말 것).
subway_distance_m는 최근접역 직선거리(도보 거리 아님). 점수 미산정 단지는 not_found가
정직한 답이다 — 지어내지 말고 realty_search_complexes로 단지 실존부터 확인하라.
돌려주는 complex_key는 공백 1칸으로 정규화돼 있어 다른 도구에 그대로 넣을 수 있다.
"역세권이야?"는 [유료] realty_poi_nearby와 겹친다 — 점수·스크리닝은 이쪽(무료),
주변 시설의 실제 목록·거리가 필요하면 poi_nearby.
**realty_region_rankings(metric=school|transit)의 점수와 섞지 마라** — 이름은 같지만
원장·산식이 다른 판본이라(응답 score_lineage) 같은 단지에서도 값이 갈린다.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | 지역명 — 단독이면 지역 집계+상위 단지, complex_name과 함께면 검색 범위 | |
| complex_key | No | 정확한 단지 키 — realty_search_complexes가 돌려주는 complex_key | |
| complex_name | No | 단지명 일부 (부분일치) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds valuable caveats beyond those annotations: the score is a screening indicator, city-level hagwon data may skew outer areas, subway_distance_m is straight-line not walking distance, not_found is an honest response, and returned complex_key is normalized with a single space. No contradiction with annotations.
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 long but information-dense; every sentence carries a distinct caveat, routing rule, or normalization behavior. Key facts are front-loaded, and bolding makes the warnings scannable. There is no filler.
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?
Given no output schema, the description still covers expected response shapes (regional aggregation, top-5, complex scores), the not_found behavior, the score_lineage lineage marker, and how to reuse the returned complex_key. This is sufficient for an agent to select and invoke 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?
Although schema coverage is 100%, the description adds semantically important detail: complex_key must be exact and comes from realty_search_complexes, complex_name is partial match, and region alone changes the result into a regional aggregate plus top-5 list. It also notes the returned complex_key is normalized for direct reuse in other tools.
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 states a specific verb and resource: it queries a complex's school-district (v5) and transit (subway/bus) scores. It also differentiates itself from multiple siblings by clarifying what it is not, such as not being a school-assignment judgment and not being the realty_region_rankings scoring version.
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 gives explicit usage rules: complex_key/complex_name yields complex scores, while region alone yields regional aggregation plus top-5 complexes. It tells the agent to verify existence via realty_search_complexes when not_found, and routes actual POI lists/distances to realty_poi_nearby. It also warns against mixing with realty_region_rankings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_macro_indicators거시 지표 (기준금리·KOSPI·M2 시계열)ARead-onlyIdempotentInspect
한국 기준금리·KOSPI·M2, 미 연준금리·S&P500 등 거시 지표의 월별 시계열을 조회한다. "금리가 집값에 어떤 영향?"류 배경 분석용.
⚠️ 계열마다 신선도가 다르다 — meta.series_as_of가 계열별 실제 최신 시점이다(예: 미
연준금리·S&P·코인은 최신인데 한국 기준금리·KOSPI는 2024-12 정지, ECOS 재수집 대기).
밀린 계열을 "지금 금리"로 인용하지 말고 반드시 그 계열의 시점을 함께 밝혀라.
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | 최근 몇 개월치 (허용 범위 1~240) | |
| indicators | No | 쉼표 구분 지표명: bok_base_rate(한국 기준금리 %), kospi(월말 종가), korea_m2(M2 평잔·원계열, 조원), fed_rate(미 연준금리 월평균 %), us_m2(미 M2 계절조정 $B), sp500, btc_usd, eth_usd(월말 종가). 비우면 전체. 목록에 없는 이름은 거절한다(조용히 버리지 않는다) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds crucial behavioral context beyond annotations: series freshness varies per series and must be checked via meta.series_as_of; stale series (Korea base rate, KOSPI) are not 'current' and should not be cited as such; invalid indicator names are rejected rather than silently dropped. This explains what the tool does beyond simple reads and is important for accurate interpretation of results.
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 compact and well-paced: two sentences of purpose, one hint about usage, one caveat paragraph about freshness. The most important practical caveat (series_as_of) appears at the end, but the warning is short and not buried. Every sentence earns its place, no redundancy.
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?
The key gap is the series_as_of metadata being important and not part of a structured output schema (no output schema present). The description does a good job giving the specific context of what to inspect (meta.series_as_of, examples of which series are lagging), which covers the major gap. Not perfect because there is no explicit statement of what the tool does if months is out of range (but schema enforces), and no mention of the openWorldHint meaning (allowed to make best-effort). Overall, description is complete for practical use.
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%; the schema fully documents the parameters (months range 1-240 default 24; indicators list with all names and formats). The description adds the caveat about series freshness related to months, but doesn't add significant new meaning beyond the schema. Baseline of 3 is appropriate given the schema's thorough 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 uses a specific verb ('조회한다' - retrieves), clearly names the resource (Korean base rate, KOSPI, M2, US Fed rate, S&P500 monthly time series), and explicitly states its use case ('금리가 집값에 어떤 영향?' background analysis). It distinguishes itself from the many sibling tools by focusing on macroeconomic monthly time series, not property-specific data.
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 explicitly states when to use this tool (for background analysis related to macro indicators and their effect on housing prices), and the caution about series freshness provides clear guidance: don't cite stale series as current, and always report the series-specific as-of date. While it doesn't explicitly name alternatives, the specific use case and the warning about currency sufficiently route the agent. The openWorldHint annotation and sibling names clarify what other tools are for individual areas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_market_signals[유료] 시장 신호 (미분양·심리지수)ARead-onlyIdempotentInspect
[유료] 미분양 추이와 시장심리지수를 한 번에 조회한다. 매수 타이밍 판단의 거시 신호.
기본 창은 **6개월**이다(방향 판단에 필요한 최소). 더 긴 추이가 필요하면 months를
올리되, 전국 조회에서 창을 넓히면 오래된 달부터 예산에 맞춰 떨어지고 그 사실이
meta.truncated·meta.truncated_note에 값으로 실린다 — region을 지정하면 전 창이 온다.
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | 시계열 개월 수 (기본 6). 전국(region 미지정)에서 창을 넓히면 시도 18곳×월 행이 곱으로 늘어 응답이 도구 결과 한계에 걸린다 — 긴 창이 필요하면 region으로 지역을 좁혀라 (허용 범위 1~36) | |
| region | No | 지역명 (예: 서울). 비우면 전국 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, and the description adds non-obvious behavior: widening the window in a nationwide query causes older months to be trimmed to fit a budget, with the fact surfaced via meta.truncated and meta.truncated_note. This is meaningful context beyond the annotations.
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 compact and front-loaded, opening with the purpose and paid indicator, then explaining the default window and the critical truncation behavior. Every sentence conveys essential information without filler, and the trailing context is structured clearly.
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 two-parameter tool with no output schema, the description covers the key context: what is returned, default behavior, when to increase the window, and how truncation is reported. It does not fully describe the response shape beyond the meta fields, but this is sufficient for the tool's simplicity.
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 parameters are already documented. The description nevertheless adds semantics: it explains why months interacts with a nationwide query, the multiplication of rows across an 18-region grid, the truncation limit, and how specifying region avoids it. That's a clear value-add 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 clearly states a specific verb and resource: it 'queries' unsold housing trends and market sentiment index at once, positioning itself as a macro signal for buy timing. It is specific enough to be distinguished from most sibling tools, but it does not explicitly differentiate itself from a named alternative, 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?
The description gives clear usage context: default 6-month window, when to increase months, and the truncation trade-off for nationwide queries. It does not explicitly say when to prefer this tool over alternatives, so it misses the highest bar, but it provides solid situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_member_transfer_check조합원 지위양도 가능 판정 — 투기과열지구×사업유형×단계 (도시정비법 39조)ARead-onlyIdempotentInspect
투기과열지구에서 재건축·재개발 물건을 지금 사면 조합원 지위를 승계받을 수 있는지를 도시정비법 39조 2항으로 결정론 판정한다 — 투기과열지구 여부(regulated_area) × 사업 유형 × 진행 단계(서울은 정보몽땅 목록에서 자동 결합). "한남3구역 지금 사도 입주권 나와?"의 자리다.
경계를 지켜라: ① 판정은 **원칙 제한 여부**까지다 — 예외(양도인의 근무·질병·상속·해외이주,
10년 소유+5년 거주 등)는 양도인 사정의 사실판단이라 갈림길로만 주고, **사업지연 예외
3종은 인가일·착공일 데이터가 없어 판정 불가를 실토한다**. ② 재개발엔 부칙 함정(2018-01-25
이전 사업시행인가 신청 구역은 제한 밖)이 있어 선언 없이는 단정하지 않는다. ③ 제한이 없어도
**토지거래허가구역은 별개 제도**다(서울 전역 지정 중 — 실거주 의무 등). ④ 조문 원문·예외
전체 목록은 realty_policy_rules(topic=redevelopment_rules), 투기과열 지정 현황은
topic=regulated_area, 분양자격 자체가 불확실하면 topic=redevelopment_entitlement,
사업장 목록·단계 열람은 realty_redevelopment. 응답의 exceptions·disclosures를 함께 전하라.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | 사업장 소재지(시군구까지, 예: '서울 용산구'·'성남시 수정구') — 투기과열지구 판정과 (서울이면) 단계 자동 조회에 쓴다. 모호하면 후보를 돌려주니 is_speculation_zone을 직접 선언해도 된다 | |
| project_name | No | 사업장·구역 이름(예: '한남3구역') — 서울이면 정비사업 목록에서 진행 단계를 자동으로 잇는다(유일 매치만). 서울 밖은 목록이 없어 project_stage 선언이 필요하다 | |
| project_type | Yes | 사업 유형 — 제한 개시 시점이 갈린다(재건축=조합설립인가 후, 재개발=관리처분인가 후). 가로주택·소규모재건축 등 소규모정비사업은 별도 법제라 이 도구가 판정하지 않는다 | |
| project_stage | No | 진행 단계 직접 선언 — project_name 조회 대신/우선 적용. 허용값은 서울 정비사업 목록(정보몽땅)의 실측 어휘 전량이라, **자동 조회가 돌려준 stage를 그대로 다시 넣으면 같은 판정이 재현된다**(예: '철거'·'철거 및 착공'·'추진위구성') | |
| is_speculation_zone | No | 투기과열지구 여부 직접 선언 — region 대신/우선 적용 | |
| first_approval_application_after_20180125 | No | **재개발 부칙 선언** — 이 구역의 최초 사업시행계획인가 신청이 2018-01-25(법률 제14943호 시행일) 이후인가. 이전이면 관리처분인가 후에도 지위양도가 가능하다(서울 22개 구역 실재). 모르면 비워두라 — 서버가 미확인으로 실토한다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnly/idempotent annotations by disclosing actual behavior: the outcome is deterministic ('결정론적'), it only returns the general restriction not the transferor-specific exceptions ('갈림길로만 주고'), and it will ambiguously semantics '실토한다' (admit it cannot determine) when data is missing. It also exposes the 2018-01-25 renewable account trap and instructs that exceptions/disclosures be conveyed to the user — which is exactly the kind of unsaid runtime behavior an agent could not infer from annotations.
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 core purpose is front-loaded in the first sentence, immediately followed by a concrete user question ('한남3구역 지금 사도 입주권 나와?') to anchor the agent. The following paragraph is superficially long, but each numbered clause contributes a boundary/referential constraint that keeps the tool from being misused, and with no output schema this dense listing is earned. Nothing is fluff.
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?
Despite having no output schema, the description tells the agent what the tool will and won't produce: it will return a determination of the main supplier/restriction, hand off transferor exceptions as a decision-tree branch, and explicitly give '판정 불가' where data is absent. It also names response fields exceptions and disclosures (`응답의 exceptions·disclosures를 함께 전하라`) the exact behavior the agent must preserve, making the whole conversational contract complete.
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?
The input schema already provides descriptions for all 6 parameters, with coverage of 100%, so baseline is 3. The tool description does not provide parameter-specific syntax details beyond what the schema already says; it merely repeats the tripartite structure (regulated_area × project_type × stage) in a sentence. Despite some hints about auto-combination for Seoul and the refusal to assert without first_approval declaration, the schema itself already contains this, so no meaningful additional meaning is added.
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 states a specific verb+object: '도시정비법 39조 2항으로 결정론적 판정한다' and defines the actual question '지금 사면 조합원 지위를 승계받을 수 있는지' — the core decision. It also draws a contrast with where to go for the source text, exemption lists, and entitlement, so the tool is clearly distinguishable from 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?
The '경계를 지켜라' section explicitly directs the agent to realty_policy_rules with different topics for the oracle text, for the speculation zone status, and for entitlement uncertainty, and to realty_redevelopment for project-only list/stage. It also names what the tool does not decide (transferor factual exceptions, land transaction zone, small-scale projects in the schema) — explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_move_in_supply입주 예정 물량 — 입주장 리스크ARead-onlyIdempotentInspect
지역의 입주 예정 물량을 연월별로 집계한다 — "○○ 입주장 리스크 있어?", "내년에 입주 물량 얼마나 쏟아져?"류 질문용. 입주 몰림은 전세가 하락·역전세 압력 신호다.
**기본 창은 오늘부터 앞이다** — from_ym을 안 주면 이번 달에서 시작하므로 months=12는
"앞으로 12개월"이지 "최근 12개월"이 아니다. **과거를 물었으면 from_ym을 과거로 줘라**
(최근 12개월 = from_ym='YYYYMM'(12개월 전) + months=12). 응답 meta.window_direction이
그 회차의 창이 과거인지 미래인지를 라벨로 실토하니 결론에 기간을 그대로 밝혀라.
**하한 집계다** — 청약홈 공고(2020-02 이후) 기반이라 공고 없는 공급(민간임대·후분양
일부)이 빠지고, 무엇보다 **공고는 입주 평균 30개월 전에 난다**(전국 실측). 그래서
조회 구간이 오늘+30개월을 넘어가면 그 구간 입주분은 아직 공고조차 안 된 것이 대부분이다.
실사고: 세종 2028~2030 조회에 676세대가 나오자 "입주장 리스크 없음"으로 답했으나
실제 계획은 그 6배였다.
응답의 **`reading` 문장을 결론에 그대로 반영하라** — `interpretation`이 `lower_bound`면
"물량 없음/적음"이라 말하지 말고 "공고된 것만 N세대(하한)"라고 답해야 한다.
`coverage.region_recent_annual_rate`(그 지역 최근 공고 실적)와 비교해 값이 크게 낮으면
공급이 끊긴 게 아니라 공고 시차다. **그때는 realty_supply_pipeline을 이어서 불러라** —
사업승인은 났지만 아직 공고 안 난 물량이 거기 있다(세종 실측: 이 도구 676세대 →
파이프라인 3,483세대). 단 **두 축의 세대수를 더하지 마라**(이중계상) — 공고가 난
단지는 승인 목록에도 남아 양쪽에 다 잡힌다. 파이프라인 쪽 값이 상위 집합에 가깝다.
| Name | Required | Description | Default |
|---|---|---|---|
| to_ym | No | 조회 창의 **끝** 월, YYYYMM 6자리(기본 from_ym+36개월). months와 같은 축이라 둘 중 하나만 준다 | |
| months | No | from_ym부터 **앞으로 몇 개월**을 볼지 — to_ym 대신 쓰는 간편 인자(예: 24). **뒤로 세지 않는다** — months=12만 주면 from_ym이 이번 달이라 '앞으로 12개월'이 되고, '최근 12개월'을 원했다면 from_ym을 12개월 전으로 함께 줘야 한다. to_ym과 함께 주면 오류다(둘 중 하나만) (허용 범위 1~120) | |
| region | No | **시도만** (예: 서울, 경기, 세종, 부산). ⚠️ 시군구('강남구')는 여기가 아니라 sigungu에 넣어라 — 넣어도 오류가 나지 않고 0건이 온다(realty_supply_pipeline의 region은 시군구·동도 받는다. 두 도구의 계약이 다르다) | |
| from_ym | No | 조회 창의 **시작** 월, YYYYMM 6자리(예: 202508). 생략하면 **이번 달**이라 창이 전부 미래가 된다 — 이 도구의 기본 방향은 '입주 **예정**'이라서다. **'최근 N개월'·'지난해'처럼 지나간 물량을 물었으면 여기를 과거로 줘라**: 최근 12개월 = from_ym='202508' + months=12, 작년 한 해 = from_ym='202501' + months=12. 과거 조회도 그대로 된다(원장은 2020-02 공고분부터) | |
| sigungu | No | 시군구 정확한 이름 (예: 수원시, 강남구) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals behavior that annotations do not cover: the result is a lower-bound settlement based on Cheongahon announcements since 2020-02; announcements typically appear ~30 months before occupancy; and far-future slices are systematically understated. It additionally exposes output semantics such as meta.window_direction, interpretation, and coverage.region_recent_annual_rate, so an agent knows how to interpret the response.
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 long but well structured: each bolded segment carries a distinct and genuinely useful point, such as future-window semantics, lower-bound counting, and follow-up to the pipeline. There is little filler, and the concrete example helps the agent understand the practical stakes, though some steps are dense and could have been tightened further.
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?
Given 5 loose parameters, no output schema, and a data caveat, the description remarkably covers the required output interpretation, delusion-prone pitfall, and follow-up path. An agent can correctly select and use the tool, interpret reading.lower_bound, and decide when to call the pipeline.
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 parameter descriptions already explain from_ym, months, to_ym, region, and sigungu well, including forward/backward timing and mutual exclusivity of months and to_ym. The tool description mainly restates those semantics in prose rather than adding new parameter detail 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 explicitly states the tool's function: it aggregates regional move-in supply by year-month. It answers concrete questions like '입주장 리스크 있어?' and '물량이 얼마나 쏟아져?', and it differentiates itself from realty_supply_pipeline by clarifying that this tool covers announced supply while the pipeline covers approved-but-not-yet-announced supply.
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 clearly identifies when to use the tool, when to switch to realty_supply_pipeline, and when to avoid double-counting: if coverage.region_recent_annual_rate is low relative to the result, the shortage is likely due to announcement timing, not supply cessation. The description also tells the agent not to state 'no risk' when the tool only reports the lower bound.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_nonapt_prices비아파트 시세 — 빌라·오피스텔·단독·토지 (아파트는 이 도구가 아니다)ARead-onlyIdempotentInspect
아파트는 이 도구가 아니다. 빌라(다세대·연립)·오피스텔·단독주택·토지 전용 실거래 매매가 조회다 — 응답 = 최근 거래(recent) + 집계(stats: 표본 수·가격·상위 구성).
질문에 '아파트'가 있으면 여기서 멈추고 아파트 축으로 가라 — 지역·법정동 월별 추이는
realty_region_price_stats, 단지·평형별 시세는 realty_search_complexes, 단지 평형의
건별 내역(계약일·층·가격)은 realty_complex_pyeong_price다. **셋 다 region에
'강남구 대치동'처럼 법정동을 그대로 받는다** — 동 단위로 좁히려고 이 도구로 오지 마라.
property_type 네 값 중 아파트에 가까운 것은 없고, 아무거나 고르면 **응답은 200이고
행도 채워져 나오므로 틀린 줄 모른다**(2026-08-23 PlayMCP QA 실측: '강남구 대치동
아파트 최근 실거래가'에 villa 5건이 아파트로 답해졌다).
**매매 데이터만 있다** — 전월세를 물으면 이 축엔 데이터가 없다고 답하라(추정 금지).
면적 기준: villa/officetel은 전용면적(area_m2·area_pyeong), house는 대지(land_*)와
건물(building_*) 분리, land는 계약면적·지목(land_category)·용도지역(zoning)이 온다.
land의 share_type='지분' 행은 필지 일부 거래라 면적당 가격 비교에 쓰지 말 것(집계는
지분·해제 제외 — 응답 note 참조).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 최근 거래 행 수 (허용 범위 1~30) | |
| region | Yes | 지역명 부분일치 (예: 관악구, 서울특별시 강남구, 강남구 역삼동). **법정동까지 되는 것은 이 도구만이 아니다** — 아파트 축의 realty_region_price_stats·realty_search_complexes도 '강남구 대치동'을 그대로 받는다. 동 단위로 좁히려고 이 도구를 고르지 마라 | |
| area_band | No | 전용면적대로 좁힌다(빌라·오피스텔만 — 단독주택은 전용면적 개념이 없다). 비아파트는 같은 동네에서도 면적 편차가 커서 지역 평균 하나로는 답이 안 된다. 안 넣어도 stats.by_area_band로 밴드별 분포가 온다 | |
| price_max | No | 최대 매매가(만원) | |
| price_min | No | 최소 매매가(만원) | |
| property_type | Yes | villa=다세대·연립(빌라), officetel=오피스텔, house=단독·다가구, land=토지. **이 네 값에 아파트는 없다** — 사용자가 아파트를 물었으면 아무 값이나 고르지 말고 이 도구를 부르지 마라(realty_search_complexes·realty_region_price_stats가 그 자리다). 2026-08-23 실측: '강남구 대치동 아파트 최근 실거래가'가 villa로 와 빌라 5건이 아파트로 답해졌다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, idempotent, and non-destructive behavior, but the description adds serious non-obvious facts: an apartment query can return HTTP 200 with plausible rows when a wrong property_type is selected, land share transactions must not be used for price-per-area comparisons, and different property types have different area and field conventions. This goes well beyond the safety hints.
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 the single most important warning and organized into clear thematic blocks: core purpose, routing instructions, data limitations, and type-specific area semantics. It is dense, but nearly every sentence carries decision-relevant information; the small amount of redundancy with the schema keeps it from a top score.
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?
Given the lack of an output schema and the high conceptual complexity, the description fully explains what the response contains, how each property type handles area, and the notable exclusion rules for share-type land rows. It also gives the agent an explicit script for handling requests outside the data scope, making it complete for safe, correct 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%, so the baseline is 3. The description does add value: it explains that no property_type value corresponds to apartments, that area_band only makes sense for villa/officetel, and that land-specific fields like land_category or zoning are part of the data. Still, much of this is already duplicated inside the schema's parameter descriptions, so it doesn't fully break away from 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 states the exact scope: '빌라(다세대·연립)·오피스텔·단독주택·토지 전용 실거래 매매가 조회' and the response shape '최근 거래 + 집계'. The emphatic '아파트는 이 도구가 아니다' and the explicit naming of sibling tools distinguish it sharply from other realty tools.
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 gives precise routing conditions: if the request contains '아파트', stop and use realty_region_price_stats, realty_search_complexes, or realty_complex_pyeong_price; do not use this tool for dong-level narrowing because sibling tools already accept legal-dong input. It also instructs the agent to answer that no jeonse/wolsae data exists rather than guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_notice_facts모집공고 팩트시트 — 전매제한·자격·층별 분양가·옵션가·중도금ARead-onlyIdempotentInspect
입주자모집공고 원문에서 추출·검증한 팩트시트 — 전매제한·재당첨제한·거주의무· 거주요건, 청약 일정, 층별 분양가표(대지비·건축비·회차별 납부액), 특별공급 배정, 발코니 확장·유상옵션 가격, 중도금 회차 일정, 예비입주자 규칙.
전매제한 기간, 재당첨 제한, 거주의무, 특별공급 자격·배정, 층/타입별 분양가,
발코니 확장비·유상옵션 금액, 중도금 회차와 납부일 — 이 값들을 묻는 질문이 이 도구의
자리다(추정하거나 웹에서 찾을 필요 없이 공고 원문 값이 나온다). 모든 값에 공고 쪽
번호(`p`)가 붙으니 답변에 notice_version(공고 판본)과 쪽 번호를 함께 제시하라.
팩트시트 미추출 공고는 원문 앞쪽(단지 주요정보 표) 텍스트를 unverified_source_text로
준다 — 수치 인용 시 "공고 원문 기준·미검증"을 명시하라. 상세 조항 전문(특공 소득기준,
부적격 처리 등)은 realty_notice_text로 원문 쪽을 직접 읽어라. 여기 없는 값은 지어내지 말 것.
⚠️ 큰 공고는 팩트시트 전체가 도구 결과 한계(64KiB)를 넘는다. 그때 **큰 절부터 떼어**
보내고 `meta.truncated`·`meta.omitted_sections`(절 이름·크기·되부르는 인자)에 그 사실을
적는다 — 뗀 절은 `section='분양가'`처럼 이름을 지정해 전문으로 받아라. **팩트시트에
없다고 공고에 없다고 답하지 마라**(못 봄 ≠ 없음).
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | 단지명 일부 (예: '우미린' — 공백 무관 매칭) | |
| section | No | 팩트시트의 한 절만 전문으로 받는다 (예: '분양가', '공급'). 비우면 전체 — 다만 전체가 도구 결과 한계를 넘으면 큰 절부터 떼어 내고 뗀 절 이름을 meta.omitted_sections에 적는다. 그때 이 인자로 되받아라. | |
| house_manage_no | No | 공고 관리번호 (realty_presale 응답의 house_manage_no) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses p-page citations, notice_version, the unverified_source_text fallback, the 64KiB truncation limit, meta.truncated and meta.omitted_sections behavior, and the '못 봄 ≠ 없음' semantic. This is rich, non-obvious behavior that an agent needs before calling.
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 organized into tool scope, alternate/full-text fallback, risk warning, and truncation semantics, with the most important definition first. It is long but mostly each section earns its place; however, the first and second paragraphs repeat a similar list of fact categories, adding slight redundance.
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?
Despite having no output schema, the description covers the necessary usage context: how to cite results (notice_version, p), how to handle unextracted notices, what to do when results exceed the tool limit, and how to recover omitted portions. That is complete for a read-only, idempotent 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%, so the schema already documents keyword, section, and house_manage_no. The description adds workflow guidance around the truncation case but does not materially add parameter-level meaning beyond the schema, which is the baseline 3 case.
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 concrete resource (입주자모집공고 원문) and a concrete operation (추출·검증한 팩트시트), then enumerates the exact fact categories. It also distinguishes itself from realty_notice_text by stating that full provisions belong to that tool, so an agent can tell them apart.
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 these fact-value questions are the tool's place, that the agent need not estimate or web-search, and that unextracted notices return unverified_source_text. It also gives an explicit alternative: read full clauses via realty_notice_text, and warns not to claim a fact is absent just because it is absent from the fact sheet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_notice_text모집공고 원문 쪽 읽기 — 자격 세부·유의사항 전문ARead-onlyIdempotentInspect
입주자모집공고문 원문을 쪽 단위로 읽는다 — 팩트시트에 없는 세부(특별공급 소득·자산 기준, 부적격 처리, 계약 유의사항, 옵션 품목 상세)는 이 도구로 원문을 직접 확인하라. 표가 있는 쪽은 pdftotext 특성상 정렬이 깨질 수 있다 — 열 해석이 애매하면 단정하지 말 것.
여러 낱말은 AND로 묶인다('가점제 추첨제'→둘 다 있는 쪽). 0쪽이면 막다르지 않고 낱말별
히트 쪽과 부분일치 상위 쪽을 함께 돌려주니 그걸로 좁혀라(match='any'로 넓힐 수도 있다).
**쪽을 모를 땐 pages_only=true로 먼저 훑어라** — 전문은 한 번에 수만 자다.
전문 응답은 최대 6쪽이고, meta.matching_pages에 일치 쪽 전체 목록이 늘 들어 있다.
| Name | Required | Description | Default |
|---|---|---|---|
| match | No | 여러 낱말 처리 — all=모두 포함(기본), any=하나라도 포함(넓게 훑을 때) | all |
| pages | No | 쪽 범위 직접 지정 (예: '1-3', '44'). **query와 택일이며 함께 주면 거절한다**(error='query_and_pages_conflict') — 종전엔 query를 조용히 버렸다. pages와 함께 준 pages_only는 무의미하므로 무시하고 meta.pages_only_ignored로 실토한다 | |
| query | No | 찾을 키워드. 공백으로 나눈 낱말을 모두 포함하는 쪽을 찾는다(AND, 공백 무관 매칭) — 예 '가점제 추첨제', '신혼부부 소득' | |
| pages_only | No | 참이면 본문 없이 일치 쪽 번호+발췌만 준다 — 먼저 이걸로 쪽을 고르고 pages로 좁혀 재호출하면 왕복·토큰이 크게 준다 | |
| house_manage_no | Yes | 공고 관리번호 (realty_presale·realty_notice_facts로 특정) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent, and the description adds substantial behavioral detail: pdftotext table alignment caveat, AND matching across tokens, zero-hit fallback with partial pages, 6-page response cap, always-present meta.matching_pages, and pages/query conflict behavior. No contradiction with annotations.
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?
Dense but efficient Korean description; every sentence earns its place. It front-loads the core purpose and differentiator, then layers workflow, error behavior, and output guarantees in logical order with no filler.
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 no output schema, the description still tells the agent what to expect: page numbers and excerpts in pages_only mode, matching_pages metadata always present, and max 6 pages. Combined with detailed parameter docs, an agent has enough to call and interpret the result 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 meaning beyond schema: zero-hit behavior returns per-word hit pages and partial matches, response is capped at 6 pages, and pages_only together with pages is ignored and confessed. This enriches the agent's understanding without duplicating 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 verb and resource: reads the original recruitment notice text page-by-page. It explicitly positions itself against the fact sheet ('팩트시트에 없는 세부...는 이 도구로'), distinguishing it from realty_notice_facts and making its job unmistakable.
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?
Gives clear when-to-use guidance: use when the fact sheet lacks qualification details, contract cautions, option details. It also provides a concrete workflow (pages_only=true first, then pages) and explains match='any' for broadening. It does not name the sibling alternative explicitly, but the fact-sheet contrast is enough routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_onbid_sale_rate공매 낙찰가율·개찰 결과 통계ARead-onlyIdempotentInspect
공매가 "보통 감정가의 몇 %에 낙찰되나"와 "얼마나 유찰되나"를 실제 개찰 결과로 답한다.
**법원경매의 realty_auction_sale_rate와 같은 이름의 다른 지표다.** 분모가 둘 다
감정가지만 평가 주체·저감 규칙·매물 성격이 달라 **두 %를 한 문장에 섞으면 안 된다**.
"경매 낙찰가율"을 물었으면 어느 쪽인지 확인하라.
**이 축의 자리** — 공매 축 2종 중 통계 쪽이다. 개별 물건과 회차별 최저가는
realty_search_onbid다. 낙찰가율은 재산구분별로 갈라 읽어라(`by_property_type`).
⚠️ **표본은 최근 3개월 개찰분이고, 그중 '낙찰' 건만 낙찰가율에 든다.** 온비드 전체
입찰결과 688,264건 중 우리가 받은 것은 113,673건이고, 그 안에서 낙찰은 3,824건이다
(나머지는 유찰·취소·개찰중). `outcome_mix`가 그 분포이고 여기서 나온 낙찰 비율은
**성립률이지 낙찰가율이 아니다**.
⚠️ **낙찰가율은 원천이 준 값을 그대로 쓴다**(`apslPrcCtrsScfbPrcRto` = 감정가 대비
낙찰가율). 낙찰 3,824건 중 이 값이 있는 것은 2,896건이다 — 나머지는 감정가가 원장에
없는 건이라 **모르는 것이지 0이 아니다**(`ratio_missing`).
⚠️ **평균이 아니라 중앙값을 인용하라.** 지분·산지 물건이 감정가의 386%에 팔린 사례가
실제로 있어(공유자 경합) 평균이 위로 끌린다. `median_pct`가 정본이고 `p25_pct`·
`p75_pct`로 폭을 함께 전하라.
⚠️ **지역은 물건명에서 되찾은 것이다.** 입찰결과 원장에 지역 컬럼이 아예 없어서,
물건 목록과 붙여 보려 했으나 **낙찰 3,824건 중 물건 목록에서 찾아지는 것은 83건
(2.2%)뿐이다** — 물건 목록은 현재 진행분 스냅샷이라 이미 팔린 물건이 빠져 있다.
그래서 물건명 접두의 시도·시군구 표기를 파싱해 쓴다(전체 96.1%·낙찰 90.0%에서 잡힌다).
파싱이 안 된 건은 지역 필터에서 **조용히 빠지므로** 응답의 `region_basis`를 함께 전하라.
| Name | Required | Description | Default |
|---|---|---|---|
| sido | No | 시도. **주의: 결과 원장에는 지역 컬럼이 없다** — 물건명 접두에서 되찾은 값으로 거른다(커버리지는 응답의 region_basis에 실린다). ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라. | |
| sigungu | No | 시군구. 물건명에서 시도 다음 한 토막을 뽑은 것이라 '고양시 덕양구'는 '고양시'로만 잡힌다 — 자치구까지 좁히려면 이 원장으로는 안 된다. | |
| usage_name | No | 용도 부분일치(중·소분류) | |
| property_type | No | 재산구분. **이 축을 빼고 하나의 낙찰가율을 말하면 거의 틀린다** — 실측 중앙값이 압류재산 31.6% vs 국유재산 106.3%로 3배 넘게 갈린다. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, and the description adds substantial beyond-annotation behavior: sample coverage (113,673 of 688,264 bid results, only 3,824 낙찰), missing-value semantics (ratio_missing is unknown, not 0), a documented median-vs-mean distortion (386% outlier from share/forest property), and region reconstructed from item names with silent dropping. These are exactly the traps annotations cannot express.
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 long but front-loaded: purpose first, sibling differentiation second, axis positioning third, then structured ⚠️ warnings each paired with a concrete action ('median_pct가 정본', 'region_basis를 함께 전하라'). The raw population counts could be trimmed, but the density is justified because every warning block maps to a real data-quality trap the agent must relay to the user.
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 no output schema, the description compensates by naming the essential response fields (median_pct, p25_pct, p75_pct, ratio_missing, outcome_mix, region_basis) and the error behavior (sido_ambiguous). It does not enumerate the full response shape, but for a read-only statistics tool whose annotations cover the safety profile, all invocation-critical context is present.
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 schema itself already carries rich warnings (sido '광주' ambiguity, sigungu chunk-parsing limit, property_type's 31.6% vs 106.3% split). The description adds meaning beyond this by instructing the agent to always report region_basis alongside region filters and to treat property_type as the decisive axis. This exceeds the baseline-3 for high coverage, though the schema carries much of the parameter burden.
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+resource: it answers '보통 감정가의 몇 %에 낙찰되나' and '얼마나 유찰되나' using actual 개찰 결과 — a statistics tool for public (Onbid) auction outcomes. It explicitly distinguishes itself from the same-named court-auction metric realty_auction_sale_rate and from the individual-item tool realty_search_onbid, so an agent can disambiguate without opening sibling schemas.
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 directly instructs that when a user asks for '경매 낙찰가율', the agent must check which side is meant (court vs public auction), naming realty_auction_sale_rate as the alternative. It further routes individual items/minimum prices to realty_search_onbid and tells the agent to read the rate by property_type and cite the median — explicit when, how, and when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_poi_nearby[유료] 주변 입지 분석ARead-onlyIdempotentInspect
[유료] 좌표 주변의 지하철·학교·병원·마트 등 입지 요소를 거리순으로 조회한다.
단지 좌표는 realty_complex_report가 준다. "역세권인가", "초품아인가" 판단용.
단지의 학군·교통 **점수**만 필요하면 무료 realty_location_scores로 충분하다 —
이 도구는 실제 시설 목록·거리를 셀 때 쓴다.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | 위도 — realty_complex_report의 latitude를 쓰라 | |
| lng | Yes | 경도 | |
| poi_type | No | subway | hospital | school — 쉼표로 조합 가능(예: 'subway,school'), 비우면 전체. 이 3종만 좌표 검색을 지원한다(마트·약국 등은 지역 통계 realty_poi_stats로) | |
| radius_m | No | 반경(미터) (허용 범위 100~3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint, idempotentHint, non-destructive), so the bar is lower. The description adds context beyond them: the paid ([유료]) nature of the call, the distance-sorted behavior, and the coordinate-search scope limited to 3 POI types. It does not describe the return shape, but there is no contradiction with annotations — behavioral coverage is solid.
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 dense sentences with front-loaded purpose, then the input-source note, then a bolded decision rule ('**점수**만 필요하면... 이 도구는 실제 시설 목록·거리를 셀 때'). Every sentence earns its place; no filler or restatement of schema contents.
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 4-parameter, read-only, fully schema-documented lookup, the description covers the essentials: what it returns (facility list by distance), when to use vs. realty_location_scores, and cost. The only gaps are the exact response structure (no output schema exists) and a minor internal wobble where '마트' appears in the description though coordinate search only supports 3 types — the schema's poi_type description promptly resolves the latter.
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 every parameter is already well documented in the schema: lat points to realty_complex_report.latitude, lng is self-explanatory, poi_type lists the allowed tokens ('subway,school'), the default, and the regional-stats fallback, and radius_m carries default/min/max. With the schema doing the heavy lifting, the description adds little extra parameter meaning, 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 description states a specific verb and resource: '좌표 주변의 지하철·학교·병원·마트 등 입지 요소를 거리순으로 조회한다' — a coordinate-based facility lookup ordered by distance. It also names what it is not via the sibling realty_location_scores (scores verdict) and realty_poi_stats (regional stats), so an agent can discriminate without opening either 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?
Decision guidance is explicit: '단지의 학군·교통 **점수**만 필요하면 무료 realty_location_scores로 충분하다 — 이 도구는 실제 시설 목록·거리를 셀 때 쓴다'. The poi_type schema description also routes non-supportable types (마트·약국) to realty_poi_stats, and the description names the input source ('단지 좌표는 realty_complex_report가 준다'). This is exemplary when-to-use vs. alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_poi_stats[유료] 지역별 인프라 통계ARead-onlyIdempotentInspect
[유료] 시군구별 병원·학교·지하철역 개수 통계를 조회한다. 지역 간 인프라 비교용.
지역 키는 '시도축약 시군구' 2토큰이다(예: '서울 마포구', 세종은 1토큰). 병원·지하철은
수집 범위가 수도권·광역시 중심이라 지방 시군구는 0으로 나올 수 있다 — 0을 "없다"로
단정하지 말고 수집 범위 밖일 수 있다고 말하라.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | (허용 범위 1~50) | |
| region | No | 지역명 접두 일치 (예: 서울, 서울 마포구, 마포구). 비우면 전국 전체 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint), the description discloses a critical behavioral nuance: coverage is limited to Seoul/metropolitan areas, so zero values may mean 'not collected' rather than 'absent'. This prevents a serious misinterpretation of the data.
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 compact and front-loaded: the core function is stated first, followed by essential formatting and data-coverage caveats. Every sentence adds value without redundancy.
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?
Given there is no output schema, the description adequately describes what is returned (counts of hospitals, schools, subway stations) and the region key format. The coverage caveat prevents downstream misinterpretation, making the tool's behavior well-understood for an agent.
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?
The schema already documents both parameters, and the description adds valuable semantics for the region format: '시도축약 시군구' 2-token with a special case for Sejong. This goes beyond the schema's generic 'prefix match' description, guiding correct invocation.
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 uses a specific verb ('조회한다') and a precise resource ('시군구별 병원·학교·지하철역 개수 통계'), and adds the purpose '지역 간 인프라 비교용', making it distinguishable from siblings like realty_poi_nearby or realty_region_price_stats.
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 clearly states the intended use case: region-level infrastructure comparison. It does not explicitly name alternative tools or exclusion conditions, but the context is strong enough for an agent to select it when infrastructure counts are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_policy_rules법령·규제 규범 — 세율표·규제지역·대출·임대차·청약·정비사업 규칙ARead-onlyIdempotentInspect
단지에 종속되지 않는 일반 규범을 근거 조문·확인일과 함께 준다 — 취득세율표, 규제지역 현재 지정 현황, 주담대 규제 원표, 개인회생×대출, 주택임대차 갱신(갱신권· 5% 상한·매수인 실거주 거절), 양도세(세율·필요경비·중과·개편 계류), 청약통장·가점 배점표, 정비구역 요건·조합원 지위양도, 재개발 분양자격 갈림길(서울). "취득세 얼마야?", "갱신권 썼는데 집주인이 팔면?", "지금 팔면 중과야?"류 질문의 자리다. 특정 조건의 상한 계산은 realty_loan_limit, 가점 점수 계산은 realty_subscription_score, 비례율·분담금 계산은 realty_redevelopment_burden, 양도세 시나리오 계산은 realty_capital_gains_tax, 조합원 지위양도 가능 판정은 realty_member_transfer_check — 이 표가 그 계산기들의 진실원이다.
클라이언트에 세율을 하드코딩하지 마라 — "85㎡ 이하 1.1%"는 6억 이하일 때만 맞고,
9억 초과에 그대로 쓰면 수천만원 틀린다(실측: 16.9억 84타입에서 3,700만원 차).
**판정은 하지 않는다**: "이 사람이 1주택인가"는 분양권·상속지분·일시적 2주택 특례가
얽힌 사실판단이다 — 표의 applicable_if·exceptions를 보고 사용자에게 확인 질문을
던져라. 개별 공고의 규제 플래그(공고일 스냅샷)는 realty_presale, 공고 원문 값은
realty_notice_facts, 이 표를 써서 총 소요자금까지 계산하는 건 realty_presale_cost.
응답의 uncertainties(확인 못 한 것)와 disclaimer를 함께 전하라.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | **자유문으로 토픽을 찾는다** — 어느 topic인지 모를 때 사용자 말을 그대로 넣어라(예: '종부세 얼마부터 내요'→topic='comprehensive_real_estate_tax', '부모님이 보태주는 돈'→topic='gift_tax_and_funding_source', '전입은 빠른데 확정일자가 늦으면'→topic='auction_rights'). 이름 25개를 외워 고르는 대신 이걸 쓰면 된다. topic 없이 query만 주면 **후보 토픽 목록**이 오고, 후보가 하나면 그 토픽 본문까지 함께 온다. topic과 함께 주면 그 토픽을 그대로 주되 다른 후보가 있으면 알려준다. **아무것도 안 걸리면 지어내지 않고 0건이라고 답한다** — 그때는 이 서버에 그 축이 없는 것이니 표를 추측하지 마라 | |
| topic | No | **어느 표를 볼지 고른다 — 사용자가 쓰는 말로 찾아라.** axes=상품별 차이·6·27이 뭐에 걸리나·DSR 6축·수도권/규제지역 축 | **횡단 사실의 진실원**(6·27 상품별 적용·DSR 6축·수도권/규제지역·세대/인별/물건 기준 충돌). '어느 상품이 뭐가 다른가'류는 여기부터 — 상품 토픽과 어긋나면 이 표가 맞다, acquisition_tax=취득세·취득세율·다주택 중과·농특세·지방교육세·생애최초 감면 | 취득세율표(표준 구간·중과·부가세목·예외/특례·과표 논점·취득시기), regulated_area=규제지역·조정대상지역·투기과열지구·분양가상한제·토지거래허가 | **현재** 지정 현황, loan_rules=주담대·LTV·DSR·대출한도·스트레스 금리·생애최초 | 주담대 규제 원표(LTV·가액구간 한도·만기·DSR·스트레스 금리·생애최초 절차) — 조건별 판정·계산은 realty_loan_limit, credit_rehab=개인회생·신용회복·면책·공공정보 등록 | 개인회생×신용·대출 규칙 — 공공정보 등록·조기삭제(1년 성실변제, 2025-07)·면책, 기산점(개시≠인가) 함정, lease_rules=전월세·임대차·계약갱신청구권·5% 상한·묵시적 갱신·집주인 실거주 | 주택임대차 갱신 — 갱신요구권(행사기간·거절사유·1회 2년)·5% 증액상한·갱신 후 해지권(3개월)·매수인 실거주 거절 판례(2021다266631), auction_rights=경매 권리분석·말소기준권리·대항력·확정일자·최우선변제·배당요구 | 민사집행법 91조 인수/소멸·주임법 대항력·우선변제권·배당요구·배당순위 — '낙찰받으면 보증금 물어주나'가 여기다. **판정은 안 한다**, 금액표는 realty_small_deposit_check, capital_gains_tax=양도세·양도소득세·세율표·장특공제·필요경비·다주택 중과·이월과세·양도세 신고·신고기한·예정신고·확정신고·기한후신고·가산세·분납·지방소득세 신고 | 세율표·필요경비 자본적/수익적 분류·중과 현황·2026 개편 계류 + **신고·납부 기한과 가산세**(예정 2개월·확정 5월·지방소득세 +2개월·분납·감면·비과세면 신고 의무가 없는가) — 세액 계산은 realty_capital_gains_tax, **비과세 갈림길은 one_home_exemption_map**, subscription_account=청약통장·청약 가점·배점표·납입 인정·예치금 전환 | 청약통장·가점 규칙(배점표 84점·기산 함정·월 25만원 인정·미납/선납·예부금 전환 2026-09-30 한시) — 점수 계산은 realty_subscription_score, redevelopment_rules=정비구역 지정·노후도 요건·조합원 지위양도·비례율·재건축진단 | 재개발·재건축 — 노후도 60%·서울 조례 지표·39조 지위양도 제한과 예외·비례율 산식. 지위양도 가능 판정은 realty_member_transfer_check, redevelopment_entitlement=재개발 입주권·분양자격·권리산정기준일·뚜껑·도로 지분 | 재개발 분양자격 갈림길 지도(서울 한정) — 5경로·권리산정기준일 3층 경계·확인 체크리스트. 판정은 안 한다, remodeling_rules=리모델링 조합·15년 연한·수직증축·1기 신도시·증축 한도 | 공동주택 리모델링(**주택법** — 도시정비법과 별개 법제): 전용 85㎡ 미만 40%/이상 30%·세대수 15%·수직증축·39조 적용 밖·1기 신도시 특례. redevelopment_rules와 섞으면 오답, one_home_exemption_map=1세대1주택 비과세·2년 보유·2년 거주·12억·일시적 2주택·상속주택·동거봉양·상생임대 | **양도세 비과세 갈림길 지도** — 5관문·5경로+확인 체크리스트. **판정은 안 하지만 무엇을 확인해야 하는지는 다 있다** — 비과세 가능성이 보이면 세무사로 보내기 전에 여기다, comprehensive_real_estate_tax=종부세·종합부동산세·공시가격 문턱·공동명의·보유세 | **종부세 과세 문턱과 명의 축** — 인별 과세라 단독/공동명의가 갈리는 자리. 공시가 기준 문턱·공동명의 특례·2026 개편안(계류). **세액 계산은 안 한다**, gift_tax_and_funding_source=증여세·자금출처·자금출처조사·부모님이 보태주는 돈·차용증·공동명의 지분 | 증여재산공제 문턱 + 소명 — 10년 합산·배우자 6억·직계존속 5천만·혼인출산 1억 통합한도·지분≠기여도면 증여. **세액 계산·절세 설계는 안 한다**, property_tax=재산세·6월 1일 기준일·공시가격 과세표준·보유세 | **재산세(주택분) 구조·기준일·명의 축** — **물건별 과세라 공동명의여도 총액이 같다**(종부세와 반대). 6월 1일 기준일 함정·1주택 특례(2026 일몰). **계산은 안 한다**, jeonse_loan_rules=전세자금대출·버팀목·전세대출 DSR·중소기업 청년 전세 | 자격 + DSR 취급 — 구입자금과 다른 상품군이라 loan_rules 표를 갖다 쓰면 오답. **원금이 DSR에 안 잡히고 이자만**(정책분은 아예 제외). 한도 계산은 안 한다, interim_collective_loan=중도금대출·집단대출·잔금대출 전환·이자후불제 | **분양 중도금(집단)대출 구조·DSR·6억 한도 취급** — 중도금은 DSR 밖이지만 **다른 대출을 받을 땐 내 DSR에 잡히고, 잔금 전환 시 DSR·6억 한도가 걸린다**(계약 통과≠잔금 통과), living_expense_mortgage=생활안정자금·생활자금 대출·보유 주택 담보(구입 아님) | 이미 가진 집을 담보로 — **구입 목적이 아니다**. 수도권·규제지역 **1주택 1억 한도(기존분 합산)·다주택 전면 금지**, DSR은 구입자금과 똑같이 걸린다, jeonse_return_mortgage=전세퇴거자금·전세보증금 반환 대출·세입자 내보낼 돈 | 원칙 1억이지만 **6·27 이전 임대차계약 + 소유권 취득분은 경과조치로 초과 가능**(LTV 70%). 경과조치는 **DSR 예외가 아니다**, auction_balance_loan=경락잔금대출·낙찰 잔금·대금지급기한 | **경락잔금대출**(경매 낙찰 잔금) — 대금지급기한에 대출 실행이 묶이는 구조. 방공제·MCI는 room_deduction_and_mci, funding_plan_report=자금조달계획서·입주계획서·증빙·30일 기한 | **주택취득자금 조달 및 입주계획서** — 제출 대상·증빙·30일 기한과 가족 차용을 적을 때 걸리는 자리, room_deduction_and_mci=방공제·MCI·MCG·실제 대출가능액이 깎이는 이유 | **방공제·MCI/MCG**(매매·경매 공통) — 규제 상한과 별개로 실제 대출가능액을 깎는 구조. 'MCI 되면 4.3억, 안 되면 3.9억'류와 '왜 계약 전에 확정을 못 해주나'의 근거, unit_alteration_rules=내력벽 철거·벽 헐기·욕실 이동·인테리어 허가·층상배관 | 이 집을 내 마음대로 고칠 수 있나 — 내력벽 철거 가부('2016년 유예로 허용'은 통설이고 조문이 깬다)·행위허가 동의율·경미한 행위·층상/층하 배관. 단지별 값은 realty_remodel_feasibility, list=제공 항목 안내(토픽 목차) | list |
| section | No | **토픽의 하위 항목만 골라 받는다** — 미지정이면 종전과 같이 토픽 전체가 온다. 큰 토픽(auction_rights·unit_alteration_rules·loan_rules)에서 필요한 축만 집을 때 쓴다. 예: topic='auction_rights', section='assumed_regardless_of_rank' → 순위 무관 인수(유치권·법정지상권)만. 쉼표로 여러 개(section='tenant_opposing_power,tenant_priority_payment')도 된다. **없는 이름을 주면 조용히 무시하지 않고 거절하며 유효 목록을 값으로 돌려준다** — 이름을 모르면 section 없이 한 번 부르면 응답 meta.sections_available에 전 목록이 있다. topic='list'에는 하위 항목이 없다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, openWorldHint=true, idempotentHint=true) are consistent with the description — no contradiction. Beyond annotations, the description discloses substantial behavior: the no-determination rule with a directive to ask confirming questions, the no-hallucination rule ('0건이라고 답한다... 표를 추측하지 마라') which operationalizes openWorldHint, a hardcoding anti-pattern warning quantified with a measured 3,700만원 error, and a mandatory output requirement to deliver uncertainties and disclaimer.
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?
Despite being long, the description has zero filler: paragraph 1 establishes identity plus five routing rules, paragraph 2 adds a concrete correctness warning with a measured error, paragraph 3 covers no-determination behavior plus three more routing rules and output delivery. It is front-loaded with the core identity (general norms, citations, confirmation date), and every sentence carries a distinct job proportionate to the tool's complexity.
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?
Complete for the selection and invocation decision: what it covers, when not to use it, how to route calculations, and how to behave when no topic matches. It references table fields (applicable_if, exceptions), meta data (sections_available in schema), and output requirements (uncertainties, disclaimer). The only gap: with no output schema present, the description never fully specifies the response anatomy of a returned topic, leaving the agent to infer the exact return shape.
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%, with each of the 25 topic enum values carrying its own dense Korean description plus detailed query and section semantics, so the baseline of 3 applies. The tool-level description adds only marginal parameter framing (example user questions mapping to query usage); the schema itself does the heavy lifting for parameter understanding.
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 states a specific verb+resource: it provides general legal/regulatory norms (세율표, 규제지역, 대출, 임대차, 청약, 정비사업) tied to citations and confirmation dates, explicitly scoped as '단지에 종속되지 않는 일반 규범'. It anchors with concrete user questions ('취득세 얼마야?', '지금 팔면 중과야?') and sharply distinguishes itself from calculator siblings by declaring '이 표가 그 계산기들의 진실원이다'.
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?
Explicit when/when-not guidance with named alternatives: five calculators (realty_loan_limit, realty_subscription_score, realty_redevelopment_burden, realty_capital_gains_tax, realty_member_transfer_check) are each assigned their exact role, plus realty_presale, realty_notice_facts, and realty_presale_cost for notice-specific data. It also states the exclusion rule — factual determinations like 1주택 여부 must be handled by asking the user confirming questions, not answered here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_predict_price[유료] 단지 가격 예측 (XGBoost)ARead-onlyIdempotentInspect
[유료] 단지의 다음 달 평균 매매가를 평형대별로 예측한다 (XGBoost v4_clean).
complex_name 또는 complex_key 중 하나는 필수. 동명 단지가 여러 지역에 있으면
먼저 realty_complex_report로 단지를 특정한 뒤 complex_key로 호출하라.
예측 지평은 1개월(익월) 고정 — 그 너머는 모델이 검증되지 않아 제공하지 않는다.
커버리지 밖은 정직하게 거절된다(지어내지 않음) — ①최근 3개월 내 월 거래 3건 미만이거나
②과거 거래 이력이 없는 신축 첫 달(모델이 지역·평형 평균을 토해 2~4배 틀린다, 실측).
예측이 없을 뿐 시세 데이터는 있으니 그때는 실거래 도구로 답하라.
응답 predictions[].caution이 있으면 반드시 함께 전달하라 — 예측 대상이 '익월에 거래된
매물들의 평균가'라, 시세가 그대로여도 거래 구성이 바뀌면 흔들린다(실측 16.3%가 ±10% 초과).
응답의 as_of_ym(기준월)·disclaimer(검증 MAPE)를 사용자 답변에 반드시 함께 전달하라 —
예측은 참고 지표이지 투자 보장이 아니다.
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | (구버전 호환) 예측 지평은 1개월 고정 — 이 값은 무시되고 응답이 그 사실을 실토한다 (허용 범위 1~12) | |
| complex_key | No | 정확한 단지 키 — realty_complex_report가 돌려주는 complex_key | |
| complex_name | No | 단지명 (예: 반포자이) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description goes further: discloses fixed 1-month horizon, explicitly admits out-of-coverage rejection rather than fabrication, provides failure-rate evidence (16.3% exceed ±10%), and transparently warns about response fields like caution, as_of_ym, and disclaimer. No contradiction with annotations.
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?
Highly informative but tightly written; every sentence carries concrete operational or cautionary value. Key facts (essential parameter, sibling for disambiguation, coverage boundaries, pass-through of warnings) are front-loaded and no filler is present.
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?
Complete for a predictive tool with rich annotations and full schema coverage. The description covers required inputs, disambiguation workflow, model limitations, fallback behavior, and response-field obligations, leaving little an agent needs to infer.
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 each parameter. The description adds value by explaining the months parameter is a legacy compatibility field that is ignored and that the API itself 'confesses' this in its response. But it adds no new syntax or format details beyond that; baseline 3 is appropriate.
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 states a specific verb ('predicts'), a precise resource ('next month's average sale price by pyeong type'), and the model (XGBoost). It clearly differentiates from siblings like realty_complex_pyeong_price by focusing on predictive output, not current market data.
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?
Explicitly states when to use (requires complex_name or complex_key), how to resolve ambiguity (use realty_complex_report first), and when not to use (coverage gaps, insufficient transaction data), while pointing to alternative tools for market data. This exceeds the minimum viable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_presale청약 분양 공고ARead-onlyIdempotentInspect
아파트 청약(분양) 공고를 조회한다 — 분양가·청약 접수 일정·당첨자 발표일·입주 예정·위치. "다음 달 청약 넣을 만한 데 있어?", "○○에 분양하는 아파트 있어?"류 질문용.
**"오늘/지금 접수 가능한 청약"은 status='접수중'이다.** upcoming=true는 접수 **시작 전**만
주므로 그 질문에 쓰면 정확히 **오늘 못 넣는 공고들**을 받는다(2026-08-22 실사고: 접수가
이틀 뒤 시작하는 공고를 "현재 접수 가능"으로 답했다). 행마다 오늘 기준 판정
`apply_status`(접수중/접수예정/접수마감/일정미상)와 `apply_status_text`가 붙고, 그 기준일은
meta.today다 — **날짜를 직접 비교해 상태를 다시 판정하지 말고 이 값을 그대로 전하라.**
"넣을 만해?/적정가야?"까지 물으면 이어서 realty_presale_vs_market으로 분양가를
실거래 시세와 대조하라(응답의 house_manage_no가 그 도구의 입력이다).
price_min/price_max는 주택형별 분양 최고가의 최소·최대(만원)다 — 한 공고에 여러
주택형(house_type_count)이 있다. 청약 자격·순위 요건은 이 데이터에 없다(지어내지 말 것).
경쟁률·당첨 가점 커트라인은 realty_subscription_odds 도구에 있다.
무순위(줍줍)·취소재공급이 돈 공고에는 `unsold_history`(회차·세대)가 붙는다 — 접수
경쟁률이 높아도 무순위가 돌았다면 "당첨 후 계약이 안 된" 시장이다. 없다고 이력이
없던 건 아니다(meta.unsold_note의 연결 한계 참조). 같은 지역 공고들의 분양가가
올라온 추이("기다림의 비용")는 realty_presale_price_trend.
규제지역 플래그: speculation_zone(투기과열지구)·adjustment_area(조정대상지역)·
price_cap_applied(분양가상한제), Y/N — **모집공고일(announced_on) 기준 스냅샷**이라
이후 지정·해제가 바뀔 수 있다. "현재 규제지역"으로 단정하지 말고 공고일과 함께 전하라.
전매제한·거주의무 기간은 이 데이터에 없다(플래그에서 유추 금지) —
realty_notice_facts가 공고 원문 값을 쪽 번호와 함께 준다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 공고 수 — 주택형별 분양가·순위별 일정이 붙어 행이 무겁다. 요청분을 다 실으면 응답이 크기 상한을 넘는 경우 **실제 반환 수를 줄이고 meta.size_capped**에 총계·좁혀 부르는 법을 값으로 싣는다 — 조용히 자르지 않는다 (허용 범위 1~50) | |
| region | No | 시도 (예: 서울, 경기, 세종, 부산) | |
| status | No | 오늘(KST) 기준 접수 상태로 거른다. **'오늘/지금 접수 가능한', '지금 넣을 수 있는' 질문은 '접수중'이다** — '접수예정'은 아직 못 넣는 것들이다. '다음 달 청약'처럼 앞으로를 묻는 질문만 '접수예정'. 기본 '전체'. | 전체 |
| keyword | No | 단지명·공급 주소 부분일치 (예: '우미린', '5-2생활권', '다솜동') — 생활권·동 단위 질의는 이걸로 | |
| sigungu | No | 시군구 정확한 이름 (예: 수원시, 강남구). ⚠️세종은 이 필드가 동·생활권·도로명으로 오염돼 있으니 쓰지 말고 keyword를 쓰라 | |
| upcoming | No | ⚠️True면 접수 **시작 전**(시작일이 오늘 이후) 공고만 — **오늘 접수 가능한 공고는 여기 없다**. 오늘 넣을 수 있는 것을 찾는다면 status='접수중'을 써라. status와 함께 쓰지 말 것(status가 이것을 대체한다). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only/idempotent/non-destrictive, and the description adds substantial caveats beyond that: apply_status is pre-computed against meta.today and must be passed through rather than re-derived from dates; regulation flags are a snapshot as of announced_on and must not be presented as current; qualification/priority and resale-restriction data are intentionally absent and must not be invented or inferred; unsold_history absence is not evidence that no unsold occurred. No statement contradicts the annotations.
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 long but front-loads the most danerous usage error (upcoming vs status='접수중') and each paragraph covers a distinct pitfall or sibling distinction, with no filler sentences. It loses a point because some status/upcoming caveats are repeated from the parameter schema and output-field explanations add length that would normally live in an output schema.
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 tool with no output schema, the description covers what the tool returns (apply_status, meta.today, unsold_history, regulation flags), what it deliberately lacks (qualifications, resale restrictions), and how to route each follow-up intent to the correct sibling tool. The only minor omission is a concrete call example, which is not critical given the already-rich parameter 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 100%, so the baseline is 3; all six input params are already thoroughly documented in the schema, including the status/upcoming pitfall. The description mostly reinforces those warnings (e.g., '오늘/지금 접수가능한 청약'은 status='접수중') rather than adding genuinely new parameter-level meaning. It does add useful non-parameter context like price_min/max being across housing types and the size_capped behavior, but those relate more to output interpretation than to input semantics.
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 the exact resource '아파트 청약(분양) 공고' and the specific verb '조회한다' (retrieves), and enumerates key fields (분양가·청약 접수 일정·당첨자 발표일·입주 예정·위치). It also distinguishes itself from siblings by explicitly naming realty_presale_vs_market, realty_subscription_odds, realty_presale_price_trend, and realty_notice_facts for different facets of presale data.
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?
Gives explicit question patterns that should trigger this tool ('다음 달 청약 넣을 만한 데 있어?', '○○에 분양하는 아파트 있어?') and explicit exclusions: '오늘/지금 접수 가능' 질문은 status='접수중'이지 upcoming=true가 아니며, real incident 2026-08-22를 근거로 든다. It also routes follow-up intents to specific siblings — realty_presale_vs_market for price comparison, realty_subscription_odds for competition rate/qualification, realty_notice_facts for resale restrictions, realty_presale_price_trend for regional price trends.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_presale_context분양 공고 견주기 — 같은 시군구·평형 공고들과의 5축 비교(공고 원문 축)ARead-onlyIdempotentInspect
이 분양 공고를 같은 시군구·같은 평형 공고들과 견줘 읽는다 — 청약홈 API에 없고 공고문 원문에만 있는 5축으로: ①대지비 비중(분양가에서 땅값이 얼마인가) ②유상옵션 (사실상 필수인 발코니확장 절대금액) ③중도금 무이자 여부와 회차 ④층 프리미엄(최저 층구간 대비 최상 층구간) ⑤㎡당 분양가(전용면적 기준).
"이 분양가가 비싼가"는 실거래 대조만으로는 반쪽이다 — 같은 값이라도 대지비 비중이
70%인 공고와 25%인 공고는 다른 물건이고, 발코니확장 3천만원은 광고 분양가에 안 잡힌다.
공고를 지정하면 그 공고의 5축 값과 **분포에서의 위치(percentile)**를 주고, 지정하지
않으면 시군구·평형 슬라이스의 분포만 준다.
읽는 법(그대로 지켜야 값이 거짓이 되지 않는다):
· **셀 표본이 3건 미만이면 분위를 안 낸다** — 그때 `verdict`가 '표본 부족'이고,
그것이 답이다. **시도 값(background)으로 갈아타지 마라**(D-2026W33-40).
· **연도를 자르지 않은 시계열을 그리지 마라** — 팩트시트 커버율이 연도마다 20배 이상
갈린다(meta.coverage.by_year). 연도 간 분양가 추이는 realty_presale_price_trend다.
· 중도금 `unknown`은 '이자 있음'이 아니라 '판정 못 했다'다(n_known/n_unknown이 갈려 있다).
· ㎡당 분양가는 **전용면적** 기준이라 공급면적 평당가와 같은 축에 놓으면 안 된다.
이 축의 자리: 개별 공고의 값 자체(전매제한·자격·층별 표 전문)는 realty_notice_facts,
원문 조항은 realty_notice_text, 분양가 대 실거래 적정성은 realty_presale_vs_market,
연도별 분양가 추이는 realty_presale_price_trend — 이 도구는 **공고끼리의 횡단면**이다.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | 시도 (예: 경기, 서울, 경남). **시도 분포는 배경일 뿐 결론 근거가 아니다**(D-2026W33-40) — 결론은 시군구·평형대 셀에서 읽어라 | |
| keyword | No | 단지명 일부 (예: '우미린' — 공백 무관 매칭). house_manage_no와 택일이며 여럿이면 후보 목록을 돌려준다 | |
| sigungu | No | 시군구를 원장 어휘 그대로 (예: '천안시 서북구', '평택시', '서울 동작구' — 특별·광역시는 '서울 동작구'처럼 시도 접두가 붙는다). 공고를 지정하지 않고 그 지역 분포만 볼 때 쓴다 | |
| house_manage_no | No | 공고 관리번호 (realty_presale·realty_notice_facts 응답의 house_manage_no, 예 '2026000383') | |
| exclusive_m2_max | No | 전용면적 상한(㎡) — 국평만 보려면 85 | |
| exclusive_m2_min | No | 전용면적 하한(㎡) — 국평만 보려면 80. 지정하면 모든 셀에 같은 필터가 걸린다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it read-only, idempotent, non-destructive, and open-world. The description adds behavioral context such as '표본 부족' verdicts and how missing data is reported, but it doesn't explicitly describe what happens in edge cases like multiple keyword matches (beyond saying candidates list is returned) or zero matches. Overall it provides some added transparency consistent with the open-world and read-only hints.
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 fairly long but every sentence earns its place: it explains the five axes, the danger of misreading the data, the exact reading rules, and positions the tool among its siblings. The only minor dent is its length and the slight repetition of the five-axis list toward the end.
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 no-output-schema tool with 6 parameters and no required parameters, the description is remarkably complete. It explains what output to expect (five-axis values and percentiles, or distribution only if no notice is given), what the verdict means, and where to find alternative tools for neighboring questions. Nothing essential is missing.
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 baseline is 3. Every parameter has a functional description. The tool's description text reinforces how parameters interact (e.g., '지정하면 모든 셀에 같은 필터가 걸린다' for exclusive_m2_min/max), but description-level semantics mostly mirror the schema descriptions.
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 identifies the tool as a comparative analysis of presale notices across five axes (land cost ratio, optional balcony expansion, mid-term loan interest, floor premium, and per-㎡ price). However, unlike the high-water mark of sibling tools like get_calls, it doesn't explicitly name which sibling it is NOT; instead it lists sibling alternatives only at the end, leaving some differentiation implicit.
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 goes beyond merely stating when to use it and provides explicit 'how to read' rules — including when NOT to substitute background data (D-2026W33-40), when not to plot yearly time series (meta.coverage.by_year), how to interpret 'unknown' mid-term loan values, and a caution about per-㎡ price being based on exclusive area. This is outstanding guidance compared to most definitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_presale_cost분양 총 소요자금 계산 — 중도금 이자·취득세·층별 총액ARead-onlyIdempotentInspect
공고 원문(팩트시트) 기반 결정론 계산: 층별 분양가 + 발코니 확장비 + 회차별 중도금 이자(일할) + 취득세(표준세율) = 층별 총 소요자금. "이 분양 실제로 얼마 드나"의 자리다 — 클라이언트마다 손계산하면 입주일 가정 하나로 백만원대가 갈린다(실측 124만원).
경계(신고 #43의 선 그대로): 여기까지가 "공고+세법에서 결정론적으로 나오는 것"이다.
월 상환액·매수 vs 전세 손익분기는 개인 파라미터가 지배하므로 계산하지 않는다 — 전세
시세는 realty_complex_rent_by_pyeong으로 받아 클라이언트가 개인 가정을 얹어라.
자기자금·차주 조건을 **선언**받아 필요 대출액과 규제 상한 통과까지 판정하는 건
realty_presale_funding_plan이 한다. 세율표 자체는 realty_policy_rules가 근거 조문과 함께 준다(중과·감면 등
이 계산이 가정으로 제친 것들이 거기 있다 — assumptions를 반드시 사용자에게 전하라).
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | 단지명 일부 (공백 무관) | |
| house_ty | No | 주택형 (예: '59', '84B') — 생략 시 공고의 주택형 목록을 돌려준다 | |
| movein_ym | No | 입주 년월 YYYYMM 덮어쓰기 — 공고에 입주예정이 없거나 다른 가정을 쓸 때 | |
| mid_rate_pct | No | 중도금 대출 연이율 %(기본 5.0 — 실제 금리는 공고·은행마다 다르다) (허용 범위 0 초과~20) | |
| house_manage_no | No | 공고 관리번호 (realty_presale의 house_manage_no) | |
| extra_options_krw | No | 발코니 외 유상옵션 합계(원) — realty_notice_facts의 옵션가에서 골라 넣어라 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say readOnlyHint, idempotentHint, and non-destructive, so the bar is lower. The description adds meaning beyond those: it is a deterministic calculation, based on specific assumptions, using standard tax rates, and it warns the agent that those assumptions must be conveyed to the user. It also reveals that even the move-in date assumption can change the result by about 1.24M KRW. No contradiction with annotations.
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 well-structured and front-loaded: the first sentence gives the exact formula, the second sentence states the user-facing purpose, and the following sentences give necessary boundary conditions and routing. Each part earns its place without redundant text.
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?
Even without an output schema, the description makes expected output shape clear (“층별 총 소요자금”), enumerates all components that feed into the calculation, and defines the tool’s exact scope. It also conveys key assumptions to pass back to the user, which is essential for correct tool usage.
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?
All 6 input parameters have full descriptions in the schema, so the schema does most of the work and the baseline is 3. The description adds high-level formula context but does not map each parameter to the formula or clarify which parameters interact. That is sufficient, but not beyond the baseline.
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 states a precise, deterministic computation: floor-level price + balcony expansion cost + interim loan interest + acquisition tax = total cost. It frames the tool as the place to answer “이 분양 실제로 얼마 드나” and distinguishes itself from sibling tools by explicitly naming the boundaries and not claiming to cover monthly payments or funding plans.
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 gives unusually explicit selection guidance: states what the tool does NOT compute (monthly repayments, buy vs. rent decisions), and directly routes the user to realty_complex_rent_by_pyeong for rent prices, realty_presale_funding_plan for funding-plan judgment, and realty_policy_rules for the full tax-rate table. This makes it easy for an agent to choose the right sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_presale_funding_plan분양 자금 흐름 판정 — 계약금·중도금·잔금 시점별 필요액 × 대출 규제 상한ARead-onlyIdempotentInspect
공고 하나에 대해 **"내 자기자금으로 닫히는가"**를 결정론으로 판정한다 — 시점별 (계약금→중도금 회차→잔금) 필요액, 잔금 시점의 필요 대출액, 그 대출이 규제 상한 (LTV·가액구간 한도·DSR — realty_loan_limit과 같은 엔진) 안에 드는지, 부족하면 얼마가 부족한지. "이 분양 당첨되면 진행 가능해?"류 질문의 자리다.
경계: ① 차주 유형·소득은 **선언**이다(서버는 판정하지 않는다). ② 판정은 **현행
규제·현재 자기자금 기준**이다 — 잔금 시점(수년 뒤)의 규제·금리·저축 증가는 반영하지
않으며 그 사실을 assumptions에 싣는다. ③ 승인·확약이 아니다. ④ 저축 계획·갈아타기
전략·매수 적정성 판단은 이 도구 밖이다 — 시세 비교는 realty_presale_vs_market,
규칙 원표는 realty_policy_rules. 응답의 assumptions·uncertainties를 함께 전하라.
⑤ 입주시 시세·전세보증금도 **선언**이다 — 선언하면 각각 시세 기준 잔금대출 시나리오
(scenario_at_expected_price)와 전세 잔금 시나리오(jeonse_scenario — 거주의무·대출
병행 불가 게이트)를 병렬로 준다. 서버는 미래 시세·전세가를 추정하지 않는다.
| Name | Required | Description | Default |
|---|---|---|---|
| lender | No | 업권 | 은행 |
| region | No | 규제 판정용 지역 덮어쓰기 — 생략하면 공고 소재지로 판정한다 | |
| borrower | Yes | 잔금대출 차주 유형(사용자 선언 — realty_loan_limit과 동일 계약). 계약자 명의 기준으로 선언하라 | |
| house_ty | No | 주택형 (예: '59', '84B') | |
| is_metro | No | 수도권 여부 직접 선언 | |
| movein_ym | No | 입주 년월 YYYYMM 덮어쓰기 — 공고에 입주예정이 없으면 이걸 안 주는 한 총 소요자금이 계산되지 않아 자금 판정도 못 한다(realty_presale_cost와 같은 계약·같은 이름). 후보는 realty_presale의 move_in_ym | |
| rate_type | No | 잔금대출 금리유형 — realty_loan_limit과 동일 계약. 기본 '변동'은 스트레스 금리 전액 가산이라 가장 보수적이다(안 닫힌다는 판정이 유형 때문일 수 있다) | 변동 |
| floor_zone | No | 층 구분(예: '5~9층') — 생략하면 첫 밴드로 계산하고 나머지 밴드 총액을 병기한다 | |
| is_regulated | No | 규제지역 여부 직접 선언 | |
| mid_rate_pct | No | 중도금 대출 연이율 %(기본 5.0) (허용 범위 0 초과~20) | |
| own_funds_10k | Yes | 동원 가능한 자기자금(만원) — 계약금부터 잔금까지 전액 투입 가정으로 계산한다. 0도 유효하다(전액 대출 시나리오 — 계약금 게이트에서 정직하게 걸린다) | |
| credit_loan_10k | No | 신용대출 잔액·예정액(만원) — realty_loan_limit과 동일 계약(서버가 산정만기 5년 규제식으로 계산한다). 직접 연 원리금을 계산해 넣지 마라 | |
| house_manage_no | Yes | 공고 관리번호 (realty_presale의 house_manage_no) | |
| loan_term_years | No | 잔금대출 만기(년) (허용 범위 1~50) | |
| rate_fixed_years | No | 혼합형 고정기간 또는 주기형 변동주기(년) — 미지정 시 5년 가정 (허용 범위 0~50) | |
| annual_income_10k | No | 차주 연소득(만원) — 주면 잔금대출의 DSR 상한까지 반영해 판정한다 | |
| extra_options_krw | No | 발코니 외 유상옵션 합계(원) | |
| interest_rate_pct | No | 잔금대출 약정금리 가정(%) (허용 범위 0 초과~20) | |
| jeonse_deposit_10k | No | 입주 시점 예상 전세보증금 선언(만원) — 주면 '세입자 보증금으로 잔금 치르기' 시나리오를 판정한다(거주의무·대출 병행 불가 게이트 포함). 시세 확인은 realty_complex_rent_by_pyeong·region_price_stats(metric=rental) | |
| credit_loan_rate_pct | No | 신용대출 약정금리(%) — credit_loan_10k를 줬으면 필수 (허용 범위 0 초과~20) | |
| expected_price_at_movein_10k | No | 입주(잔금) 시점 예상 시세 선언(만원) — 잔금대출 LTV는 실무상 입주시 시세·감정가 기준이라, 선언하면 그 값 기준 판정을 병렬로 준다. 서버는 미래 시세를 추정하지 않는다(선언 없으면 분양가 기준만) | |
| existing_annual_debt_payment_10k | No | 기존 대출 연간 원리금(만원) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with `readOnlyHint: true` and `idempotentHint: true`, the description adds valuable behavioral context: it is not an approval, it only reflects current regulations and current funds, it intentionally ignores future market changes, and it does not infer future sale/jeonse prices. It also states that response `assumptions` and `uncertainties` should be conveyed, and that optional declarations trigger parallel scenarios.
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 long but every sentence of it contributes: it opens with a precise single-sentence judgment and then groups all boundaries into numbered, scannable items. The use of bolded terms, self-contained bullet sections, and explicit sibling names means there is no wasted or repetitive prose.
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 tool with 22 parameters and no output schema, the description covers the most important contextual ground: core calculation flow, consumer interpretation of input declarations, parallel scenarios, and decisive limitations. Some fine return-structure detail is left implicit, but given the very complete schema cascades of this, the remaining gap is small.
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?
The schema already covers 100% of parameter descriptions, giving it the baseline score of 3 without needing detailed parameter repetition in the tool description. The tool description does set a high-level declaration-led framing for borrower type and future price inputs, but that level of detail is already reflected clearly in the input schema itself.
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 states the exact purpose: 'does this presale close using my own funds?' and gives the deterministically evaluated values: required funds at each payment stage, the necessary final loan amount, whether it fits regulatory caps (LTV/value-band/DSR), and the shortfall. It also clearly names the question type this handles ('이 분양 당첨되면 진행 가능해?') and distinguishes itself from sibling tools by listing what it does not cover.
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 gives explicit exclusion criteria and alternates: savings planning, refinancing strategy, market-price comparison, and policy rule lookup are called out as outside the tool, with `realty_presale_vs_market` and `realty_policy_rules` named. It also states that the server does not judge borrower type/income and does not estimate future prices or jeonse, so an agent knows exactly when to rely on declarations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_presale_price_trend지역 분양가 추이 — 공고 간 연도별 평당 분양가ARead-onlyIdempotentInspect
같은 지역 분양 공고들의 연도별 평당 분양가 추이를 낸다 — "지금 넣을까, 기다릴까"에서 기다림의 비용(다음 공고가 얼마에 나올까)을 정량화하는 축이다. 재당첨 제한이 걸린 결정(분양가상한제 10년 등)에서 특히 판단을 가른다.
기준(답변에 그대로 전달): **공급면적(분양평) 평당 최고 분양가**(만원/평), 발코니
확장·유상옵션 미포함. 연도별 주택형 믹스가 다르면 중앙값이 흔들린다 —
announcements가 1~2건인 연도는 추이로 읽지 말고, 평형대를 고정하려면
exclusive_m2_min/max(국평=80~85)를 써라.
이 축의 자리: 개별 공고의 적정성(분양가 vs 실거래)은 realty_presale_vs_market,
실거래 가격 추이는 realty_region_price_stats — 이 도구는 **분양가끼리의 시계열**이다.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | 시도 (예: 서울, 경기, 세종) | |
| keyword | No | 단지명·공급 주소 부분일치 (예: '고덕', '동탄') — 동네·지구 단위 추이는 이걸로 | |
| sigungu | No | 시군구 정확한 이름 (예: 평택시). ⚠️세종은 오염돼 있으니 keyword를 쓰라 | |
| exclusive_m2_max | No | 전용면적 상한(㎡) — 국평만 보려면 85 | |
| exclusive_m2_min | No | 전용면적 하한(㎡) — 국평만 보려면 80 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent, and the description adds meaningful behavioral context: the metric is 공급면적(분양평) means the max price per pyeong, excludes balcony expansion and optional add-ons, and uses a median that can be unstable when the housing-type mix varies across years. This is exactly the kind of operational nuance that annotations cannot convey.
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 longer than minimal but efficient for its purpose: it packs a definition, measurement criteria, a caveat, parameter advice, and sibling-tool routing. A small amount of the message is contextually motivational — e.g., '재당첨 제한... 판단을 가른다' — but it does not prevent an agent from quickly extracting the operational guidance.
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?
The tool has no output schema, so the description carries the burden of explaining what comes back; it does so by stating the result is a per-year per-pyeong presale price trend based on announcements in the same region. It also explains what the answer should be based on, how to handle unstable years, how to fix the size band, and which sibling tool should be used when the risk is not presale-presale time series. Nothing functionally necessary is missing.
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?
All five parameters have solid schema descriptions, so the baseline is 3. The description adds value beyond the schema by explicitly tying exclusive_m2_min/max to the 80–85 ㎡ national standard range and to the median-stability caveat. It also reinforces the keyword-based zone/area trend use case, which elevates the parameter guidance slightly above baseline.
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 states a specific verb and resource: 'same-region presale announcements' annual per-pyeong price trend'. It also separates this tool from adjacent tools by saying it handles presale-to-presale time series, while individual announcement fairness is covered by realty_presale_vs_market.
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 gives explicit routing: use this tool for presale price time series, realty_presale_vs_market for individual presale vs realized price, and realty_region_price_stats for resale price trends. It adds when-not-to-use guidance: years with only 1–2 announcements should not be read as trends, and exclusive_m2_min/max should be used to hold unit mix constant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_presale_vs_market분양가 적정성 분석 — 분양가 vs 주변 실거래 시세ARead-onlyIdempotentInspect
청약(분양) 공고의 분양가가 주변 실거래 시세 대비 싼지/비싼지를 주택형별로 계산한다. "이 청약 넣을 만해?", "분양가 적정해?"류 질문의 정량 근거 — 웹검색으로는 못 하는 분양가×실거래 조인 계산이 이 도구의 존재 이유다.
공고 특정: house_manage_no가 없으면 region+keyword로 검색하고, 여러 건이면
후보 목록을 돌려주니 하나를 골라 다시 호출하라(추측해서 고르지 않는다).
한계(지어내지 말 것): 실거래 평균은 해당 지역 全단지(구축 포함) 기준이라 신축
프리미엄이 반영되지 않았다. 청약 경쟁률·당첨 가점 커트라인은 이 도구가 아니라
realty_subscription_odds에 있다("넣을 만해?"엔 둘을 같이 써라).
기준선 우선순위: market_avg는 **이상치 미필터** 지역 평균이다 — 결론에는
comparison_by_size[].comparable_complexes(반경 내 급 맞는 단지 실거래)를 우선하고,
지역 수준 교차확인은 realty_area_price_bands(이상치 필터·중앙값)로 하라.
이 도구는 **현재 공고 1건의 적정성**이다 — 같은 지역 공고들의 분양가 시계열
("기다릴수록 얼마씩 올랐나")은 realty_presale_price_trend.
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | 실거래 비교 창(개월) (허용 범위 3~24) | |
| pyeong | No | 대조할 전용평(정수)을 직접 고른다 — 예: [26]이면 국민평형 84㎡만. 안 주면 **세대수 많은 순 상위 5개** 평형을 자동으로 고른다. comparison_truncated에 빠졌다고 적힌 평형은 이 인자로 되받아 부르면 된다(공시만 하고 길이 없으면 막다른 골목이다) | |
| region | No | 시도 (예: 서울, 경기, 세종) | |
| keyword | No | 단지명·주소 부분일치 (예: '우미린', '5-2생활권', '다솜동') | |
| house_manage_no | No | realty_presale 응답의 공고 관리번호 — 알면 이걸로 특정하는 게 정확 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint, idempotentHint, and destructiveHint already providing the safety profile, the description adds substantial behavioral detail: it warns that the regional average includes all complexes and does not reflect new-build premiums, that market_avg is an unfiltered outlier average, and that comparable_complexes should be prioritized. It also discloses the candidate-list behavior when house_manage_no is absent and advises not to guess. No contradiction with annotations exists.
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 dense but every paragraph earns its place: purpose, disambiguation, limitations, baseline priority, and alternative tools are all clearly separated. It is not the shortest possible, but the length is justified by the number of decision-relevant caveats. It is front-loaded with the core purpose before diving into edge cases.
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 analysis tool with no output schema, the description covers the key behavioral contexts an agent needs: how to identify the correct announcement, what the comparison baseline means, how to use the returned fields, when to prefer comparable_complexes, and which sibling tool handles related but different questions. The only minor omission is explicit mention of the months parameter, but that is already well documented in the schema and the tool cannot be safely invoked without this guidance.
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?
Although schema coverage is 100%, the description goes beyond schema definitions: it explains the house_manage_no-or-(region+keyword) resolution logic, the automatic pyeong selection of the top 5 by number of households, and how to use the pyeong parameter to retry pyeong types listed in comparison_truncated. These operational details materially improve correct invocation and recovery paths.
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: '청약(분양) 공고의 분양가가 주변 실거래 시세 대비 싼지/비싼지를 주택형별로 계산한다.' It clearly distinguishes this tool from siblings by naming realty_subscription_odds and realty_presale_price_trend as the tools for other question types. An agent can tell exactly what this tool computes and what it does not.
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 explicitly says when NOT to use this tool: 청약 경쟁률·당첨 가점 커트라인 belongs to realty_subscription_odds, and 분양가 시계열 belongs to realty_presale_price_trend. It also instructs to combine this with realty_subscription_odds for '넣을 만해?' questions and names realty_area_price_bands for cross-checking regional medians. This goes far beyond implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_reconstruction[유료] 재건축 유망 단지ARead-onlyIdempotentInspect
[유료] 건령·거래활성 기반 재건축 후보 스크리닝 상위 단지를 조회한다.
점수 = 건령(최대 70, 30년 연한 기준) + 최근 12개월 거래활성 전국 백분위(최대 30).
사업성(용적률·대지지분·안전진단·조합 단계)은 반영되지 않는다 — 후보 발굴용이지
투자 판단 근거가 아니며, 응답의 disclaimer를 사용자에게 그대로 전하라.
(구버전 점수 포화로 2026-07-30 보류했다가 산식 v2 재계산 검증 후 재개 — DATA-060)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | (허용 범위 1~50) | |
| district | No | 지역명 (예: 서울, 구로구). 비우면 전국 상위 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered. The description adds valuable behavioral context: the score formula (age 70%, transaction activity 30%), the current version status/date (2026-07-30), the fact that the API was temporarily deprecated and resumed, and a mandatory customer disclosure instruction. It also mentions the output includes a disclaimer, which is a behavioral expectation.
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 compact and informational. It front-loads the paid/screening purpose first, then the formula, then the caveat and the resumption history. The addition of DATA-060 is a useful internal note. It is appropriately sized for a paid tool with a special data status; a few details could arguably be moved to an external doc, but every line contributes value in this particular context.
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?
The description is strong given the tool's low complexity: only two optional parameters, an output schema is absent, and annotations carry the safety burden. It covers purpose, scope, input, output expectations, and usage instructions. The main remaining gap is that it does not define exactly what the 'response disclaimer' contains or what the output top-N list looks like, but the output schema is absent and the tool seems intentionally simple. Complete enough for an agent to invoke it 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?
The schema coverage is 100%, and the description does not add any new parameter-level semantics. The description's score formula does not explain either 'limit' or 'district' beyond the schema. The baseline for full description coverage is 3. The description does contextualize the result ordering (상위 단지) which relates to how parameters shape the output, but that is indirect, so a 3 is fair.
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 states a specific verb+resource: it queries the top ranked redevelopment candidate complexes based on a '재건축 후보 스크리닝' (reconstruction candidate screening) formula. It distinguishes itself from general searches and related realty tools by specifying the paid nature, the scoring model, and its intended screening-only purpose. Although sibling tools like realty_redevelopment exist, the description explicitly spells out that business feasibility is not reflected, making it distinguishable.
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 clearly states when to use this tool: when you need top candidate complexes based on building age and transaction activity. It also says what not to rely on it for (not an investment basis) and tells the agent to pass the disclaimer to the user, which is a user-handling guideline. It does not mention a sibling alternative by name, but the negative scope ('business feasibility not included') helps select among sibling tools. Missing explicit when-not-to-use vs realty_redevelopment, but the absence of business feasibility is a strong cue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_redevelopment[유료] 서울 재개발·재건축 사업장ARead-onlyIdempotentInspect
[유료] 서울시 정비사업(재개발·재건축·가로주택 등) 사업장 목록 — 사업명·유형· 진행 단계·위치. "○○구 재개발 어디까지 진행됐어?"류 질문용.
**커버리지는 서울 한정**(정보몽땅 원천) — 타 시도는 이 도구로 답할 수 없다고 밝혀라.
세대수·준공예정은 원천 목록이 제공하지 않아 null이다(지어내지 말 것). 진행 단계
필터는 미지원 — 결과의 stage 필드(한글: 조합설립인가·관리처분인가 등)로 판별하라.
재건축 **유망도 점수**는 이 도구가 아니라 realty_reconstruction이 담당하고,
"지금 사면 조합원 지위 승계돼?"는 realty_member_transfer_check(무료)가 담당한다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | (허용 범위 1~50) | |
| offset | No | 페이지네이션 오프셋 | |
| sigungu | No | 시군구 (예: 강남구). 비우면 서울 전체 | |
| project_type | No | reconstruction=재건축, housing_redevelopment=재개발(주택정비형), urban_redevelopment=재개발(도시정비형), street_housing=가로주택정비, small_reconstruction=소규모재건축, small_redevelopment=소규모재개발, regional_housing=지역주택, remodeling=리모델링. 비우면 전체 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description adds important behavioral constraints: Seoul-only coverage, source limitations, null fields that must not be invented, no stage filter support, and a paid service marker. It also instructs the agent to derive progression from the stage field rather than assume a filter parameter.
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 dense but purposefully structured: main purpose first, followed by coverage limitations, null-field warnings, filter behavior, and sibling routing. Some repetition of the paid marker and the warning not to invent null data makes it slightly longer than strictly necessary, but the length is justified by the tool’s complexity and the risk of hallucinated data.
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?
Because there is no output schema, the description carries the burden of signaling result semantics. It names the core output fields, describes null behavior, and gives the stage field as the discriminator. It does not fully enumerate every response field or pagination detail, but it provides enough context for a 4-optional-parameter list 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?
The schema already covers all 4 parameters at 100%, so the baseline is 3. The description adds value by warning that 진행 단계 filtering is not supported and must be determined from the stage output field, and by reinforcing the sigungu-based district example in the usage question.
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 names the resource: a list of Seoul 정비사업 sites (재개발·재건축·가로주택) with the key fields 사업명·유형·진행 단계·위치. It also distinguishes itself from the sibling tools by stating that 유망도 점수 belongs to realty_reconstruction and 조합원 지위 승계 belongs to realty_member_transfer_check.
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 provides an explicit usage pattern: “○○구 재개발 어디까지 진행됐어?” It also states clear exclusions: non-Seoul areas cannot be answered with this tool, and redevelopment potential or membership succession questions should be routed to the named sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_redevelopment_burden정비사업 분담금 계산 — 선언된 감정평가액·비례율로 권리가액·분담금ARead-onlyIdempotentInspect
재개발·재건축 조합원의 권리가액과 추가 분담금(또는 환급금)을 결정론으로 계산한다 — 권리가액 = 종전자산 감정평가액 × 비례율, 분담금 = 조합원분양가 − 권리가액. "감정평가 3억에 비례율 98%면 얼마 더 내?"의 자리다.
경계를 지켜라: ① 입력 전부 **선언**이다 — 감정평가액·비례율은 조합 자료에서 가져와야
하고 서버는 검증하지 않는다. ② 이 산식은 법정 산식이 아니라 통용 실무 산식이며,
비례율은 관리처분인가 전엔 추정치라 준공까지 계속 변한다 — 응답의 sensitivity(비례율
±10%p 스윙)와 disclosures를 반드시 함께 전하라. ③ 산식 출처·변동 함정의 원문은
realty_policy_rules(topic=redevelopment_rules)의 proportion_formula가 진실원이다.
분양자격 자체가 불확실하면 topic=redevelopment_entitlement(갈림길 지도)부터.
| Name | Required | Description | Default |
|---|---|---|---|
| proportion_rate_pct | No | 비례율(%, 예: 102.5) — 조합 총회 자료·관리처분계획의 값을 선언. 없으면 아래 사업 전체 3종으로 계산한다 (허용 범위 0 초과~300) | |
| prev_asset_value_10k | Yes | 조합원 종전자산 감정평가액(만원) — 감정평가 결과이지 시세가 아니다 | |
| total_post_asset_10k | No | 종후자산 평가총액=분양수입 총액(만원) — 비례율을 직접 계산할 때 | |
| total_prev_asset_10k | No | 종전자산 평가총액(만원) — 비례율을 직접 계산할 때 | |
| member_sale_price_10k | Yes | 받으려는 주택형의 조합원분양가(만원) | |
| total_project_cost_10k | No | 총사업비(만원) — 비례율을 직접 계산할 때 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
annotations는 read-only·idempotent임만 알려 주지만, 설명은 '서버는 검증하지 않는다', '비례율은 관리처분인가 전 추정치라 준공까지 변동한다', '민감도 ±10%p에 대한 정보를 반드시 함께 전달하라'는 중요한 동작 특성을 추가로 공개한다. annotation이 담지 못하는 비모수적·무검증 계산 행동을 정확히 보강한다.
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?
수식, 사용 예시, 세 가지 경계·조건, 대체 도구 안내가 모두 4줄 안에 밀도 있게 담겼다. 불필요한 홍보성 문구나 중복 표현이 없고, 계산 목적이 맨 앞에 와서 핵심을 먼저 파악할 수 있다.
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?
출력 스키마가 없음에도 계산 결과가 무엇인지(권리가액·분담금) 및 함께 보고해야 할 sensitivity·disclosures가 정확히 명시되어 완결성이 높다. 입력 파라미터 조건, 주의사항, 대안 라우팅까지 포함하여 복잡한 재개발 분담금 도구가 에이전트를 오류 상태에 빠뜨릴 요소가 거의 없다.
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의 파라미터 설명이 100% 커버리지이므로 기본 3점 이상이다. 설명은 그 위에 파라미터 간 연산 관계, 즉 종전자산 감정평가액·비례율과 분담금의 산술 관계를 부여해 각 인자가 어떻게 쓰이는지 명확히 해준다. 다만 비례율이 null일 때 3종 시나리오 계산이 되는 분기는 schema 설명에만 있고 description에는 없지만 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?
첫 문장이 자원과 계산 결과를 구체적으로 명시한다: '권리가액과 추가 분담금(또는 환급금)을 계산', '권리가액 = 감정평가액 × 비례율, 분담금 = 조합원분양가 − 권리가액'. 실제 예시 문구('감정평가 3억에 98%면 얼마 더 내?')까지 있어 에이전트가 재개발 관련 형제 도구들과 헷갈릴 여지가 없다.
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?
'경계를 지켜라' 문단에서 입력값은 반드시 조합 자료의 선언값임을 강조하고, 산식이 법정 산식이 아니라 실무 추정치임을 경고하며, 정확성이 불확실하면 realty_policy_rules의 진실원을 따르고 분양자격이 불확실하면 topic=redevelopment_entitlement부터 보라는 전환 안내까지 제공한다. 사용 조건과 대안 경로가 모두 명시되어 있다.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_region_price_stats지역 실거래 시세 통계ARead-onlyIdempotentInspect
지역의 아파트 실거래 시세 추이(월별)를 조회한다. 경매가가 싼지 판단하는 기준선이 된다.
**이 축의 자리(시세 도구 3종 중)**: 월별 흐름·방향이 필요할 때 이걸 쓴다. 지역의
가격 **수준**을 인용할 거면 realty_area_price_bands를 쓰라 — 이 축은 이상치(지분·
증여성 직거래)가 필터되지 않아 평균이 눌리며, **두 도구 값이 갈리면 bands 쪽이
정상 매매에 가깝다**(세종 소형 실측 4,400만원 차). 단지가 특정된 질문("○○아파트
얼마야")은 realty_search_complexes가 기본이다 — 지역 평균은 단지 간 편차(같은 동
같은 평형에서 단지 평균 24% 차)를 뭉갠다.
region은 시군구명(예: '강남구') 또는 **법정동까지**(예: '강남구 대치동',
'세종특별자치시 나성동') — 세종처럼 시군구가 하나인 도시는 동 단위로 좁혀야 신도심·
구도심이 섞이지 않는다(2026-08-08, 8/7 테스터 제안 수용). 동명 지역이 여럿이면
시도를 앞에 붙여라 — 안 붙이면 거래량 최다 지역 기준으로 답하고 region_candidates로
나머지 후보를 실토한다(그 목록을 사용자에게 전달할 것).
metric: price(매매) | rental(전월세). rental도 **months 창 월별 추이**(monthly_trend:
전세 평균·중앙, 월세 보증금·월세, 건수 분리)를 준다 — "전세 떨어지는 중이야?",
역전세 판단용(입주 물량은 realty_move_in_supply와 조합). 상단 필드는 최신월 스냅샷.
**rental엔 평형 인자가 안 먹는다** — 전월세 통계는 평형별로 나뉘어 있지 않아
pyeong_exclusive·pyeong_supply·area_m2_* 를 줘도 전체 평형 기준 값이 오고
warning_pyeong_fallback으로 실토한다(값이 잘못 나가는 게 아니라 **다른 모수**다).
평형별 전월세가 필요하면 단지 단위 realty_complex_rent_by_pyeong으로 가라.
**면적은 사용자가 말한 단위 그대로 넣어라 — 환산은 서버가 한다**(2026-08-22 제보):
- ㎡로 말했으면 → area_m2_exclusive(전용 84㎡ → 84) / area_m2_supply(공급 112.8㎡ → 112.8)
- 평으로 말했으면 → pyeong_supply(분양 "34평") / pyeong_exclusive(전용 실평수 25.4평)
㎡ 값을 평 인자에 넣으면 조용히 환산하지 않고 사유와 두 방향 출구를 적어 거절한다.
**가격순 '목록'이 필요하면 top_n을 준다**(2026-09-07 외부 신고 T-2026W34-352):
"강남구 신고가 상위 5개"·"제일 비싸게 팔린 아파트"처럼 개별 거래를 나열하는 질문은
이 인자 없이는 답이 안 나온다 — 종전엔 그런 질문이 이 도구로 라우팅된 뒤 집계
(최고/평균/중앙)만 받고 목록을 못 줬다. top_transactions에 단지·평형·금액·계약일·층이
온다. **다만 그것은 '창 안의 고가 거래'이지 신고가(역대 최고가 경신)가 아니다** —
그 경계는 top_n을 준 응답이 같은 블록에서 적는다(이 도구 설명은 필드 이름을 대지
않는다 — 조건부로만 실리는 키를 설명이 무조건 지목하면 top_n 없이 부른 응답에서
없는 이름을 찾게 만든다, S364).
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | **가격순 상위 거래 '목록'을 함께 받는다**(1~20). '신고가 상위 5개', '제일 비싸게 팔린 아파트', '고가 거래 목록'처럼 **개별 거래를 나열**하는 질문이 이 인자다 — 안 주면 이 도구는 평균·중앙·최고 같은 **집계만** 답하고 목록은 못 준다. 행에 단지·전용면적·평형·금액·계약일·층이 실린다(top_transactions). metric='price'에서만 동작한다 (허용 범위 1~20) | |
| metric | No | price=매매, rental=전월세. **평형 인자(pyeong_exclusive·pyeong_supply·area_m2_exclusive·area_m2_supply)는 price에서만 먹는다** — 전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다(전체 평형 값이 오고 warning_pyeong_fallback으로 실토한다). 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라 | price |
| months | No | 조회 개월 수 (허용 범위 1~60) | |
| region | Yes | 지역명 — 시군구까지(예: '강남구', '수원시 권선구') 또는 **법정동까지**(예: '강남구 대치동', '세종특별자치시 나성동'). 시도 약칭은 서버가 정식명으로 펴지만('서울 마포구' → '서울특별시 마포구'), 동명 지역이 여럿이면 시도를 앞에 붙여라 — 안 붙이면 거래량 최다 지역으로 답하고 나머지 후보를 region_candidates로 실토한다. 단지명은 여기 넣지 마라(단지는 realty_search_complexes·realty_complex_pyeong_price 담당) | |
| pyeong_supply | No | 분양평수(공급면적, 평) — 흔히 말하는 '34평'이 이것이다. 내부에서 ×0.745로 전용 실평수로 환산한다. **㎡로 말했으면 area_m2_supply를 쓰라** **전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다** — 주면 전체 평형 기준 값이 오고 warning_pyeong_fallback으로 실토한다. 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라. | |
| area_m2_supply | No | 공급(분양)면적을 **㎡ 그대로** 받는다(예: 112.8). pyeong_supply와 동시에 주면 거절한다 **전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다** — 주면 전체 평형 기준 값이 오고 warning_pyeong_fallback으로 실토한다. 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라. (허용 범위 0 초과~800) | |
| pyeong_exclusive | No | 전용면적 기준 **실평수(평)** — ㎡가 아니다. 전용 84㎡면 25.4를 넣는다. **사용자가 ㎡로 말했으면 이 인자가 아니라 area_m2_exclusive를 쓰라** (㎡ 값을 여기 넣으면 60평 초과로 거절된다). 1평=3.3058㎡ **전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다** — 주면 전체 평형 기준 값이 오고 warning_pyeong_fallback으로 실토한다. 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라. | |
| area_m2_exclusive | No | 전용면적을 **㎡ 그대로** 받는다(예: 84, 59, 114.98). 사용자가 '전용 84㎡'라고 말했으면 환산하지 말고 84를 여기 넣어라 — 서버가 평으로 환산하고 그 사실을 응답에 적는다. pyeong_exclusive와 동시에 주면 거절한다 **전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다** — 주면 전체 평형 기준 값이 오고 warning_pyeong_fallback으로 실토한다. 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라. (허용 범위 0 초과~500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses conditional outputs such as region_candidates, warning_pyeong_fallback, and top_transactions only when top_n is provided. It also explains server-side unit conversion, rejection behavior, and explicitly notes that the top_n list is not a record-high list but a window high-price list. No contradiction with readOnly, idempotent, openWorld, or non-destructive annotations.
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 excessively long and includes dated metadata such as '2026-08-08, 8/7 테스터 제안 수용', '2026-08-22 제보', and '2026-09-07 외부 신고 T-2026W34-352' that are not useful for tool selection. The rental pyeong fallback warning is repeated in the main text and in multiple parameter descriptions, adding redundancy.
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?
Covers all relevant edge cases: region ambiguity and disambiguation, metric differences, pyeong/area unit conversion, top_n conditional behavior, and fallback warnings. Though there is no output schema, the description names the key conditional response fields and directs users to sibling tools when different granularity is needed.
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 descriptions already cover all 8 parameters in detail, and the description adds concrete usage context like Sejong dong-level narrowing, region candidates fallback, and rental monthly_trend structure. It does not receive a 5 because much of the semantic content is already present in the input schema, and some added prose repeats the pyeong/rental fallback warning.
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 states the tool retrieves regional apartment transaction price/rental trends by month, using the verb '조회한다' and specifying the resource. It explicitly distinguishes itself from realty_area_price_bands (price level vs. trend) and realty_search_complexes (specific complex vs. region), making its role obvious.
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?
Provides extensive when-to-use guidance: use this tool for monthly trends/direction, use realty_area_price_bands for price levels, realty_search_complexes for specific complexes, realty_complex_rent_by_pyeong for unit-level rents, and realty_move_in_supply for move-in supply. Also covers region disambiguation and metric-specific behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_region_rankings지역 순위 (시세·상승률·전세가율·교통·학군)ARead-onlyIdempotentInspect
지역(시군구) 순위를 조회한다 — "제일 비싼 동네 어디야?", "요즘 많이 오른 지역은?", "전세가율 높은 곳은?"류 질문용.
price=거래량 가중 전용 평당가(최소 5건, 최신월은 집계 진행 중일 수 있음) ·
growth=전용 60-85㎡ 고정 YoY(평형 구성 왜곡 제거) · transit/school=단지 점수의 시군구
평균. **investment는 원천 정지·기준월 혼재로 보류 중**(호출 시 대안 안내 —
전세가율은 realty_rental_yield). 응답 methodology의 산식·단위를 답변에 반영하라.
비교 대상이 두어 곳으로 정해진 질문("A vs B 어디가 나아?")은 [유료]
realty_compare_regions가 시세·추이를 나란히 준다 — 이 도구는 순위·탐색용이다.
**transit/school 점수는 realty_location_scores의 점수와 다른 판본이다**(응답
score_lineage) — 이 순위로 지역을 고르고 단지 점수는 그쪽에서 다시 보되, 두 숫자를
같은 축에 놓고 비교하지 마라.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | (허용 범위 1~50) | |
| order | No | desc=상위부터, asc=하위부터 | desc |
| metric | Yes | price=전용 평당가 / growth=연간 상승률 / investment=전세가율·갭투자 / transit=교통 점수 / school=학군 점수 | |
| region | No | 시도명(예: 부산)이면 그 시도 안 순위, 시군구명이면 해당 지역 필터. 비우면 전국 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint·idempotentHint 등 annotations이 이미 안전한 읽기 동작을 알려주는 가운데, 설명은 price의 거래량 가중·최소 5건·최신월 집계 중 가능성, growth의 60-85㎡ 고정 YoY, investment 원천 정지 상태, score_lineage 판본 차이까지 추가로 공개한다. annotations와 모순도 없다.
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?
용도와 질문 예시를 앞에 배치하고, 그 뒤에 metric 정의·제약·대안 도구를 줄바꿈과 볼드로 구조화했다. 길지만 반복되거나 군더더기 없는 문장으로 모든 문장이 정보를 전달한다.
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?
복잡한 5개 metric과 보류 상태, 형제 도구와의 관계, 응답 methodology 반영 지시까지 빠짐없이 담겨 있다. output_schema는 없지만 설명이 응답의 산식·단위·score_lineage를 안내하므로 에이전트가 도구를 호출하고 결과를 해석하는 데 필요한 맥락이 충분하다.
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?
input-schema가 100% 커버하지만 그 위에 metric별 산식·단위·보류 상태를 부여하고, region의 시도/시군구 동작도 설명한다. 특히 investment가 enum에는 있으나 실제로는 보류 중이라는 정보는 스키마만으로는 알 수 없는 중요한 의미 보강이다.
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?
첫 문장에서 '지역(시군구) 순위를 조회한다'라는 구체적 동작과 대상을 밝히고, '제일 비싼 동네 어디야?'류 질문 예시로 용도를 명확히 한다. 또한 realty_compare_regions, realty_location_scores 등 형제 도구와의 차이를 직접 언급해 다른 도구와 혼동될 여지가 없다.
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?
순위·탐색용 질문에 쓸 것을 명시하고, 'A vs B'처럼 비교 대상이 정해진 경우에는 realty_compare_regions를 쓰라고 대안을 제시한다. investment가 보류 중일 때 realty_rental_yield로 대체하라는 안내와 transit/school 점수를 realty_location_scores와 같은 축에 놓지 말라는 사용 조건도 포함되어 있다.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_region_trend_basket지역 추이 — 동일 단지 고정 바스켓 (구성 변화 제거)ARead-onlyIdempotentInspect
지역 가격 추이를 양쪽 창에 모두 거래가 있는 동일 단지들로만 계산한다.
**왜 필요한가**: 구 월평균 추이는 '가격이 변한 것'과 '팔린 단지가 바뀐 것'을 구분하지
못한다. 표본이 얇으면 후자가 지배하는데, 그걸 시세 변동으로 읽으면 오답이다
(2026-08-14 실사고: 용산 33평 월 1~7건 표본으로 '전년 대비 −9.6%'를 만들었다).
이 도구는 **naive(전체 평균 변화)와 basket(동일 단지 변화)을 나란히** 주고 그 차이를
`composition_effect`로 보여준다 — 차이가 크면 그 지역 평균 추이는 구성 잡음이다.
단지별 값은 **평당가**라 단지 안의 평형 구성 변화도 흡수한다.
한계를 반드시 함께 전하라: 바스켓이 얇으면(단지 수가 적으면) 이 값도 못 믿는다.
취소·직거래는 제외했고, 단지 내 동·층 구성 변화까지는 보정하지 못한다.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | 시군구명 (예: 용산구, 성동구). **여러 시도에 같은 이름이 있는 시군구**(중구·동구·서구·남구·북구·강서구)는 시도를 함께 주라(예: '서울 중구') — 안 주면 합치지 않고 후보를 실토하며 거절한다 | |
| pyeong_band | No | pyeong_supply 기준 허용 폭(±평). 넓히면 바스켓이 커지고 평형 혼합이 늘어난다 (허용 범위 1~10) | |
| pyeong_supply | No | 분양평(사용자가 말하는 '34평') 필터 — ±3평 창으로 거른다. **좁힐수록 바스켓이 얇아져** 고정 바스켓의 이점이 사라지니 응답의 바스켓 단지 수를 반드시 확인하라 (허용 범위 1~200) | |
| window_months | No | 비교 창 하나의 길이(개월). 최근 N개월 vs 그 직전 N개월을 비교한다 (허용 범위 1~12) | |
| min_tx_per_complex | No | 바스켓에 넣을 단지의 창당 최소 거래 건수 — 1이면 바스켓이 커지지만 단지별 값이 한 건에 좌우된다 (허용 범위 1~10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description discloses key behaviors: only complexes transacting in both windows are included, results are compared as naive vs basket, the composition_effect is exposed, values are per-pyeong, cancellations and direct deals are excluded, and dong/floor composition changes are not corrected. It also explicitly warns about thin-basket unreliability. No contradiction with annotations.
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 core calculation is front-loaded in the first sentence. The 'why' section earns its place with a concrete worked example of the failure mode, and the limitations paragraph is essential for safe interpretation. There is no filler or redundant restating of schema fields.
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?
This is a complex analytical tool with no output schema, but the description still explains the output shape (naive, basket, composition_effect), the unit used (per-pyeong), what is excluded, and the key limitation to communicate to the user. For an analysis tool with one required parameter and well-documented optional parameters, this is complete.
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 input schema already fully documents every parameter with ranges and caveats. The description adds useful conceptual context such as the basket concept and composition effect, but it does not need to repeat parameter-level syntax or semantics. This matches the high-coverage baseline of 3.
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 precise statement of what the tool does: it calculates regional price trends using only complexes with transactions in both comparison windows. It clearly distinguishes this from a naive average by introducing the basket/naive contrast and the `composition_effect`, which sets it apart from sibling region-stat tools.
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 '왜 필요한가' section gives a clear when-to-use rationale: naive monthly averages are misleading when sample composition shifts, especially with thin samples. It also warns when the basket itself is unreliable. However, it does not explicitly name alternative sibling tools or give an explicit 'do not use when X' rule, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_remodel_feasibility개조 가능성 — 벽을 헐 수 있나·욕실을 옮길 수 있나(법령 + 공고 인용)ARead-onlyIdempotentInspect
**"이 아파트를 내가 원하는 대로 고칠 수 있나"**에 답하는 자리 — 두 축이다: ①벽(내력벽을 헐어 방을 틀 수 있나) ②배관(층상/층하 — 욕실·주방을 옮길 수 있나).
"벽식구조면 리모델링 못 하죠?"·"내력벽 철거 2016년에 허용되지 않았나요?"·"욕실 위치
바꿀 수 있나요?"·"인테리어 하는데 구청 가야 하나요?"가 이 도구의 질문이다.
**모델이 학습 데이터로 자신 있게 틀리는 자리**라 조문 원문을 값으로 준다 —
통설 둘("2016년 유예로 내력벽 철거 허용", "벽식=개인 리모델링 불가")이 **둘 다 틀렸고**,
이 도구가 그것을 조문으로 깬다.
답은 두 층으로 온다. **①규범 층은 커버리지 100%**(근거=법령 원문·시행일)이고 단지를
몰라도 답이 된다 — 전문은 realty_policy_rules(topic='unit_alteration_rules').
**②단지 층은 분양 모집공고 원문 인용**이며 커버리지가 희박하다: 아카이브 2,851건 중
쪽 원문 보유 2,294건, 그중 구조형식 언급 258건(11.2%)·배관방식 선언 221건·가변성 등급
34건뿐이고 **2020~2026 분양 한정이라 기존(준공된) 아파트는 0% 덮는다.**
커버리지는 매 응답에 실린다 — 그대로 사용자에게 전하라.
**없으면 unknown이고, unknown은 '아니다'가 아니다.** 준공연도로 구조형식을 추정하지
마라(모집단 비율을 개별 사실로 둔갑시키는 것이다). 값이 없을 때는 막다르게 두지 말고
응답의 how_to_find_out(관리사무소 설계도서·구청 행위허가 상담 등 실제로 확인 가능한
경로)을 안내하라 — 그것이 이 도구의 값어치다.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | both=벽+배관(기본), wall=내력벽·평면 변경만, plumbing=상하수도·욕실 이동만 | both |
| complex_name | No | 단지·공고명 일부 (공백 무관 매칭). **없어도 된다** — 비우면 법령 규범 층만 답한다(그것만으로도 통설 오답을 막는다) | |
| house_manage_no | No | 공고 관리번호 (realty_presale·realty_notice_facts 응답의 house_manage_no) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag read-only, open-world, idempotent, and non-destructive behavior, but the description goes much further: it reveals that coverage may be only 11.2% or 0%, that unknown is not a negative answer, that structure should not be inferred from the year of construction, and that responses must include how_to_find_out. This is substantial value beyond the annotations and no contradiction is found.
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 the core purpose and uses bold headers and two clear 'layer' sections to structure a domain-heavy signal. It is long, but almost every passage carries a specific warning or facility distinction that is needed for this recalcitrant task. The main cost is density, not irrelevance.
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 states the two expected response layers, coverage disclosure requirement, unknown handling, and how_to_find_out path, so the sentiment model knows what to expect and how to behave. It does not formally specify response field names or error cases, but for an open-world read-only tool this is sufficient.
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?
The input schema already documents all three parameters well, including enum values, null defaults, and the meaning of omitting the complex name. The description explains only the general behavior of the 'unknown' case and response structure, but it does not add new semantic information about individual parameters beyond what the schema provides. Since schema_description_coverage is 100%, baseline 3 is appropriate.
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 states the tool's job: it answers whether walls can be demolished and plumbing/bathrooms moved, using statute text and the original public-sale notice. It explicitly distinguishes itself from realty_policy_rules by noting the full norm text lives there, which helps an agent select the right sibling.
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 gives concrete example queries that map to this tool, explains that the normative layer works even without a complex name, and points to realty_policy_rules as the source of the full rule text. It is less clear about when not to use this tool in favor of adjacent realty_* tools, but the axis,building-name, and coverage logic supplies usable routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_rental_yield[유료] 전월세 수익률ARead-onlyIdempotentInspect
[유료] 시군구별 월세 수익률·평균 매매가·평균 월세를 조회한다. 수익형 투자 스크리닝용.
기본 응답은 최신 완결월 1개월치를 수익률 내림차순으로 자른 것이다 — 전체 기간·전체
지역이 아니다(truncated 필드 확인). 특정 월은 year_month로 조회하라.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 반환 행 수 — 수익률 내림차순 상위 N (허용 범위 1~50) | |
| region | No | 시도(예: 서울특별시) 또는 시군구(예: 강남구). 세종은 시 단위로 나온다 | |
| year_month | No | YYYYMM (기본 최신 완결월) | |
| pyeong_supply | No | 분양평수 20/25/34/40/50 중 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it readOnly, idempotent, non-destructive, so the description adds essential behavioral context: the default response is a single latest completed month, sorted by descending yield, not the full period or region, and includes a truncated field to inspect. It also tells the agent to use year_month for specific months. This prevents a serious misuse of the default.
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 compact and efficient: first line states purpose and use case, second line provides the critical behavioral caveat and the relevant parameter workaround. Every sentence earns its place with no filler.
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?
Given no output schema, the description gives sufficient operational context: what is returned, default slicing behavior, and how to request a specific month. It lacks a short enumeration of output fields or additional details about the truncated field, but the schema covers parameters and annotations cover safety.
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?
The input schema already covers 100% of the four parameters, including defaults, value ranges, and examples. The description does not add much beyond what is already in the schema—it repeats year_month and the yield-descending sort. Baseline 3 is appropriate because the schema carries the parameter documentation load.
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?
Description states a specific verb and resource: '시군구별 월세 수익률·평균 매매가·평균 월세를 조회한다' and adds the use case '수익형 투자 스크리닝용'. The unique metric set (rental yield, average sale price, average rent) sets it apart from sibling realty tools even without naming them.
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 gives purpose context (investment screening) and a direct instruction for using year_month when wanting a specific month, plus clarifies that the default is truncated to one completed month. However, it does not specify when to choose this tool over the many sibling realty_* tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_search_auctions경매 물건 조건 검색ARead-onlyIdempotentInspect
법원경매 물건을 지역·종류·감정가·유찰횟수로 필터링해 조회한다.
**이 축의 자리** — 조건을 **값으로 아는** 검색이 이 도구다. 사용자의 자연어 한 줄밖에
없으면 `search`가 먼저다(질의에서 조건을 뽑아 준다). 개별 사건의 상세는 여기가 아니라
`realty_get_auction_case`(사건번호+법원명)·`fetch`(search가 준 id)다.
**이 도구는 법원경매(민사집행법·각급 법원)만 조회한다 — 공매는 여기가 아니다.**
공매(국세징수법·국유재산법 등, 한국자산관리공사 온비드)는 **이 서버에 따로 있다**:
물건은 `realty_search_onbid`, 낙찰가율은 `realty_onbid_sale_rate`
(2026-08-22 적재 — 물건 25,669개 · 최근 3개월 개찰 결과 113,673행).
여기서 안 나온다고 "그런 물건 없다"고 답하지 말고 **공매 도구로 다시 걸어라.**
구분 신호는 번호 형식이다 — 법원 사건번호는 `2025타경1234`, 공매 물건관리번호는
`2026-0600-031235`(하이픈 세 토막·'타경' 없음)다.
**두 원장을 합쳐 세거나 낙찰가율을 섞어 평균내지 마라** — 근거법·주관기관·권리 인수
규칙·저감 방식이 다르다.
감정가(min_price_10k/max_price_10k)는 **만원** 단위다 — 5억은 50000.
유찰이 많을수록 최저입찰가가 감정가 대비 낮아진다(`min_bid_rate`가 그 비율).
⚠️ **이 목록에는 매각기일이 이미 지난 행이 섞여 있다**(백엔드가 기일로 걸러주지
않는다 — 인천 아파트 3억 이하 실측 48건 중 43건이 지난 기일). 지난 기일 행에는
`past_auction_note`가 붙고 응답의 `past_auction_count`가 그 페이지의 건수다.
"지금 살 수 있어?"류 질문이면 `exclude_past=true`로 걸러라 — 지난 기일 물건은
매각·취하됐거나 다음 기일이 아직 반영되지 않은 것이라 현재 매물로 인용하면 오답이다.
⚠️ **`sort=date_asc`(기일 임박 순)는 지난 기일이 목록 앞쪽을 통째로 차지한다**
(2026-08-21 실측 94,279건 중 앞 57,241건=60.7%). `exclude_past=true`면 서버가 그
접두를 건너뛰고 읽으므로 첫 호출부터 실물이 온다 — 건너뛴 행 수는
`meta.past_prefix_skipped`, 실제로 읽은 자리는 응답의 `offset`(요청값은
`requested_offset`)이다. **items가 비어도 `has_more`가 true면 '조건에 맞는 물건이
없다'는 뜻이 아니다** — 그 창이 전부 지난 기일이었을 뿐이니 `next_offset`으로
이어서 호출하라. note가 둘 중 어느 쪽인지 매번 말한다.
⚠️ **최저입찰가는 출처를 반드시 확인해라** — 건별 `min_bid_source`가 붙는다.
· `court_schedule` — 법원 기일표 정본이다. 그대로 믿어도 된다(활성의 28.8%).
· `item_list` — 물건목록값이다. 유찰이 있으면 **저감 한 단계만큼 낡아 실제보다
높을 수 있다**(2026-08-04 실측: 유찰 1회 이상에서 정본과 3%만 일치, 25~43% 과대).
이 경우 `min_bid_note`가 함께 온다. 사용자에게 단정적으로 말하지 말고 그 한계를
전해라. 저감률로 역산해 추정하지 마라 — 재감정으로 최저가가 **오르는** 사건도 있다.
응답의 `min_bid_stale_risk_count`가 그 페이지에서 낡았을 수 있는 건수다.
회차별 정확한 가격은 realty_auction_history의 court_schedule에 있다.
목록에는 요약 필드만 담긴다. 특정 물건의 전체 정보(면적·법원 계·주소 상세 등)는
돌아온 id로 realty_get_auction_case를 호출해 받아라.
"유찰 많이 돼 싸진 물건 찾아줘"류 발굴 질문은 realty_auction_alerts가 지름길이다
(min_fail_count로 여기서 걸러도 같은 축 — 결과를 합쳐 세지 마라).
| Name | Required | Description | Default |
|---|---|---|---|
| sido | No | 시도. '서울'처럼 줄여 써도 되고 '서울특별시'도 된다. ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라. | |
| sort | No | 정렬 기준 | date_desc |
| limit | No | 반환 개수 (최대 50) (허용 범위 1~50) | |
| offset | No | 페이지 오프셋. has_more가 true면 next_offset으로 다시 호출하라. | |
| sigungu | No | 시군구 (예: 강남구, 성남시) | |
| usage_name | No | 물건 종류 (아파트, 오피스텔, 다세대, 단독주택, 상가, 토지 등) | |
| exclude_past | No | 매각기일이 이미 지난 행 제외 여부. 기본 False(전체 반환 — 지난 기일 행에는 past_auction_note 플래그가 붙는다). '지금 입찰 가능한 물건' 질문이면 True로 호출하라 — 오늘 이후 기일(기일 미정 포함)만 남는다. | |
| max_price_10k | No | 최대 감정가, **만원** 단위 | |
| min_bid_count | No | 최소 유찰 횟수. 유찰이 쌓일수록 최저입찰가가 내려간다. (허용 범위 0~100) | |
| min_price_10k | No | 최소 감정가, **만원** 단위 (5억이면 50000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/idempotent safety, and the description is consistent with them (조회/검색 semantics). Beyond that, it discloses real behavioral footguns with measured evidence: the backend does not filter out past-auction-date rows (48건 중 43건 지난 기일), `sort=date_asc` lets stale rows occupy 60.7% of the prefix, empty `items` with `has_more=true` does not mean 'no matches', and `min_bid_source` values (`court_schedule` vs `item_list`) carry measurably different staleness risk (25~43% 과대). It also warns not to merge the two ledgers or answer '그런 물건 없다' before trying the public-sale tools — matching the openWorldHint.
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 long (roughly 800 words) but front-loaded with the purpose sentence and organized into bolded, scannable warning blocks (⚠️, **이 축의 자리**). Each block addresses a distinct high-cost failure mode — past-date pollution, stale min-bid values, cross-registry mixing, pagination semantics — with concrete statistics. It loses a point for modest redundancy with schema-level descriptions (만원 units and exclude_past guidance appear in both) and for being longer than strictly necessary, though the density justifies most of the length.
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 no output schema, the description carries the burden of explaining response semantics, and it names all critical return flags an agent must act on: `past_auction_note`, `past_auction_count`, `meta.past_prefix_skipped`, `requested_offset` vs `offset`, `has_more`/`next_offset`, `min_bid_source`, `min_bid_note`, and `min_bid_stale_risk_count`. It also routes the agent to `realty_get_auction_case` for full case data and to `realty_auction_history` for exact per-round prices. For a 10-optional-parameter search tool with serious data-quality traps, nothing needed for correct invocation is missing.
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 baseline is 3 and each param already carries units, ranges, and the 광주 ambiguity error. The description adds cross-parameter and intent-level meaning: min_bid_count connects to `min_bid_rate` (유찰이 많을수록 최저입찰가가 감정가 대비 낮아진다), and the '지금 살 수 있어?' rule tells the agent when to flip `exclude_past` to true. The price-unit fact (5억은 50000) duplicates the schema, so the value comes from the decision rules, not format repetition.
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 opening sentence states a specific verb plus resource and filter dimensions: '법원경매 물건을 지역·종류·감정가·유찰횟수로 필터링해 조회한다.' The body then explicitly separates it from siblings — `search` (natural-language query parsing), `realty_get_auction_case`/`fetch` (case details), and `realty_search_onbid` (public sales) — so an agent can distinguish it without opening other schemas.
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?
Gives explicit routing rules with conditions: one natural-language line → `search` first; individual case detail → `realty_get_auction_case`; public sales (공매) → `realty_search_onbid`/`realty_onbid_sale_rate`; '유찰 많이 돼 싸진 물건' discovery → `realty_auction_alerts`. It also gives parameter decision rules: '지금 살 수 있어?' → `exclude_past=true`, and `sort=date_asc` should be paired with `exclude_past=true`. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_search_complexes아파트 단지 검색·평형별 시세ARead-onlyIdempotentInspect
아파트 단지를 이름·지역으로 검색하고 평형별 실거래 시세를 함께 돌려준다. "○○아파트 34평 얼마야"류 단지 질문의 1차 도구다. query·region 중 하나는 필수.
**이 축의 자리(시세 도구 3종 중)**: 단지가 특정되면 **이게 기본**이다. 지역 평균
도구들(realty_region_price_stats·realty_area_price_bands)은 단지 간 편차를 뭉개므로
단지 질문에 쓰지 마라 — 같은 동 같은 평형에서 단지 평균이 24% 벌어진 실측이 있다
(동 평균 3.96억으로 답했다가 대장 단지 호가와 1억 어긋난 사고). 반대로 지역 전체의
수준·추이 질문이면 저 둘로 가라.
prices_by_area가 평형별 시세다 — pyeong_exclusive(전용평)와 pyeong_supply_est(분양평
어림)를 병기하므로, 사용자가 말한 "34평"(보통 분양평)은 pyeong_supply_est로 맞춰 답하라.
단지 수준 avg_price는 전 평형이 섞인 평균이니 평수 질문에 쓰지 말 것.
층별(저층/고층/RR) 시세·프리미엄 질문은 realty_complex_pyeong_price로 —
거기 층 밴드별 집계(price_by_floor_band)가 있다(이 도구엔 층 축이 없다).
응답의 complex_key는 realty_complex_rent_by_pyeong·[유료] 단지 도구들에 그대로 넣는 키다.
**세대수 조건은 min_households·max_households가 받는다**(2026-09-07 외부 신고
T-2026W34-351): "500세대 이상", "1,000세대 넘는 대단지", "300세대 이하 소규모"는
이 인자로 넣어라 — 종전엔 전달할 자리가 없어 그 질문이 통째로 실패했다. 행마다
households가 실린다. **households가 null인 단지는 세대수가 원장에 없는 것이지
작은 단지가 아니다** — 그래서 세대수 조건을 걸면 그 단지들은 크든 작든 제외되고,
몇 건이 그렇게 빠졌는지는 meta.households_scope가 적는다.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 0부터 시작하는 페이지 번호 | |
| sort | No | name=이름순(거래량 많은 순), price=평균가 **높은** 순, year=준공연도 **최신순(내림차순 — 신축이 먼저)**. ⚠️ **오래된 순 정렬은 이 도구에 없다** — '오래된 단지'·'재건축 후보'를 찾는 조회에 sort='year'를 쓰면 정확히 반대 결과가 온다(정비사업 축은 realty_reconstruction·realty_redevelopment) | name |
| limit | No | 단지 수 — 평형별 시세가 포함돼 응답이 무겁다. 최대 20이고 더 받으려면 limit을 올리지 말고 **page를 넘겨** 이어 받아라(응답의 total이 전체 건수다). 요청분을 다 실으면 응답이 크기 상한을 넘는 경우 **실제 반환 수를 줄이고 meta.size_capped**에 총계·이어받는 호출을 값으로 싣는다 — 조용히 자르지 않는다 (허용 범위 1~20) | |
| query | No | 단지명 일부 (예: 래미안, 마포래미안푸르지오) | |
| region | No | 시군구명 (예: 마포구, 서울특별시 마포구). **법정동까지 넣어도 된다**(예: '강남구 대치동') — 백엔드는 동으로 거르고 나머지 토큰은 서버가 검증해 note에 적는다. 종전 설명이 시군구만 적어 **이 도구가 못 하는 일로 읽혔고**, 동 단위를 원한 모델이 비아파트 도구로 새던 자리다(2026-08-23 PlayMCP QA) | |
| period_months | No | 가격 집계 기간(개월). 비우면 2024-01 이후 전체 (허용 범위 1~24) | |
| max_households | No | 세대수 상한 — '300세대 이하 소규모'처럼 위쪽을 자를 때. min_households와 함께 주면 구간이 된다 | |
| min_households | No | **세대수 하한** — '500세대 이상', '대단지'를 여기에 넣는다(예: 500). 세대수가 원장에 없는 단지는 이 조건에서 제외되고 그 건수를 meta.households_scope로 실토한다(미상 ≠ 소규모) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses important runtime behaviors: response size capping via meta.size_capped, null households excluding complexes from filters and reporting via meta.households_scope, and the fact that sort=year returns newest first. These are valuable transparency details not present in the schema.
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 long but every sentence carries critical information: alternatives, edge cases, meta fields, and historical context. It uses bullet points, bold, and warnings to structure the content, making it dense yet navigable. No filler or redundant text.
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?
Although no output schema is provided, the description adequately covers response contents: per-pyeong prices (pyeong_exclusive, pyeong_supply_est), households per row, complex_key for subsequent calls, and meta fields (households_scope, size_capped, total). It also explains which parameters are exclusionary and how errors are surfaced. The agent understands exactly what to expect and how to handle quirks.
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?
All 8 parameters are thoroughly documented with examples, defaults, and edge-case explanations. For instance, region clarifies legal dong support and past QA issues, min_households explains the meaning of null households, and sort warns about reverse ordering. Schema coverage is 100% and descriptions go well beyond basic type info.
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 states the tool searches apartment complexes by name/region and returns per-pyeong prices, using specific verbs ('검색하고', '돌려준다'). It explicitly distinguishes itself from sibling tools like realty_region_price_stats and realty_area_price_bands, making its purpose unambiguous.
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 provides explicit when-to-use guidance: it is the default for specific complex questions, while region average tools are for area-level queries, and floor/premium questions are directed to realty_complex_pyeong_price. It also gives pagination and sorting warnings (sort=year is newest-first), leaving no room for misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_search_onbid공매(온비드) 물건 검색ARead-onlyIdempotentInspect
한국자산관리공사 온비드 공매 물건을 지역·용도·재산구분·감정가로 조회한다.
법원경매가 아니다. 공매는 국세징수법(압류재산)·국유재산법·공유재산법에 따른 처분이고
주관은 캠코다 — 아래 '이 축의 자리'와 응답의 `not_court_auction`을 반드시 함께 전하라.
**이 축의 자리** — 공매 축은 도구가 둘뿐이다. 물건을 찾고 회차별 최저가 일정을 보는
것이 이 도구, "보통 감정가의 몇 %에 낙찰되나"는 realty_onbid_sale_rate다.
**법원경매를 물었다면 여기가 아니라 realty_search_auctions**이고, 사건번호에 '타경'이
들어 있으면 그쪽이다. 사용자가 그냥 "경매"라고만 했으면 **어느 쪽인지 되물어라** —
둘을 합쳐 세거나 섞어 평균내면 그 답은 틀린다.
**행이 물건이 아니다.** 원장의 한 행은 물건이 아니라 **공매조건(회차)**이다 — 한 물건이
1~10회차 입찰 일정을 미리 갖고 회차마다 최저입찰가가 내려간다(실측: 물건당 3.51행).
이 도구는 **물건 단위로 접어서** 돌려준다: `rounds_total`(전체 회차)·`rounds_remaining`
(마감 전 회차)·`next_round`(다음 입찰 회차의 기간과 최저입찰가)·`last_round`(마지막
예정 회차 = 더 안 팔리면 도달하는 바닥값). 응답의 `condition_rows`가 접기 전 행 수다 —
**행 수를 물건 수로 인용하지 마라**(71% 과대).
⚠️ **최저입찰가 '비공개'** — 원문이 숫자가 아니라 '비공개'인 회차가 있다(529행).
그 회차의 금액은 **null**이지 0이 아니다. `min_bid_undisclosed_rounds`가 그 수이고,
평균·최저값 계산에서 빠져 있다.
⚠️ **압류재산 주소는 번지가 가려진다** — 결과 원장 기준 압류재산의 61.7%가
'강원특별자치도 춘천시 ***********' 꼴이다. 물건 목록 쪽은 번지까지 나오지만
(실측 마스킹 0건), 같은 물건을 결과에서 다시 찾을 때는 시군구까지만 유효하다.
⚠️ **시도 표기를 우리가 손봤다** — 원천에 '전남광주통합특별시' 같은 통합 표기가 7,757행
있어 시군구로 분해해 `sido`에 넣었다. 손보기 전 원문은 `sido_source`, 분해 근거는
`sido_basis`('as_is' = 원문 그대로 / 'split_by_sgg' = 시군구로 갈랐다)에 있다.
권리분석·감정평가서·공고 원문은 이 원장에 없다. 공매의 권리 인수 규칙은 법원경매와
다르므로 realty_policy_rules(민사집행법 기준)의 답을 여기에 옮기지 마라.
| Name | Required | Description | Default |
|---|---|---|---|
| sido | No | 시도. '서울'처럼 줄여 써도 되고 '서울특별시'도 된다. ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라. | |
| sort | No | deadline=마감 임박순 · price_asc/desc=감정가순 · discount=감정가 대비 최저가가 낮은 순(저감 많이 된 순) | deadline |
| limit | No | 반환 **물건** 수 (최대 50) (허용 범위 1~50) | |
| offset | No | 페이지 오프셋. has_more면 next_offset으로 다시 호출하라. | |
| sigungu | No | 시군구 (예: 춘천시, 강남구). 부분일치다 — '고양시'는 '고양시 덕양구'도 잡는다. | |
| open_only | No | 입찰 마감이 아직 안 지난 회차가 남은 물건만. 기본 True — 원장에는 이미 끝난 회차 행이 함께 들어 있어서(물건 25,669개 중 마감 전 회차가 남은 것은 10,327개), 끄면 지금 입찰할 수 없는 물건이 섞인다. cltr_mng_no로 특정 물건을 볼 때는 무시된다. | |
| usage_name | No | 용도 부분일치. 이 원장의 중분류는 토지·주거용건물·상가용및업무용건물·용도복합용건물·산업용및기타특수용건물 5종이고, 소분류에 아파트·다세대주택·대지 등이 들어 있다. **'아파트'는 소분류라서 중분류로는 안 걸린다** — 넓게 보려면 '주거용건물'. | |
| cltr_mng_no | No | 물건관리번호(예 '2026-0600-031235')로 한 물건만. **이것이 상세 조회다** — 이 원장은 행이 물건이 아니라 회차라, 한 물건의 상세는 곧 그 물건의 회차 전부이고 그때 `rounds`에 회차별 최저입찰가 일정이 실린다. 법원 사건번호(2025타경…)는 여기 넣지 마라. | |
| max_price_10k | No | 최대 감정가, **만원** 단위 | |
| min_price_10k | No | 최소 감정가, **만원** 단위 (5억이면 50000) | |
| property_type | No | 재산구분 — 공매에서 가장 중요한 축이다. 압류재산(체납처분·국세징수법)·국유재산·공유재산·기타일반재산·수탁재산·불용품. **성격이 완전히 다르다**: 압류재산은 체납자 재산의 강제매각이고 나머지는 공공이 가진 재산의 처분·임대다. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnly/idempotent/non-destructive annotations already covering safety, the description adds substantial behavioral context that an agent would otherwise get wrong: the row-is-not-a-property folding (rounds_total, rounds_remaining, next_round, last_round) with a quantified warning ('행 수를 물건 수로 인용하지 마라(71% 과대)'), that '비공개' minimum bids are null not 0 and excluded from aggregates, the 61.7% street-address masking for seized property, and the sido normalization with sido_source/sido_basis provenance fields. It also discloses what the ledger lacks (권리분석·감정평가서·공고 원문). No contradiction with annotations.
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 long, but every section is load-bearing and addresses a distinct failure mode: legal disambiguation, sibling routing, the rows-vs-properties trap, and three data-quirk warnings. It is front-loaded — the core function and the 'not court auction' disclaimer appear in the first two sentences — and uses bolded section markers ('이 축의 자리', '행이 물건이 아니다', ⚠️ warnings) for scannability. For an 11-parameter tool with a counterintuitive data model, this density is warranted, not padded.
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 no output schema present, the description carries the full burden of explaining return semantics, and it does: it names the key response fields (rounds_total, rounds_remaining, next_round, last_round, condition_rows, min_bid_undisclosed_rounds, not_court_auction, sido_source, sido_basis), quantifies the overcount risk, and states what is absent from the ledger. Given the tool's complexity — 11 optional params, a folded round-based data model, and heavy ambiguity with court auctions — nothing an agent needs to call it correctly or interpret results faithfully is missing.
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 schema itself is unusually rich (광주 ambiguity handling, sort enum semantics, partial sigungu matching, cltr_mng_no as the detail path, open_only's 25,669-vs-10,327 rationale, usage_name taxonomy). The description adds value beyond the schema by explaining the folding data model that underlies limit (counts properties, not rows) and cltr_mng_no (detail = all rounds), and by reinforcing that court case numbers like '2025타경' must not be passed. That incremental context justifies a step above the baseline 3, though the schema is doing most of the per-parameter heavy lifting.
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 first sentence states a specific verb and resource: '한국자산관리공사 온비드 공매 물건을 지역·용도·재산구분·감정가로 조회한다', naming the exact platform (Onbid/KAMCO), the object (public auction properties), and the filter dimensions. It explicitly differentiates from siblings by declaring '법원경매가 아니다' and naming realty_search_auctions and realty_onbid_sale_rate as the alternatives, so an agent can route correctly 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?
The '이 축의 자리' section explicitly scopes the sibling set ('공매 축은 도구가 둘뿐이다') and assigns each tool its job: property search and round schedules here, sale-rate percentage questions to realty_onbid_sale_rate. It gives an explicit exclusion ('법원경매를 물었다면 여기가 아니라 realty_search_auctions'), a disambiguation instruction for ambiguous requests ('사용자가 그냥 '경매'라고만 했으면 어느 쪽인지 되물어라'), and a warning not to import realty_policy_rules answers since public-auction rights rules differ. Exceptionally actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_small_deposit_check소액임차인 최우선변제 — 담보물권 설정일로 적용 시행령 판을 고른다ARead-onlyIdempotentInspect
소액임차인 최우선변제의 금액표를 고르는 도구다 — 판정기가 아니다.
"최우선변제금 얼마까지 나와요?"에 현행표를 읊으면 틀린다. 적용되는 표는 **최선순위
담보물권을 취득한 날이 속한 시행령 판**이고(부칙 경과조치), 2008-08-21 이후 7개 판이
서로 다르다. 2015년 근저당이 붙은 서울 주택이면 지금 경매라도 2014-01-01 판
(9,500만원 이하 / 3,200만원)으로 잰다 — 현행표(1억6,500 / 5,500)를 쓰면 소액임차인이
아닌 사람을 소액임차인이라 답하게 된다.
경계를 지켜라: ① **범위에 든다 ≠ 받는다.** 경매개시결정등기 전 대항요건·배당요구종기까지
배당요구·주택가액 1/2 한도·다수 임차인 안분·임차권등기 후 임차인 제외가 전부 남아 있다
(응답 `not_a_conclusion`). ② `security_right_date`가 없으면 **표를 고르지 않는다** —
현행표를 기본값으로 주는 순간 이 도구가 막으려던 오답이 된다. **그렇다고 날짜를
지어내지도 마라**(2026-08-22 제보: 사용자가 연도만 줬는데 클라이언트가 `2019-01-01`을
생성했다). 연도만 안다면 `security_right_year`에 그 연도만 넣어라 — 그 해 전체가 한
판 안이면 서버가 날짜 없이 답하며 **"연도로 판을 골랐다"를 응답에 명시**하고, 판이
갈리는 해면 표를 고르지 않고 등기 접수일을 되묻는다. ③ 시 안에서 동에 따라
과밀억제권역이 갈리는 곳(인천·남양주·시흥)은 구간을 **안 고르고** 별표 원문을 낸다.
④ **주택만**이다 — 상가는 상가건물임대차보호법으로 금액표가 다르다. ⑤ 배당액 계산·
말소기준권리 판정·인수 여부는 하지 않는다. 규칙 전체와 갈림길은
realty_policy_rules(topic=auction_rights)가 진실원이다.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | 물건 소재지. '서울', '경기도 부천시', '부산광역시 기장군'처럼 시도를 붙이면 확실하다. 비우면 그 판의 **전 구간 표**를 그대로 준다 | |
| deposit_10k | No | 임차보증금(**만원**). 주면 그 판의 '소액임차인 범위' 상한과 대조해 **범위에 드는지의 산수**만 한다 — 최우선변제를 받는다는 판정이 아니다 | |
| security_right_date | No | **최선순위 담보물권(근저당 등)의 설정일** YYYY-MM-DD. 금액표를 고르는 기준일이다 — '오늘'도 '임대차계약일'도 아니다(각 개정 시행령 부칙 경과조치: '이 영 시행 전에 임차주택에 대하여 담보물권을 취득한 자에 대해서는 종전의 규정에 따른다'). 등기부 을구에서 확인한다. **모르면 비워 두라 — 서버가 현행표를 답인 척 주지 않는다**. ⚠️ **연도만 아는 경우 날짜를 지어내지 마라** — '2019년'만 들었으면 '2019-01-01'을 만들지 말고 security_right_year=2019를 쓰라. 그 해 전체가 한 시행령 판 안이면 서버가 날짜 없이 답하고, 판이 갈리는 해면 월·일을 되묻는다 | |
| security_right_year | No | **최선순위 담보물권 설정 '연도'만** 알 때 쓴다(예: 2019). 사용자가 연도만 말했을 때 security_right_date에 임의의 날짜를 지어 넣는 대신 여기에 연도를 그대로 넣어라 — 그 해 전체가 한 시행령 판 안에 있으면 월·일 없이도 표가 정해지고(응답이 그 근거를 밝힌다), 판이 갈리는 해면 표를 고르지 않고 등기 접수일을 되묻는다 (허용 범위 1900~2200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
annotations가 이미 안전한 읽기 동작을 알려주지만, 설명은 그 이상으로 '날짜가 없으면 표를 고르지 않는다', '연도만 알면 서버가 연도 기준임을 응답에 명시한다', '판이 갈리는 해에는 등기 접수일을 되묻는다', '범위 내 포함이 곧 최우선변이 수령 판정은 아니다(not_a_conclusion)'는 실제 동작을 드러낸다. 날짜를 조작하지 타야 한다는 제보 사례까지 있어 오남용을 막는다.
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?
첫 문장에 목적과 비목적을 넣고 1~5번으로 나뉜 경계 목록과 실제 선례를 구조화해 복잡한 툴인에도 실용적으로 읽힌다. 다만 제보 일자와 장황한 경고 문구를 스키마와 본문에서 반복하는 부분이 있어 일부 낭비가 있다.
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?
금액표 선택이라는 핵심 경로, 날짜/연도 입력 방식, 결론 비판정, 정책 원천 도구 이름까지 잘 갖추어져 있다. 그러나 '2008-08-21 이전 날짜를 받으면 어떻게 처리되는가' 또는 'security_right_date와 security_right_year가 동시에 들어온 경우 우선순위' 같은 경계 조건이 명시되지 않았다.
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?
입력 스키마 100% cover에 상세 설명이 있어 기본값을 높애 잡을 수 있다. 본문은 security_right_date와 security_right_year의 상호 관계, deposit_10k는 단순 산수일 뿐이라는 해석 한계를 다시 강조한다. 그러나 핵심 파라미터 의미의 상당 부분은 이미 스키마 필드 설명에 있어 '새로 추가하는 설명'만 보면 5점보다는 4점이다.
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?
첫 문장에서 '금액표를 고르는 도구'라는 구체적 목적과 대상을 명시하고, '판정기가 아니다'라고 범위를 못박는다. 두 번째 문단은 '적용되는 표는 최선순위 담보물권을 취득한 날이 속한 시행령 판'이라고 기준을 밝혀 형제 도구들과의 구분을 분명하게 한다.
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?
realty_policy_rules(topic=auction_rights)를 규칙 전체와 갈림길의 진실 원천으로 지목해 상세 규정이 필요할 때의 라우팅을 제시한다. '판정기가 아니라'와 '상가는 별도 법률이 적용된다'는 비사용 조건도 명확하다. 다만 상가·비주택 등 대체 대상에서 어떤 도구를 대신 쓸지는 명시되지 않아 5점에는 조금 못 미친다.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_subscription_odds청약 경쟁률·당첨 가점 — 내 가점으로 되나ARead-onlyIdempotentInspect
청약 경쟁률과 실제 당첨 가점 커트라인을 낸다 — "나 가점 52점인데 당첨될까?"의 정량 근거. 가점 자체를 모르는 사용자는 realty_subscription_score(무주택·부양가족·가입기간 선언 → 배점표 적용)로 먼저 점수를 만들어 my_score로 넘겨라.
**비어 있으면 왜 비었는지부터 읽어라(2026-08-20 축 신설).** 이 축의 원천은 주 1회 전량 수집
이라 "아직 공표가 안 됐다"와 "공표는 됐는데 우리가 아직 안 걷었다"가 똑같이 빈 배열로
보인다 — 실측(공고 2026000323)에서 청약홈엔 1순위 경쟁률 4.33·12.90·15.55가 이미
공표됐는데 우리 응답은 by_house_type=[]였다. `freshness_verdict.verdict`가 그 둘을
가른다: `not_yet_published`(접수가 안 끝났다 — 없는 게 정상) · `not_yet_collected`
(**우리 미수집이다. 절대 '경쟁률이 없다'고 답하지 말고 check_url로 안내하라**) ·
`unknown`(못 가른다) · `not_published` · `collected`. 대조 재료인 접수 종료일은
announcement.rcept_endde·freshness_verdict.apply_end에 있다.
result_status의 뜻은 응답의 `result_status_legend`가 정본이다(`special_only`는 일반공급
결과가 아직인데 특별공급 신청현황만 온 상태 — '결과 없음'이 아니다).
**없는 공고는 '미발표'가 아니다(2026-09-08, T-2026W37-81).** house_manage_no가 경쟁률 원장에도
분양 공고 원장에도 없으면 `error`(result=`not_found`)로 거절하고 벤치마크를 내지 않는다 —
종전엔 어떤 번호를 넣어도 `not_published`+"아직 발표되지 않았다"가 나가 오타·가상 번호가
'접수 전 공고'로 둔갑했다. 원장 조회 자체가 실패하면(404 아닌 오류·시간 초과) 그것도
`not_published`가 아니라 `error`(result=`lookup_failed`)다. 지역 벤치마크만 필요하면
house_manage_no 없이 region·sigungu로 부르라.
**지역별 경쟁률의 분모는 추정하지 말고 `allocated_households_rank1_local`을 써라
(2026-08-21 신설).** 공표 경쟁률은 (그 지역구분 신청 ÷ 배정 세대수)라 분모를 되돌릴 수
있고, 해당지역 1순위 행의 98.3%에서 그 분모가 정수 하나로 특정된다(전수 실측). 되찾지
못한 행은 그 값이 null이고 `allocated_households_basis.range`에 구간만 있다 —
그때는 세대수로 단정하지 마라. 공고 원문 비율로 만든 `regional_priority.
estimated_allocation.est_*`는 **실측이 있는 행에서 쓰면 안 된다**(실측과 어긋나면
`estimate_superseded`가 붙는다 — 실측 2026000323 084.9165A: 추정 47 vs 실측 78세대).
두 가지 경로를 자동으로 고른다:
1) 결과가 발표된 공고 → 그 단지의 주택형별 1순위 해당지역 경쟁률·당첨 최저/평균/최고 가점.
2) 아직 접수 전이라 결과가 없는 단지 → 같은 지역 최근 공고들의 실제 커트라인 분포
(regional_benchmark). **다른 단지의 실적이다** — 질의 단지의 예상 커트라인이
아니라는 점을 반드시 함께 말하라. 분위수를 인용하기 전에
distinct_complex_count·samples_by_complex를 먼저 보라 — 단지가 1~2곳이면
그건 지역 분포가 아니라 한 단지 안의 주택형 편차다
(warning_sample_concentration이 붙는다).
**시도 하나로 답하지 마라(2026-08-16 축 신설).** 아파트는 시군구·평형·시기·가격대로 갈린다 —
실측(서울 최근 2년): 은평 전용 59㎡ 커트라인 중앙 45점 vs 강남 59㎡ 74점(29점 차),
연도별 중앙값 2022년 50점 → 2025년 69점, 2025년 분기별 69/66.5/56/70.
그래서 "내 가점으로 어디까지 되나"류에는 breakdown='sigungu'(+ area_band, 예산이 있으면
budget_max_10k)를, "언제가 쌌나"류에는 breakdown='quarter'|'year'를 써라.
사용자가 예산을 말했는데 budget_max_10k를 안 넣으면 **살 수 없는 단지가 섞인 답**이 나간다.
지어내지 말 것: 이 도구는 당첨 확률을 계산하지 않는다(가점 동점자 처리·특별공급 비율·
추첨제 물량은 데이터에 없다). 낼 수 있는 건 "과거 커트라인 대비 내 점수의 위치"까지다.
커트라인이 null인 칸은 0점이 아니라 당첨자 없음/가점제 미적용이다(score_status 참조).
분양가가 적정한지까지 물으면 realty_presale_vs_market을 이어서 쓰라.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | 시도 (예: 서울, 경기, 세종) | |
| keyword | No | 단지명·주소 부분일치 (예: '월계 중흥') | |
| sigungu | No | 시군구 정확한 이름 (예: 노원구, 수원시). 벤치마크를 좁힐 때 쓴다 — 표본이 0이면 시도 단위로 넓혀라 | |
| my_score | No | 내 청약 가점(0~84점). 주면 실제 커트라인과 점수 차를 계산해 준다 (허용 범위 0~84) | |
| area_band | No | 전용면적대로 좁힌다. 같은 구 안에서도 평형이 바뀌면 커트라인이 움직인다(실측: 노원 59㎡ 58.5점 vs 60~84㎡ 59점, 동작은 반대로 84㎡ 62점·59㎡ 64점) | |
| breakdown | No | 분포를 쪼갤 축. **시도 하나로 답하지 마라** — 서울 은평 전용 59㎡ 커트라인 중앙 45점, 강남 59㎡ 74점으로 같은 시도 안에서 29점이 갈린다. '어디까지 되나'류 질문에는 sigungu, '언제가 쌌나'는 quarter·year를 쓴다 | |
| since_years | No | 지역 벤치마크에 쓸 최근 기간(년). 커트라인은 시장 사이클을 타므로 기본 3년 (허용 범위 1~6) | |
| budget_max_10k | No | 예산 상한 — 분양 최고가(만원) 기준. 사용자가 '9억까지'라고 하면 90000. 가점만으로 답하면 살 수 없는 단지가 섞인다 | |
| budget_min_10k | No | 예산 하한(만원) | |
| house_manage_no | No | realty_presale 응답의 공고 관리번호 — 알면 이걸로 특정하는 게 정확 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Very transparent about what the tool does not do: it does not compute winning probability, null cutoffs do not mean zero, regional benchmarks are other complexes' results not predictions, missing announcements return error rather than 'not published', and denominator estimation is explicitly forbidden under allocated_households_rank1_local. No contradiction with the read-only/idempotent annotations.
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 dense and somewhat long, with many dated warnings and examples. The bold section headers help navigation and most content earns its place, but the length risks diluting key instructions. Still well-structured and front-loaded with the main purpose.
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?
Covers the major operational edge cases: freshness verdicts, not-found vs lookup-failed errors, missing denominators, sample concentration warnings, score limits, and chaining to related tools. Given the tool's complexity and the absence of an output schema, the description is sufficiently complete for correct agent behavior.
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?
Every parameter already has schema-level descriptions, and the description adds concrete semantics, examples, and boundary behavior for my_score, budget_max_10k, breakdown, area_band, house_manage_no, since_years, and region/sigungu. It clarifies units, ranges, and what using or omitting each parameter leads to, far exceeding schema coverage.
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 the core function explicitly: it returns subscription competition ratios and actual winning score cutoffs, and distinguishes itself from related tools such as realty_subscription_score and realty_presale_vs_market. The title and first line together make the resource and verb unmistakable.
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?
Provides explicit when-to-use and when-not-to-use guidance: use realty_subscription_score first if the user does not know their score; use region-only calls for benchmarks; use breakdown='sigungu' vs quarter/year based on the question; and chain to realty_presale_vs_market for price adequacy. It also tells the agent to avoid answering at do-si level alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_subscription_score청약 가점 계산 — 선언된 기간·인원에 배점표(84점) 적용ARead-onlyIdempotentInspect
민영주택 일반공급 가점제 점수(만점 84)를 선언된 값에 배점표를 적용해 계산한다 — 무주택기간 32 + 부양가족 35 + 통장 가입기간 17. "내 청약 가점 몇 점이야?"의 자리다.
경계를 지켜라: ① 세 입력 전부 **선언**이다 — 기산점·부양가족 인정은 등본·혼인관계
사실판단이라 서버가 판정하지 않고, 응답 traps(오기입=부적격 당첨 취소 사유)를 반드시
함께 전하라. ② 산출 점수는 realty_subscription_odds의 my_score로 넘겨 당첨 커트라인과
비교하는 것이 다음 수다. ③ 배점표 원문·기산 규칙은
realty_policy_rules(topic=subscription_account)가 진실원이다.
| Name | Required | Description | Default |
|---|---|---|---|
| is_homeowner | No | 현재 유주택 여부 — True면 무주택기간 점수가 0점이 된다(소형·저가주택 등 무주택 간주 예외 해당 여부는 사실판단이라 호출자가 반영해 선언) | |
| account_years | Yes | 청약통장 가입기간(년, 소수 허용 — 예: 0.4=약 5개월). 전환 통장은 종전 통장 최초 가입일 기준 (허용 범위 0~60) | |
| no_house_years | Yes | 무주택기간(년, 소수 허용 — 예: 7.5). 기산점(만 30세 vs 혼인신고일, 유주택 이력 재기산)은 사실판단이라 호출자가 확정해 선언한다 — 응답의 traps를 함께 전하라 (허용 범위 0~60) | |
| dependents_count | Yes | 부양가족 수(본인 제외). 직계존속 3년 동거·30세 이상 미혼자녀 1년 동거 등 인정 요건은 사실판단 — 확정해 선언한다 (허용 범위 0~20) | |
| under30_unmarried | No | 만 30세 미만 미혼 여부 — True면 무주택기간 점수가 0점이 된다(무주택기간 기산 전) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavior beyond the annotations: the tool computes only on declarations, never judges legal/factual status, and returns traps that must be passed along. This is valuable, non-obvious behavior that the read-only/open-world annotations do not fully express.
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 dense but tightly structured: purpose, scoring formula, then three numbered boundary rules. Each sentence earns its place, and the critical operational cautions are front-loaded.
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?
Given the 5-parameter schema with 100% coverage and no output schema, the description supplies the essential missing context: declarations, legal boundary, trap handling, downstream use, and source of truth. An agent has enough information to call the tool correctly and interpret its role in the larger workflow.
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?
The description adds the scoring decomposition (32 + 35 + 17) that is not present in the input schema, giving the agent a useful mental model of how the parameters combine. Since schema coverage is 100%, the description does not need to repeat ranges or field meanings.
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 states precisely what the tool does: it calculates the 민영주택 일반공급 가점제 score (out of 84) by applying the points table to declared values. It clearly distinguishes the tool from downstream siblings like realty_subscription_odds and realty_policy_rules.
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 gives explicit guidance: inputs are declared, the server does not adjudicate facts, traps must be relayed, the resulting score feeds realty_subscription_odds, and realty_policy_rules is the source of truth. This tells an agent both when to use the tool and how to route the result correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_supply_pipeline공고 전 공급 파이프라인 — 사업승인 기준 예정 물량ARead-onlyIdempotentInspect
아직 분양 공고가 안 난 예정 공급을 사업계획승인 기준으로 본다 — "지금 넣을까, 다음 걸 기다릴까", "이 동네 앞으로 입주 폭탄 있나"류 질문의 자리.
청약홈(realty_presale·realty_move_in_supply)은 **모집공고일에야** 등록되므로 공고 전
물량이 구조적으로 안 보인다. 이 도구의 원천은 주택법 **사업계획승인**이라 공고 2~3년
전 단계가 잡힌다: 사업명·세대수·승인일·착공예정일·사용검사 예정일(=예상 입주).
재당첨 제한(분양가상한제 단지는 10년)·전매제한이 걸린 결정에서는 **대안 정보가 없으면
"지금 아니면 끝"이라는 잘못된 압박**이 생긴다 — 청약 상담이면 이 도구를 함께 불러라.
두 축을 **더하지 마라**(이중계상) — 이미 공고가 난 단지도 승인 목록에 남아 있다.
**이미 모집공고가 난 사업**은 블록 표기가 겹치면 행에 `announced_notice`가 붙는다 —
그 행은 '다음 분양'이 아니라 realty_presale·realty_subscription_odds의 영역이다.
표식이 없어도 기공고일 수 있다(meta.announced_cross_check 참조).
승인 전(지구계획·공모) 물량은 여기에도 없으니 이 값도 하한이다(`interpretation`).
**층수 축(2026-08-20 신설 · 3차 수집=동별개요)**: `max_floor`는 사업계획승인 시점의
**계획** 층수다(변경승인으로 움직인다 — 준공 확정층수가 아니다). 값이 비면
**'저층'으로 읽지 말고 미상으로 읽어라.**
최저층·출처·부재사유는 **3차 수집이 붙은 회차에만** 함께 실린다 —
`min_floor`가 있으면 그 사업에 **실제로 그 층수의 동이 있다**는 뜻이라 저층
선호(고소공포)·고층 조망 상담의 근거가 되고, `max_floor_source`가 있으면 그 층수를
어디서 가져왔는지, `max_floor_absent_reason`이 있으면 왜 비었는지를 말해 준다.
**독스트링은 고정값이라 지금 원장 상태를 말할 수 없다** — 2026-08-20~09-07에는 이
안내만 먼저 나가고 필드를 만드는 백엔드 절반이 20일간 안 붙어 있었다(T-2026W33-68).
그러니 **이번 회차에 무엇이 실렸는지는 응답의 `meta.floor_axis`를 보라.** 그 문구는
응답을 보고 갈린다 — 거기서 "없다"고 하면 정말 없는 것이니 찾지 마라.
`business_body`(사업주체·시공사)는 미준공 구간에서 **구조적으로 빈다** —
준공 후 등록되는 원장에만 있어 3차로도 안 메워진다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 사업 목록 상한 (기본 30) (허용 범위 1~100) | |
| to_ym | No | YYYYMM (기본 from_ym+60개월) | |
| months | No | from_ym부터 **몇 개월**을 볼지 — to_ym 대신 쓰는 간편 인자(예: 24). to_ym과 함께 주면 오류다(realty_move_in_supply와 같은 계약) (허용 범위 1~120) | |
| region | No | 지역 — 시도·시군구·동 부분일치 (예: '세종', '세종특별자치시 합강동', '수원시'). ⚠️ 짝 도구 realty_move_in_supply의 region은 **시도 전용**이다 — 인자를 그대로 옮겨 부르지 마라 | |
| from_ym | No | YYYYMM (기본 이번 달) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already declaring readOnlyHint/openWorldHint/idempotentHint/destructiveHint, the description adds exceptional behavioral disclosure: the double-counting risk from announced projects remaining in the approval list, the announced_notice flag semantics, max_floor being planned-not-confirmed (empty means unknown, not low-rise), the docstring being a fixed value requiring meta.floor_axis for current state, and business_body being structurally empty pre-completion. No contradiction with annotations.
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 core purpose and differentiation, then flows into usage and data-quality caveats — good structure. However, it is quite long, and operational detail like the exact backend rollout window (2026-08-20~09-07) and internal ticket number (T-2026W33-68) could arguably be trimmed without losing decision-relevant meaning.
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 no output schema, the description carries full burden for explaining return semantics, and it does so thoroughly: announced_notice row markers, meta.floor_axis, meta.announced_cross_check, interpretation as a lower bound, and per-field trust guidance (max_floor_source, max_floor_absent_reason, min_floor, business_body). Nothing an agent needs to interpret the response correctly is missing for a tool of this complexity.
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 already-detailed Korean parameter descriptions (months contract with to_ym, defaults). The description adds genuine value beyond the schema: the cross-tool warning that realty_move_in_supply's region is 시도-only and shouldn't be reused as-is, and reinforcement of the months/to_ym mutual-exclusivity contract. This justifies slightly above the baseline-3 for high schema coverage.
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 states a precise purpose: viewing planned supply that has not yet had a subscription notice, based on Housing Act business plan approval (사업계획승인), capturing volume 2-3 years before notice. It explicitly differentiates from siblings realty_presale and realty_move_in_supply, which only register at the notice date, and frames the use case with concrete user questions ('지금 넣을까, 다음 걸 기다릴까').
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 gives explicit when-to-use guidance: for subscription counseling where 재당첨 제한 and 전매제한 restrictions create false 'now or never' pressure, this tool should be called alongside. It also specifies when NOT to use it — already-announced projects belong to realty_presale/realty_subscription_odds — and warns against double-counting by adding the two axes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_issue답변 오류 신고AInspect
답이 틀렸을 때 신고하거나(kind='결함'), 원문 질문을 넘겨 축을 확인받는다(kind='질문기록').
**결함**: 사용자가 "그거 틀렸다", "이상하다", "숫자가 안 맞는다"고 하면 **먼저 이 도구를
호출한 뒤** 정정 답변을 하라. 신고는 서버 운영자에게 전달되어 실제 수정에 쓰인다.
사용자가 지적하지 않았는데 추측으로 부르지는 말 것.
**질문기록**: 사용자의 원문 질문을 그대로 넘기면 서버가 **그 자리에서 라우팅을 돌려준다**
(응답의 `routing`) — 어느 축·어느 도구로 가야 하는지, 그 축의 라우팅 규칙, **우리 데이터
밖이면 그 사실과 대신 볼 곳**, 지역명이 모호하면 후보까지. 판정은 결정론이라 같은 질문이면
같은 답이 나오고, **못 고르면 `axis: null`과 사유를 준다**(추측으로 채우지 않는다).
직전 호출 기록과 대조해 **엉뚱한 축을 부르고 있으면 그것도 알려 준다** — 이건 모델이 적은
기억이 아니라 서버가 가진 호출 기록이라, 도구를 스무 번 부르며 헤매는 것을 앞에서 끊는다.
같은 호출이 기록도 한다: 이 서버는 클라이언트가 이미 도구 호출로 번역한 뒤를 보므로
**사용자의 원문 질문을 볼 수 없고**, 우리가 무엇을 못 담고 있는지는 그 원문으로만 알 수
있다(질문은행·로드맵의 원천). **개인 식별 조합은 반드시 일반형으로 바꿔서** 넣는다.
두 종류가 한 도구인 이유: 무인증 공개 서버라 쓰기 표면을 하나로 묶어 상한을 함께 건다
(CLAUDE.md 규칙 2). 시간당 상한도 공유한다.
**이 도구는 일일 조회 한도(quota) 밖이다** — 다른 도구가 `quota_exceeded`로 막혀도
신고는 접수된다(2026-08-18 수리). 한도를 다 쓴 사람의 신고가 못 오면 우리는 우리가
못 본 것을 영영 모른다. 남용 방지는 시간당 상한(전체 60건·발신자당 20건)이 진다.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | '결함'=답이 틀렸다는 신고(기본). '질문기록'=**사용자 원문 질문을 넘겨 어디로 가야 하는지 확인받는 값**. 원문을 주면 응답의 `routing`으로 ①질문이 9개 도구 축 중 어디인지와 그 축의 도구 이름 ②산문 지침에만 있던 라우팅 규칙(공고 질문에 추정 금지, 비아파트는 매매만, 청약·대출 갈림 등) ③**우리 데이터 밖이면 그 사실과 대신 볼 곳** ④지역명이 모호하면 후보를 돌려준다. **못 고르면 `axis: null`과 사유를 준다 — 추측으로 채우지 않는다.** 확신이 안 서거나 여러 축에 걸치는 질문이면 **도구를 여러 번 부르기 전에** 먼저 여기에 원문을 넣는 편이 답이 정확해진다. 서버는 클라이언트가 번역한 도구 호출만 보고 원문 질문을 볼 수 없어서, 이게 원문이 우리에게 닿는 유일한 통로이기도 하다 | 결함 |
| problem | No | 무엇이 틀렸는지. 사용자가 지적한 말을 그대로 옮겨도 된다. kind='결함'이면 필수, kind='질문기록'이면 비워도 된다. | |
| expected | No | 사용자가 맞다고 본 값이 있으면 | |
| question | No | 사용자의 **원래 질문**(kind='질문기록'이면 필수). ⚠️ **개인 식별 조합은 일반형으로 치환해서 넣어라** — 소득·보유자산·보유단지·거주지 중 **둘 이상이 겹치면** 그대로 적지 말 것(예: '○○아파트 33평 보유 + 주식 10억 + 잠실 거주' → '1주택 보유(대출 없음), 인근 재건축 단지로 갈아타기'). 계산에 꼭 필요한 수치 하나(연소득 등)는 남겨도 된다. 무인증 공개 서버의 로그다 | |
| tool_used | No | 문제가 된 답을 만든 도구 이름 | |
| wrong_value | No | 틀린 수치·문장 | |
| missing_axis | No | answered_fully=false일 때 **없어서 못 답한 축**(예: '단지별 구조형식(벽식/라멘) 라벨 없음', '경기 정비사업 단계 조회 불가 — 서울 한정'). 로드맵의 원천이 된다 | |
| answered_fully | No | kind='질문기록' 전용 — 이 서버 도구만으로 질문에 **완결된 답**을 했는가. false면 missing_axis에 무엇이 없었는지 적어라(질문은행의 ●/◐/○ 판정에 그대로 쓰인다) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (no read-only, no idempotent, no destructive hints), so the description carries the behavioral burden. It explicitly discloses side effects: reports are sent to server operators and used for actual fixes; 질문기록 writes a record and may produce routing decisions; quota exemption is stated as of a specific date; rate limits are disclosed; personal-data normalization is required; and the tool cannot see raw user questions — all useful behavioral context well beyond what annotations express.
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 organized with clear headers (결함, 질문기록) and front-loads the actionable call-first rule. It is dense and long, but the content earns its place given the tool's complexity, the two kinds, routing details, and privacy constraints. Slight over-elaboration in the routing enumeration, but arguably valuable in context.
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 tool with 8 mostly-optional params, no output schema, and minimal annotations, the description covers all essential context: when to invoke, what each kind produces, expectations about the routing response, quota configuration, personal-data handling, and relationship to sibling tools. There is no obvious missing context for an agent to select and invoke it 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 description coverage is 100%, so baseline would be 3 — but the description adds conditional-requirement semantics (problem required for 결함, question required for 질문기록, answered_fully/missing_axis interplay) and concrete examples for the tricky question field, including a replacement example. Only reason it's not 5 is that the schema itself was already detailed; still, the description adds meaningful guidance on the flags and the 완결/answered_fully logic.
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 states the tool's dual purpose — reporting wrong answers (kind='결함') and getting routing confirmation for original questions (kind='질문기록') — with distinct verbs and resources for each. It is easily distinguishable from the 50+ sibling tools, which are all realty data/query tools, while this is a meta/feedback 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?
Explicit when-to-use guidance: call it before issuing a correction when the user says something is wrong; do not call it speculatively when the user hasn't pointed out an error. It also explains when to prefer kind='질문기록' (uncertainty or multi-axis questions) and that the tool shares rate limits with the other write surface. The 'don't call the tool multiple times' guidance is included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search경매 물건 검색ARead-onlyIdempotentInspect
법원경매 물건을 자연어로 검색한다. 경매 전용 — 청약·분양 공고는 realty_presale, 분양가 적정성은 realty_presale_vs_market, 시세 통계는 realty_region_price_stats.
지역·물건종류·유찰횟수·감정가를 질의에서 뽑아 필터링한다.
예: "서울 강남구 아파트", "유찰 2회 이상인 경기도 오피스텔", "서울 아파트 감정가 5억 이하".
이 파서는 최소 어댑터라 못 쓰는 축(면적·기일·층 등)이 있다. 못 쓴 조건은 응답의
`unapplied_conditions`에 적히므로, 그게 비어 있지 않으면 결과 범위를 좁게 오인하지 말고
`realty_search_auctions`로 조건을 직접 지정해 다시 조회하라.
각 결과의 id는 이어서 fetch(id)에 그대로 넣으면 상세를 볼 수 있다.
**이 축의 자리** — 경매 검색은 둘이고 입력 형태로 갈린다. 사용자의 말을 문장 그대로
넘길 때가 이 도구(`search`)이고, 지역·종류·감정가·유찰횟수를 **값으로 이미 알 때**는
`realty_search_auctions`다(면적·기일·층 등 이 파서가 못 쓰는 축도 거기서 지정한다).
상세는 `fetch`로 이어간다 — 여기 나온 id를 그대로 넣으면 된다.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 경매 물건을 찾는 **자연어 한 줄**. 예: '서울 강남구 아파트' · '유찰 2회 이상인 경기도 오피스텔' · '서울 아파트 감정가 5억 이하'. 이 파서가 읽는 축은 넷뿐이다 — 지역(시도는 '서울'·'서울특별시' 둘 다 되고, 시군구는 '강남구'·'평택시'처럼 원장 표기, 특례시는 '수원시 권선구'), 물건종류(아파트·오피스텔·다세대·연립주택·단독주택·근린시설·상가·대지·임야·전답 등), 유찰횟수, 감정가(억/만원 표기). 면적·기일·층은 못 읽고 unapplied_conditions로 실토하니 그 축이 필요하면 realty_search_auctions를 쓰라. 사건번호를 이미 아는 경우는 검색이 아니라 realty_get_auction_case다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint 등이 이미 안전성을 알기는 하지만, 설명은 '파서는 최소 어댑터라 못 쓰는 축이 있고 못 쓴 조건은 unapplied_conditions에 기록된다'라는 동작상을 추가로 공개한다. 또한 결과를 좁게 해석하지 말고 realty_search_auctions로 재조회하라는 안내와 결과 id를 fetch에 그대로 써서 상세를 보라는 동작까지 설빙을 넘어서 제공한다.
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?
목적이 앞에 배치되고 예시가 바로 뒤따라 하여 전면적으로 잘 구조화되어 있다. 다만 'presale/실패 vs 검색축 구분', '네 가지 파싱 축'과 같은 내용이 여러 곳에서 반복되어 각 문장이 모두 반드시 필요한 것으로 보지는 않는다.
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?
출력 스키마가 없는 상태에서도 unapplied_conditions 존재를 직접 알려주고, 응답에서 이에 따른 후속권한과 fetch(id) 사용법을 제공해 에이전트가 결과를 오해하지 않고 다음 행동을 결정할 수 있다. 대안 도구들과의 관계까지 포함하여 호출·처리·후속 전 과정이 완비되어 있다.
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 자체가 query에 대한 설명을 제공하지만, 설명에서 자연어 쿼리 예시, 지역·물건종류·유찰횟수·감정가만 파싱된다는 제약, 지역 표기 유형(수원시 권선구 등), 금액 단위(억/만원), 미지원 축의 대안을 모두 상세히 다룬다. 이는 입력 파라미터를 어떻게 만들어야 하는지에 대해 스키마 이상으로 구체적인 의미를 부여한다.
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?
법원경매 물건을 자연어로 검색한다'라는 구체적 동작과 대상을 명시했고, '경매 전용'이라 못으며 presale/분양가/시세 통계 등 다른 도구를 명시적으로 제외해 형제 도구와 분명히 구분된다. 또한 문장 그대로 검색하는 것과 값으로 검색하는 realty_search_auctions의 차이도 제시하여 목적이 완전하다.
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?
자연어 문장이면 이 도구를 쓰고, 값을 이미 알면 realty_search_auctions를 쓰라는 조건이 명시되어 있다. 또한 면적·기일·층 축이 필요하거나 unapplied_conditions가 비어 있지 않은 경우에 realty_search_auctions로 재조회하라는 안내, 사건번호를 알면 realty_get_auction_case를 쓰라는 안내까지 포함되어 사용 시점과 대안이 모두 제시됨.
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. Dates show when Glama detected each change.
2 tool updates
- Changed
realty_region_price_stats1 field changed- added
Input schema / properties / top_nAdded value: +{ + "anyOf": [ + { + "maximum": 20, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "**가격순 상위 거래 '목록'을 함께 받는다**(1~20). '신고가 상위 5개', '제일 비싸게 팔린 아파트', '고가 거래 목록'처럼 **개별 거래를 나열**하는 질문이 이 인자다 — 안 주면 이 도구는 평균·중앙·최고 같은 **집계만** 답하고 목록은 못 준다. 행에 단지·전용면적·평형·금액·계약일·층이 실린다(top_transactions). metric='price'에서만 동작한다 (허용 범위 1~20)", + "title": "Top N" +}
- Changed
realty_search_complexes2 fields changed- added
Input schema / properties / max_householdsAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "세대수 상한 — '300세대 이하 소규모'처럼 위쪽을 자를 때. min_households와 함께 주면 구간이 된다", + "title": "Max Households" +} - added
Input schema / properties / min_householdsAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "**세대수 하한** — '500세대 이상', '대단지'를 여기에 넣는다(예: 500). 세대수가 원장에 없는 단지는 이 조건에서 제외되고 그 건수를 meta.households_scope로 실토한다(미상 ≠ 소규모)", + "title": "Min Households" +}
1 tool update
- Changed
realty_policy_rules1 field changed- changed
Input schema / properties / topic / descriptionPrevious value: -"**어느 표를 볼지 고른다 — 사용자가 쓰는 말로 찾아라.** axes=상품별 차이·6·27이 뭐에 걸리나·DSR 6축·수도권/규제지역 축 | **횡단 사실의 진실원**(6·27 상품별 적용·DSR 6축·수도권/규제지역·세대/인별/물건 기준 충돌). '어느 상품이 뭐가 다른가'류는 여기부터 — 상품 토픽과 어긋나면 이 표가 맞다, acquisition_tax=취득세·취득세율·다주택 중과·농특세·지방교육세·생애최초 감면 | 취득세율표(표준 구간·중과·부가세목·예외/특례·과표 논점·취득시기), regulated_area=규제지역·조정대상지역·투기과열지구·분양가상한제·토지거래허가 | **현재** 지정 현황, loan_rules=주담대·LTV·DSR·대출한도·스트레스 금리·생애최초 | 주담대 규제 원표(LTV·가액구간 한도·만기·DSR·스트레스 금리·생애최초 절차) — 조건별 판정·계산은 realty_loan_limit, credit_rehab=개인회생·신용회복·면책·공공정보 등록 | 개인회생×신용·대출 규칙 — 공공정보 등록·조기삭제(1년 성실변제, 2025-07)·면책, 기산점(개시≠인가) 함정, lease_rules=전월세·임대차·계약갱신청구권·5% 상한·묵시적 갱신·집주인 실거주 | 주택임대차 갱신 — 갱신요구권(행사기간·거절사유·1회 2년)·5% 증액상한·갱신 후 해지권(3개월)·매수인 실거주 거절 판례(2021다266631), auction_rights=경매 권리분석·말소기준권리·대항력·확정일자·최우선변제·배당요구 | 민사집행법 91조 인수/소멸·주임법 대항력·우선변제권·배당요구·배당순위 — '낙찰받으면 보증금 물어주나'가 여기다. **판정은 안 한다**, 금액표는 realty_small_deposit_check, capital_gains_tax=양도세·양도소득세·세율표·장특공제·필요경비·다주택 중과·이월과세 | 세율표·필요경비 자본적/수익적 분류·중과 현황·2026 개편 계류 — 세액 계산은 realty_capital_gains_tax, **비과세 갈림길은 one_home_exemption_map**, subscription_account=청약통장·청약 가점·배점표·납입 인정·예치금 전환 | 청약통장·가점 규칙(배점표 84점·기산 함정·월 25만원 인정·미납/선납·예부금 전환 2026-09-30 한시) — 점수 계산은 realty_subscription_score, redevelopment_rules=정비구역 지정·노후도 요건·조합원 지위양도·비례율·재건축진단 | 재개발·재건축 — 노후도 60%·서울 조례 지표·39조 지위양도 제한과 예외·비례율 산식. 지위양도 가능 판정은 realty_member_transfer_check, redevelopment_entitlement=재개발 입주권·분양자격·권리산정기준일·뚜껑·도로 지분 | 재개발 분양자격 갈림길 지도(서울 한정) — 5경로·권리산정기준일 3층 경계·확인 체크리스트. 판정은 안 한다, remodeling_rules=리모델링 조합·15년 연한·수직증축·1기 신도시·증축 한도 | 공동주택 리모델링(**주택법** — 도시정비법과 별개 법제): 전용 85㎡ 미만 40%/이상 30%·세대수 15%·수직증축·39조 적용 밖·1기 신도시 특례. redevelopment_rules와 섞으면 오답, one_home_exemption_map=1세대1주택 비과세·2년 보유·2년 거주·12억·일시적 2주택·상속주택·동거봉양·상생임대 | **양도세 비과세 갈림길 지도** — 5관문·5경로+확인 체크리스트. **판정은 안 하지만 무엇을 확인해야 하는지는 다 있다** — 비과세 가능성이 보이면 세무사로 보내기 전에 여기다, comprehensive_real_estate_tax=종부세·종합부동산세·공시가격 문턱·공동명의·보유세 | **종부세 과세 문턱과 명의 축** — 인별 과세라 단독/공동명의가 갈리는 자리. 공시가 기준 문턱·공동명의 특례·2026 개편안(계류). **세액 계산은 안 한다**, gift_tax_and_funding_source=증여세·자금출처·자금출처조사·부모님이 보태주는 돈·차용증·공동명의 지분 | 증여재산공제 문턱 + 소명 — 10년 합산·배우자 6억·직계존속 5천만·혼인출산 1억 통합한도·지분≠기여도면 증여. **세액 계산·절세 설계는 안 한다**, property_tax=재산세·6월 1일 기준일·공시가격 과세표준·보유세 | **재산세(주택분) 구조·기준일·명의 축** — **물건별 과세라 공동명의여도 총액이 같다**(종부세와 반대). 6월 1일 기준일 함정·1주택 특례(2026 일몰). **계산은 안 한다**, jeonse_loan_rules=전세자금대출·버팀목·전세대출 DSR·중소기업 청년 전세 | 자격 + DSR 취급 — 구입자금과 다른 상품군이라 loan_rules 표를 갖다 쓰면 오답. **원금이 DSR에 안 잡히고 이자만**(정책분은 아예 제외). 한도 계산은 안 한다, interim_collective_loan=중도금대출·집단대출·잔금대출 전환·이자후불제 | **분양 중도금(집단)대출 구조·DSR·6억 한도 취급** — 중도금은 DSR 밖이지만 **다른 대출을 받을 땐 내 DSR에 잡히고, 잔금 전환 시 DSR·6억 한도가 걸린다**(계약 통과≠잔금 통과), living_expense_mortgage=생활안정자금·생활자금 대출·보유 주택 담보(구입 아님) | 이미 가진 집을 담보로 — **구입 목적이 아니다**. 수도권·규제지역 **1주택 1억 한도(기존분 합산)·다주택 전면 금지**, DSR은 구입자금과 똑같이 걸린다, jeonse_return_mortgage=전세퇴거자금·전세보증금 반환 대출·세입자 내보낼 돈 | 원칙 1억이지만 **6·27 이전 임대차계약 + 소유권 취득분은 경과조치로 초과 가능**(LTV 70%). 경과조치는 **DSR 예외가 아니다**, auction_balance_loan=경락잔금대출·낙찰 잔금·대금지급기한 | **경락잔금대출**(경매 낙찰 잔금) — 대금지급기한에 대출 실행이 묶이는 구조. 방공제·MCI는 room_deduction_and_mci, funding_plan_report=자금조달계획서·입주계획서·증빙·30일 기한 | **주택취득자금 조달 및 입주계획서** — 제출 대상·증빙·30일 기한과 가족 차용을 적을 때 걸리는 자리, room_deduction_and_mci=방공제·MCI·MCG·실제 대출가능액이 깎이는 이유 | **방공제·MCI/MCG**(매매·경매 공통) — 규제 상한과 별개로 실제 대출가능액을 깎는 구조. 'MCI 되면 4.3억, 안 되면 3.9억'류와 '왜 계약 전에 확정을 못 해주나'의 근거, unit_alteration_rules=내력벽 철거·벽 헐기·욕실 이동·인테리어 허가·층상배관 | 이 집을 내 마음대로 고칠 수 있나 — 내력벽 철거 가부('2016년 유예로 허용'은 통설이고 조문이 깬다)·행위허가 동의율·경미한 행위·층상/층하 배관. 단지별 값은 realty_remodel_feasibility, list=제공 항목 안내(토픽 목차)"New value: +"**어느 표를 볼지 고른다 — 사용자가 쓰는 말로 찾아라.** axes=상품별 차이·6·27이 뭐에 걸리나·DSR 6축·수도권/규제지역 축 | **횡단 사실의 진실원**(6·27 상품별 적용·DSR 6축·수도권/규제지역·세대/인별/물건 기준 충돌). '어느 상품이 뭐가 다른가'류는 여기부터 — 상품 토픽과 어긋나면 이 표가 맞다, acquisition_tax=취득세·취득세율·다주택 중과·농특세·지방교육세·생애최초 감면 | 취득세율표(표준 구간·중과·부가세목·예외/특례·과표 논점·취득시기), regulated_area=규제지역·조정대상지역·투기과열지구·분양가상한제·토지거래허가 | **현재** 지정 현황, loan_rules=주담대·LTV·DSR·대출한도·스트레스 금리·생애최초 | 주담대 규제 원표(LTV·가액구간 한도·만기·DSR·스트레스 금리·생애최초 절차) — 조건별 판정·계산은 realty_loan_limit, credit_rehab=개인회생·신용회복·면책·공공정보 등록 | 개인회생×신용·대출 규칙 — 공공정보 등록·조기삭제(1년 성실변제, 2025-07)·면책, 기산점(개시≠인가) 함정, lease_rules=전월세·임대차·계약갱신청구권·5% 상한·묵시적 갱신·집주인 실거주 | 주택임대차 갱신 — 갱신요구권(행사기간·거절사유·1회 2년)·5% 증액상한·갱신 후 해지권(3개월)·매수인 실거주 거절 판례(2021다266631), auction_rights=경매 권리분석·말소기준권리·대항력·확정일자·최우선변제·배당요구 | 민사집행법 91조 인수/소멸·주임법 대항력·우선변제권·배당요구·배당순위 — '낙찰받으면 보증금 물어주나'가 여기다. **판정은 안 한다**, 금액표는 realty_small_deposit_check, capital_gains_tax=양도세·양도소득세·세율표·장특공제·필요경비·다주택 중과·이월과세·양도세 신고·신고기한·예정신고·확정신고·기한후신고·가산세·분납·지방소득세 신고 | 세율표·필요경비 자본적/수익적 분류·중과 현황·2026 개편 계류 + **신고·납부 기한과 가산세**(예정 2개월·확정 5월·지방소득세 +2개월·분납·감면·비과세면 신고 의무가 없는가) — 세액 계산은 realty_capital_gains_tax, **비과세 갈림길은 one_home_exemption_map**, subscription_account=청약통장·청약 가점·배점표·납입 인정·예치금 전환 | 청약통장·가점 규칙(배점표 84점·기산 함정·월 25만원 인정·미납/선납·예부금 전환 2026-09-30 한시) — 점수 계산은 realty_subscription_score, redevelopment_rules=정비구역 지정·노후도 요건·조합원 지위양도·비례율·재건축진단 | 재개발·재건축 — 노후도 60%·서울 조례 지표·39조 지위양도 제한과 예외·비례율 산식. 지위양도 가능 판정은 realty_member_transfer_check, redevelopment_entitlement=재개발 입주권·분양자격·권리산정기준일·뚜껑·도로 지분 | 재개발 분양자격 갈림길 지도(서울 한정) — 5경로·권리산정기준일 3층 경계·확인 체크리스트. 판정은 안 한다, remodeling_rules=리모델링 조합·15년 연한·수직증축·1기 신도시·증축 한도 | 공동주택 리모델링(**주택법** — 도시정비법과 별개 법제): 전용 85㎡ 미만 40%/이상 30%·세대수 15%·수직증축·39조 적용 밖·1기 신도시 특례. redevelopment_rules와 섞으면 오답, one_home_exemption_map=1세대1주택 비과세·2년 보유·2년 거주·12억·일시적 2주택·상속주택·동거봉양·상생임대 | **양도세 비과세 갈림길 지도** — 5관문·5경로+확인 체크리스트. **판정은 안 하지만 무엇을 확인해야 하는지는 다 있다** — 비과세 가능성이 보이면 세무사로 보내기 전에 여기다, comprehensive_real_estate_tax=종부세·종합부동산세·공시가격 문턱·공동명의·보유세 | **종부세 과세 문턱과 명의 축** — 인별 과세라 단독/공동명의가 갈리는 자리. 공시가 기준 문턱·공동명의 특례·2026 개편안(계류). **세액 계산은 안 한다**, gift_tax_and_funding_source=증여세·자금출처·자금출처조사·부모님이 보태주는 돈·차용증·공동명의 지분 | 증여재산공제 문턱 + 소명 — 10년 합산·배우자 6억·직계존속 5천만·혼인출산 1억 통합한도·지분≠기여도면 증여. **세액 계산·절세 설계는 안 한다**, property_tax=재산세·6월 1일 기준일·공시가격 과세표준·보유세 | **재산세(주택분) 구조·기준일·명의 축** — **물건별 과세라 공동명의여도 총액이 같다**(종부세와 반대). 6월 1일 기준일 함정·1주택 특례(2026 일몰). **계산은 안 한다**, jeonse_loan_rules=전세자금대출·버팀목·전세대출 DSR·중소기업 청년 전세 | 자격 + DSR 취급 — 구입자금과 다른 상품군이라 loan_rules 표를 갖다 쓰면 오답. **원금이 DSR에 안 잡히고 이자만**(정책분은 아예 제외). 한도 계산은 안 한다, interim_collective_loan=중도금대출·집단대출·잔금대출 전환·이자후불제 | **분양 중도금(집단)대출 구조·DSR·6억 한도 취급** — 중도금은 DSR 밖이지만 **다른 대출을 받을 땐 내 DSR에 잡히고, 잔금 전환 시 DSR·6억 한도가 걸린다**(계약 통과≠잔금 통과), living_expense_mortgage=생활안정자금·생활자금 대출·보유 주택 담보(구입 아님) | 이미 가진 집을 담보로 — **구입 목적이 아니다**. 수도권·규제지역 **1주택 1억 한도(기존분 합산)·다주택 전면 금지**, DSR은 구입자금과 똑같이 걸린다, jeonse_return_mortgage=전세퇴거자금·전세보증금 반환 대출·세입자 내보낼 돈 | 원칙 1억이지만 **6·27 이전 임대차계약 + 소유권 취득분은 경과조치로 초과 가능**(LTV 70%). 경과조치는 **DSR 예외가 아니다**, auction_balance_loan=경락잔금대출·낙찰 잔금·대금지급기한 | **경락잔금대출**(경매 낙찰 잔금) — 대금지급기한에 대출 실행이 묶이는 구조. 방공제·MCI는 room_deduction_and_mci, funding_plan_report=자금조달계획서·입주계획서·증빙·30일 기한 | **주택취득자금 조달 및 입주계획서** — 제출 대상·증빙·30일 기한과 가족 차용을 적을 때 걸리는 자리, room_deduction_and_mci=방공제·MCI·MCG·실제 대출가능액이 깎이는 이유 | **방공제·MCI/MCG**(매매·경매 공통) — 규제 상한과 별개로 실제 대출가능액을 깎는 구조. 'MCI 되면 4.3억, 안 되면 3.9억'류와 '왜 계약 전에 확정을 못 해주나'의 근거, unit_alteration_rules=내력벽 철거·벽 헐기·욕실 이동·인테리어 허가·층상배관 | 이 집을 내 마음대로 고칠 수 있나 — 내력벽 철거 가부('2016년 유예로 허용'은 통설이고 조문이 깬다)·행위허가 동의율·경미한 행위·층상/층하 배관. 단지별 값은 realty_remodel_feasibility, list=제공 항목 안내(토픽 목차)"
1 tool update
- Changed
realty_region_price_stats5 fields changed- changed
Input schema / properties / area_m2_exclusive / descriptionPrevious value: -"전용면적을 **㎡ 그대로** 받는다(예: 84, 59, 114.98). 사용자가 '전용 84㎡'라고 말했으면 환산하지 말고 84를 여기 넣어라 — 서버가 평으로 환산하고 그 사실을 응답에 적는다. pyeong_exclusive와 동시에 주면 거절한다 (허용 범위 0 초과~500)"New value: +"전용면적을 **㎡ 그대로** 받는다(예: 84, 59, 114.98). 사용자가 '전용 84㎡'라고 말했으면 환산하지 말고 84를 여기 넣어라 — 서버가 평으로 환산하고 그 사실을 응답에 적는다. pyeong_exclusive와 동시에 주면 거절한다 **전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다** — 주면 전체 평형 기준 값이 오고 warning_pyeong_fallback으로 실토한다. 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라. (허용 범위 0 초과~500)" - changed
Input schema / properties / area_m2_supply / descriptionPrevious value: -"공급(분양)면적을 **㎡ 그대로** 받는다(예: 112.8). pyeong_supply와 동시에 주면 거절한다 (허용 범위 0 초과~800)"New value: +"공급(분양)면적을 **㎡ 그대로** 받는다(예: 112.8). pyeong_supply와 동시에 주면 거절한다 **전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다** — 주면 전체 평형 기준 값이 오고 warning_pyeong_fallback으로 실토한다. 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라. (허용 범위 0 초과~800)" - changed
Input schema / properties / metric / descriptionPrevious value: -"price=매매, rental=전월세"New value: +"price=매매, rental=전월세. **평형 인자(pyeong_exclusive·pyeong_supply·area_m2_exclusive·area_m2_supply)는 price에서만 먹는다** — 전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다(전체 평형 값이 오고 warning_pyeong_fallback으로 실토한다). 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라" - changed
Input schema / properties / pyeong_exclusive / descriptionPrevious value: -"전용면적 기준 **실평수(평)** — ㎡가 아니다. 전용 84㎡면 25.4를 넣는다. **사용자가 ㎡로 말했으면 이 인자가 아니라 area_m2_exclusive를 쓰라** (㎡ 값을 여기 넣으면 60평 초과로 거절된다). 1평=3.3058㎡"New value: +"전용면적 기준 **실평수(평)** — ㎡가 아니다. 전용 84㎡면 25.4를 넣는다. **사용자가 ㎡로 말했으면 이 인자가 아니라 area_m2_exclusive를 쓰라** (㎡ 값을 여기 넣으면 60평 초과로 거절된다). 1평=3.3058㎡ **전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다** — 주면 전체 평형 기준 값이 오고 warning_pyeong_fallback으로 실토한다. 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라." - changed
Input schema / properties / pyeong_supply / descriptionPrevious value: -"분양평수(공급면적, 평) — 흔히 말하는 '34평'이 이것이다. 내부에서 ×0.745로 전용 실평수로 환산한다. **㎡로 말했으면 area_m2_supply를 쓰라**"New value: +"분양평수(공급면적, 평) — 흔히 말하는 '34평'이 이것이다. 내부에서 ×0.745로 전용 실평수로 환산한다. **㎡로 말했으면 area_m2_supply를 쓰라** **전월세(metric='rental') 통계는 평형별로 나뉘어 있지 않아 평형 인자가 적용되지 않는다** — 주면 전체 평형 기준 값이 오고 warning_pyeong_fallback으로 실토한다. 평형별 전월세는 단지 단위 realty_complex_rent_by_pyeong으로 조회하라."
7 tool updates
- Changed
realty_auction_alerts1 field changed- changed
Input schema / properties / sido / descriptionPrevious value: -"시도 (예: 세종, 경기도)"New value: +"시도 (예: 세종, 경기도) ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라."
- Changed
realty_auction_sale_rate1 field changed- changed
Input schema / properties / sido / descriptionPrevious value: -"시도 — '서울'처럼 줄여 써도 되고 '서울특별시'도 된다(서버가 정식명으로 편다). 원장 표기는 서울특별시·경기도·부산광역시·세종특별자치시·강원특별자치도 같은 정식명이다. '광주'는 광주광역시와 경기도 광주시 둘 다라 한쪽으로 읽지 않는다 — 정식명으로 넣어라"New value: +"시도 — '서울'처럼 줄여 써도 되고 '서울특별시'도 된다(서버가 정식명으로 편다). 원장 표기는 서울특별시·경기도·부산광역시·세종특별자치시·강원특별자치도 같은 정식명이다. ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라."
- Changed
realty_compare_auction_vs_market1 field changed- changed
Input schema / properties / sido / descriptionPrevious value: -"시도 — '서울'처럼 줄여 써도 되고 '서울특별시'도 된다(서버가 정식명으로 편다). 원장 표기는 서울특별시·경기도·부산광역시·세종특별자치시·강원특별자치도 같은 정식명이다. '광주'는 광주광역시와 경기도 광주시 둘 다라 한쪽으로 읽지 않는다 — 정식명으로 넣어라"New value: +"시도 — '서울'처럼 줄여 써도 되고 '서울특별시'도 된다(서버가 정식명으로 편다). 원장 표기는 서울특별시·경기도·부산광역시·세종특별자치시·강원특별자치도 같은 정식명이다. ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라."
- Changed
realty_notice_text1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"쪽 범위 직접 지정 (예: '1-3', '44'). query와 택일"New value: +"쪽 범위 직접 지정 (예: '1-3', '44'). **query와 택일이며 함께 주면 거절한다**(error='query_and_pages_conflict') — 종전엔 query를 조용히 버렸다. pages와 함께 준 pages_only는 무의미하므로 무시하고 meta.pages_only_ignored로 실토한다"
- Changed
realty_onbid_sale_rate1 field changed- changed
Input schema / properties / sido / descriptionPrevious value: -"시도. **주의: 결과 원장에는 지역 컬럼이 없다** — 물건명 접두에서 되찾은 값으로 거른다(커버리지는 응답의 region_basis에 실린다)."New value: +"시도. **주의: 결과 원장에는 지역 컬럼이 없다** — 물건명 접두에서 되찾은 값으로 거른다(커버리지는 응답의 region_basis에 실린다). ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라."
- Changed
realty_search_auctions1 field changed- changed
Input schema / properties / sido / descriptionPrevious value: -"시도. '서울'처럼 줄여 써도 되고 '서울특별시'도 된다."New value: +"시도. '서울'처럼 줄여 써도 되고 '서울특별시'도 된다. ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라."
- Changed
realty_search_onbid1 field changed- changed
Input schema / properties / sido / descriptionPrevious value: -"시도. '서울'처럼 줄여 써도 되고 '서울특별시'도 된다."New value: +"시도. '서울'처럼 줄여 써도 되고 '서울특별시'도 된다. ⚠️ '광주'는 광주광역시와 경기도 광주시 둘 다라 **한쪽으로 읽지 않고 거절한다**(error='sido_ambiguous') — 광역시면 '광주광역시', 경기도 광주시면 sido='경기도'·sigungu='광주시'로 갈라 넣어라."
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity – fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge – works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge – works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Korean apartment data: official transaction prices, jeonse ratios, AI forecasts. 45,000+ complexes.
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 lodging: 84,490 stays from 4 government permit ledgers + KTO TourAPI, honest gaps
Related MCP Servers
- AlicenseAqualityAmaintenanceConnects to Korea's MOLIT real estate API to provide 14+ tools for live transaction data and financial scenarios like buy now, buy later, or invest only based on income and savings.16375MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to query Korean apartment real-estate data, including official transaction prices, jeonse ratios, and AI price forecasts for 45,000+ complexes.MIT
- 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.851MIT
- FlicenseNot gradedqualityBmaintenanceEnables LLM clients to ask plain-language questions about Korean public auction property data from the 온비드 OpenAPI, including normalized pricing, location, and failed-sale history.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.