korea-realty
Server Details
Korean real estate: court auctions, 10M+ MOLIT records, subscription notice facts, loan/DSR rules
- Status
- Healthy
- Uptime
- 99.9% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- sallim-app/korea-realty
- GitHub Stars
- 0
- Server Listing
- korea-realty
TDQS
Scored across 54 tools
대부분 도구가 '이 축의 자리'를 명시하고 인접 도구와의 경계를 상세히 설명해 구분 가능성이 높다. 다만 search/realty_search_auctions, fetch/realty_get_auction_case, 여러 시세·분양가·경매 낙찰가율 도구처럼 기능이 겹치는 쌍이 많아 완전한 무모호는 아니다.
realty_ 접두어의 snake_case 규칙이 대부분 도구에 일관되게 적용돼 패턴이 읽힌다. 다만 fetch, search, report_issue 세 도구만 접두어 없이 남아 있어 경미한 불일치가 있다.
54개는 한국 부동산 데이터·정책·계산이라는 도메인 범위가 매우 넓다는 점을 감안해도 한 서버의 도구 세트로는 과도하다. 여러 하위 축이 지나치게 세분화돼 있어 통합 여지가 크다.
경매·공매·시세·분양·정책·세금·대출·정비사업·입지·거시·신고까지 도메인 전반을 커버하고, 각 도구가 데이터 한계와 대안 축을 명시해 실질적 dead end가 적다. 읽기 전용 조회·계산 서버라는 성격상 CRUD 갭은 해당 없음에 가깝다.
Available Tools
54 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종 중)**: 지역의 가격 **수준** 비교는 이게 기본값이다.
이상치 필터(계약해제 제외 + **직거래 중** 같은 평형대 중개거래 중앙값의 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?
Beyond the readOnly/idempotent annotations, the description discloses the outlier filter (excluding contract cancellations and certain direct trades below 50% of the median), explaining why results differ from realty_region_price_stats. It also reveals by_dong behavior: only cells with 3+ samples are shown, and band labels use exclusive-area pyeong rather than the user's '분양평' intuition.
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 the structure is efficient: purpose first, then alternatives, then filters, then label conversion. The bolded key phrases and short line breaks make it scannable, though a few clauses are dense enough to require careful re-reading.
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 conveys the core behavior, band definitions, filtering rules, and parameter semantics. It does not explicitly describe the exact return shape (e.g., whether each band returns median values or ranges), but the title, sample thresholds, and '중앙값' references make the expected result reasonably inferable.
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 parameters at 100%, so the baseline is 3. The description adds real value on top: region may contain a legal dong and warns that using a whole gu hides old/new downtown differences, and by_dong's 'where is cheap in this district' use case is illustrated with a concrete price range example.
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 queries regional sale prices divided into four pyeong-size bands by exclusive area. It also distinguishes itself from siblings by positioning it as the default tool for comparing regional price levels and explicitly directing complex-specific questions to realty_search_complexes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is clearly scoped: it is for questions like 'what price range is a given pyeong band in ○○구?', it is the default for level comparison, and it names alternatives — realty_region_price_stats for monthly trends and realty_search_complexes when a specific complex is known. It even says to prefer this tool when level estimates diverge.
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 | 시군구 (예: 강남구, 수원시) ⚠️ 시도 없이 시군구만 주면 **합치지 않고 거절한다**(error='region_ambiguous') — '중구'처럼 여러 시도에 같은 이름이 있으면 합친 값은 어느 지역의 것도 아니다. sido와 갈라 넣어라(예: sido='서울특별시'·sigungu='중구'). 거절 응답이 후보를 준다. | |
| usage_name | No | 물건 종류 — 원장 값 예: 아파트·오피스텔·다세대·연립주택·단독주택·다가구주택·근린시설·상가·대지·임야·전답. 부분일치라 '빌라'는 '연립주택,다세대,빌라' 행에 걸린다(**표기를 바꾸지 않는다** — '다세대'로 자동 매핑하는 것은 낙찰가율 통계 realty_auction_sale_rate 쪽이다). '토지'는 이 원장에 없는 이름이라 거절된다 — 대지·임야·전답으로 나뉘어 있다. 비우면 전 종류 | |
| 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?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: results must be presented as candidates needing verification, not recommendations, and it warns that many failed bids can signal rights issues or property defects. This interpretive/presentation guidance is valuable 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 a few tight sentences, front-loaded with the core purpose, followed by narrowing guidance, interpretation caution, presentation rule, and sibling differentiation. Each sentence earns its place — no filler. It is slightly longer than strictly necessary, but every clause adds functional value for the agent.
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 filtered search tool, the combination is nearly complete: annotations cover safety (readOnly, openWorld, idempotent, non-destructive), the schema covers all parameters with ambiguity and mapping caveats, and the description covers purpose, usage routing, interpretation, and presentation. The return format is not described, but no output schema exists and the tool's output (a list of matching auction properties with discount details) is predictable from the name and purpose. Nothing critical is missing for 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 description coverage is 100% — all 7 parameters are documented in the schema with rich detail (ambiguity warnings for '광주' and '중구', usage_name mapping notes for '빌라', max_discount_pct extreme-discount caveat). The description adds no parameter-level semantics beyond schema, which is acceptable per the baseline-3 rule for high schema coverage. The description's sido/sigungu narrowing hint maps to existing schema docs rather than adding new param 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 opens with a specific verb and resource: '유찰이 쌓여 최저입찰가가 크게 떨어진 경매 물건을 골라낸다' (selects auction properties where failed bids accumulated and the minimum bid dropped significantly). It states the selection criterion (accumulated failed bids → big price drop) and explicitly names the sibling it is not — realty_search_auctions(min_fail_count) — so an agent can distinguish them without opening 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?
Usage guidance is explicit and actionable: narrow by sido/sigungu for '○○에서 유찰 많은 물건' queries, and the tool explicitly routes to the sibling — realty_search_auctions(min_fail_count) for condition filtering/list, this tool for big-discount candidate discovery (including extreme discount cuts). It also warns not to combine both because the same items appear in both, preventing duplicate-result confusion.
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?
Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds substantial behavioral context an agent could not infer: photos survive only in a snapshot since court sources delete them, fail_count can legitimately disagree with the schedule rows, tracking/price_events may be empty and empty ≠ no change, and current_min_bid_10k may be stale when min_bid_source='item_list'. This is exactly the value-beyond-annotations case.
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 and each paragraph addresses a real failure mode, but it is long and dense with parenthetical warnings and emoji emphasis that could be trimmed. It earns most of its length but is not tight; several caution clauses (kind_note, fail_count_note, min_bid_note) could be consolidated.
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?
No output schema exists, so the description must carry return-value semantics, and it does: it explains the meaning of 유찰 rows, null result rows, min_bid_10k absence with kind_note, note fields, and snapshot-emptiness caveats. It is near complete for a read-only lookup, missing only a compact restatement of the primary return shape or pagination 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?
Schema description coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: it warns not to invent meaning for null result rows, explains that min_bid_source=item_list indicates staleness for the returned current_min_bid_10k, and clarifies what court_schedule rows represent. These are output-semantics not captured in parameter docs.
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 (경매 사건 하나의 유찰 이력·가격 변동·물건 사진 조회) and distinguishes itself from siblings like realty_get_auction_case and realty_search_auctions by naming the exact fields it owns (유찰 이력, min_bid_10k 저감, 사진 URL). An agent can tell it 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?
Gives an explicit trigger question class ("몇 번 유찰됐어? 얼마나 떨어진 거야? 사진 있어?") which tells the agent when to call this. However, it never names the alternative tool (e.g. realty_get_auction_case) or an exclusion case, so routing is clear only by field ownership, not by explicit contrast.
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로 준다 ⚠️ 시도 없이 시군구만 주면 **합치지 않고 거절한다**(error='region_ambiguous') — '중구'처럼 여러 시도에 같은 이름이 있으면 합친 값은 어느 지역의 것도 아니다. sido와 갈라 넣어라(예: sido='서울특별시'·sigungu='중구'). 거절 응답이 후보를 준다. | |
| 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 read-only and idempotent, so the description does not need to restate safety. It adds rich non-obvious behaviors: unsupported period parameters are silently ignored, '빌라' is auto-mapped to '다세대' with disclosure, '면적 미상' means missing area labels rather than zero, and the sample_period field must be reported. 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 paragraph carries a distinct operational warning or instruction: formula, period handling, usage_name mapping, area_band bias, and denominator distinction. The bold headers ('평형을 섞지 마라', '이 축의 자리') front-load the highest-risk guidance, making the length justified.
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 adequately explains the key response fields (sample_period, by_fail_count, by_area_band) and their interpretation. It covers the main traps an agent would need: area-band bias with empirical evidence, known data-quality issues like '빌라', and the correct relationship to a sibling tool. Nothing essential is missing for 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 adds real value beyond the schema: bid_count_max is clarified as an upper bound with the trend that more failures lower the ratio, area_band is strongly recommended when the property size is known, and usage_name's '빌라' mapping behavior and pitfalls are explained.
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 the exact user question the tool answers — '이 지역 이 물건은 보통 감정가의 몇 %에 낙찰되나' — and defines the metric formula (낙찰가율 = 낙찰가 / 감정가 × 100). It clearly distinguishes itself from realty_compare_auction_vs_market by emphasizing the appraisal-based denominator, which prevents confusion with the market-comparison 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?
It explicitly states when to use the tool ('입찰가를 정할 때 쓰는 핵심 지표'), tells the agent to include sample_period in '요즘'-type answers, warns that period-narrowing parameters are unsupported, and directs 연립주택 queries to usage_name='연립주택'. It also names the alternative tool for market-price comparisons and instructs not to mix the two percentages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_builder_presale_record시공사·시행사별 분양 성적 — 공급·무순위·청약 배수ARead-onlyIdempotentInspect
시공사·시행사별 분양 성적 — 공고 수·공급 세대·무순위(줍줍) 세대와 비율·청약 1순위 배수·미달 세대.
"○○건설 분양 성적", "GS건설 현장 무순위 많이 나왔나", "대전 시공사별 분양", "이 시행사 다른 현장은"류
질문의 자리다. builder(또는 developer)를 주면 그 회사 행과 **현장 목록**(단지·지역·공고일·공급·
무순위·비율·시행사)을, 아무것도 안 주면 공급 상위 N개 회사 순위를, region(시도)을 주면 그 시도로 좁힌다.
행마다 같은 창의 **전국 비율(baseline)**이 비교 기준으로 붙는다.
**결론에 반드시 옮길 것**(meta.disclosures):
· 무순위 세대는 **최종 미분양이 아니다**(당첨 후 계약 포기분 재공급). 무순위 뒤 남은 것은 별도 필드.
· 청약홈 밖 공급(지주택·자체분양·선착순·임의공급)은 없다 — 대구처럼 선착순으로 빼는 지역은 비율이 낮게 나온다.
· **재무 건전성 판정이 아니다** — PF·부채·보증은 DART 영역. "위험"·"부실" 같은 낙인을 붙이지 말고
수치와 전국 비율만 전하라.
· 공동시공은 각 사에 전량 귀속, 회사명 묶음은 우리 규칙, 무순위 연결률은 meta.match_rate.
view='sites'는 "무순위 청약에서도 신청이 모자란 단지" 목록이다 — 최근 회차 미달 세대(청약 미달이지 미판매·
계약 결과가 아니다)와 시군구 미분양 추이. 그 뒤 선착순 판매 여부는 모른다(meta.disclosures).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | sites 정렬 | shortfall |
| view | No | sites=무순위 청약 미달 단지 목록(최근 회차 △N, since는 최근 회차 월) | companies |
| group | No | 순위 모드의 묶음 단위 | 시공사 |
| since | No | 본공고 공고월 하한 YYYY-MM(기본 2024-07) | 2024-07 |
| top_n | No | 회사를 안 줬을 때 순위 모드의 행 수(공급 세대 내림차순) (허용 범위 1~50) | |
| region | No | 시도로 좁힌다(예: '대전', '경기') — 시군구는 받지 않는다 | |
| builder | No | 시공사명(부분일치, ㈜·주식회사 무시, '지에스건설'→GS건설 같은 별칭 흡수). 주면 그 회사 행 + 현장 목록 | |
| developer | No | 시행사(사업주체)명(부분일치). builder와 같이 주면 그 시행사와 한 현장만 남긴다 | |
| min_shortfall | No | sites: 최근 회차 미달 세대 하한 (허용 범위 0~100000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only/idempotent profile, but the description adds substantial behavioral context beyond them: the meta.disclosures warnings that 무순위 세대 is not final unsold inventory, that off-Cheongyak supply (지주택·자체분양·선착순) is excluded and deflates ratios in some regions, that this is not a financial-soundness verdict, joint-construction full attribution, and meta.match_rate. These are genuine caveats an agent needs to avoid misreporting.
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 and dense, but it is front-loaded (what it is, then trigger questions, then per-parameter behavior, then disclosure list) and every section carries actionable content. The disclosure block is verbose but not redundant against the schema or annotations.
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 9-parameter, multi-mode tool with no output schema, the description still tells the agent what comes back: company rows, site lists with specific columns, a national baseline attached per row, and meta.disclosures/match_rate. Nothing needed to invoke or interpret results 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?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: builder matches partially with alias absorption ('지에스건설'→GS건설), and combining builder+developer narrows to a single site. It also clarifies that in sites mode `since` is reinterpreted as the most recent round month, which goes beyond the schema's '하한' wording.
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 line names a specific verb+resource: presale performance broken down by 시공사/시행사, enumerating exactly which metrics (공고 수, 공급 세대, 무순위 세대·비율, 청약 1순위 배수, 미달 세대). The example-question list ('○○건설 분양 성적', 'GS건설 현장 무순위 많이 나왔나') anchors this as a builder/developer-level aggregation tool, distinguishing it from sibling per-complex tools like realty_presale or realty_presale_context.
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 routing rules are given: pass builder (or developer) to get that company's row plus its site list, pass nothing to get top-N supply companies, pass region to narrow to a province. view='sites' is also explicitly framed with its own intent ('무순위 청약에서도 신청이 모자란 단지'). No inference required to pick the right mode.
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로 준다 ⚠️ 시도 없이 시군구만 주면 **합치지 않고 거절한다**(error='region_ambiguous') — '중구'처럼 여러 시도에 같은 이름이 있으면 합친 값은 어느 지역의 것도 아니다. sido와 갈라 넣어라(예: sido='서울특별시'·sigungu='중구'). 거절 응답이 후보를 준다. | |
| 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 mark this as read-only, idempotent, and non-destructive, but the description adds substantial behavioral detail: it is slower (2-4 seconds), uses exact address/complex matching, filters to future dates by default, excludes properties outside the 50-150% appraisal band, and produces a specific signal set. It also discloses edge-case behavior — when area match fails, discount_vs_market_pct is null and signal is '판정보류', explicitly warning not to substitute with discount_vs_all_types_pct. The warning about 유찰 properties and the min_bid_source check further enhances transparency. 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 extremely well-structured, using bold markers, warnings, and sections. It front-loads the main purpose, then logically covers filters, edge cases, and usage guidance. Every sentence adds value — no fluff or repetition. The use of bullet-like breaks and emoji warnings makes it scannable despite length, earning the high 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?
For a tool with 7 parameters, no output schema, and significant complexity, this description is thorough. It explains behavior, defaults, exclusions, failure modes, performance, and how it relates to sibling tools. An agent has everything needed to call it correctly and interpret results without external documentation. The absence of an output schema is compensated by explicit description of the signal values and the discount fields.
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% and each parameter has a description, the tool description adds crucial context beyond the schema: for case_no it mandates court_name due to court-level duplication, for sido it explains the ambiguity rejection and how to disambiguate (e.g., '광주'), and for sigungu it clarifies the rejection if sido is omitted. It also explains the default for usage_name and the meaning of include_past. This goes well beyond the schema's basic field hints.
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: comparing the minimum bid of auction properties against the market transaction price of the same complex to produce a discount rate and surface yield. It also distinguishes itself from siblings by explicitly positioning it as the primary tool for 'is this property cheap?' and naming realty_auction_sale_rate as the alternative for bid pricing based on appraisal ratio.
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 provides explicit when-to-use guidance: it is the first choice for auction price judgment with automatic market join, and it lists alternatives for specific needs — realty_auction_sale_rate for bid pricing, realty_area_price_bands/region_price_stats for manual baseline. It also warns against mixing denominators and details default filtering (future dates only) and exclusion criteria (appraisal band, area match).
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을 쓴다. 매매 창이 얇은
신축은 분양권·입주권 전매 거래를 `presale_rights_trades`에 **따로** 싣는다(전매가 — 매매 시세 아님).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 개별 거래 내역 수 (허용 범위 1~50) | |
| region | No | 동명 단지 구분용 시군구명 (예: 마포구) | |
| complex_key | No | 정확한 단지 키 — realty_search_complexes·complex_ambiguous 후보가 돌려주는 complex_key. 주면 이름·지역보다 우선한다. **같은 동에 같은 이름의 다른 단지**(키 끝 '(1995)' 등)는 이름으로는 못 가르므로 이 인자로만 부를 수 있다 | |
| complex_name | No | 단지명 (예: 마포래미안푸르지오2단지). complex_key를 주면 생략해도 된다 | |
| 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?
Beyond the readOnly/idempotent annotations, the description reveals sorting order (계약일 내림차순), the 5-transaction basis for summary stats, outlier handling with outlier=true and *_ex_outliers fields, complex-name isolation via meta.complex_isolation, server-side unit conversion with refusal on mismatch, and the absence of asking-price data (호가 데이터가 없다). These are significant behavioral traits not visible in 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 and the description uses paragraph breaks and bolded warnings for scannability. It is lengthy and partially repeats unit-conversion details already present in the schema, and the historical bug-report parentheticals (0.58.0, 2026-08-22 제보) add context but push it beyond a minimal 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 10 parameters and no output schema, the description thoroughly explains return-value semantics: price_by_floor_band, summary_basis, outliers.method, meta.complex_isolation, presale_rights_trades, and quote_check. It also covers data limitations, failure modes, and the rental alternative, leaving an agent fully equipped to invoke and interpret the 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% with very detailed per-parameter descriptions, so the baseline is 3. The tool description adds cross-parameter rules: use the user's chosen unit, call without area when pyeong is unknown ('평형을 모르면 면적 없이 불러라'), and do not guess pyeong. This is meaningful synthesis beyond individual schema entries, though some unit warnings duplicate 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 opens with a specific verb and resource: '특정 단지·특정 평형의 최근 6개월 매매 실거래를 건별(계약일·층·가격)로 조회한다', clearly defining a transaction-level sales lookup. It also differentiates from siblings by naming realty_search_complexes for summary-only needs and realty_complex_rent_by_pyeong for rent.
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 routing is provided: '평형별 시세 요약만 필요하면 realty_search_complexes의 prices_by_area로 충분하다', '층별 시세 질문은 이 도구가 담당이다', and '전월세는 realty_complex_rent_by_pyeong을 쓴다'. The guidance covers both when-to-use and when-not-to-use with named alternatives.
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
[유료] 단지 하나의 시세·전세·기본정보를 통합 조회한다.
입지는 **location.facts(원시값)로 답하라** — 최근접역 이름·직선거리, 반경 500m·1km 안
정류장·병원·마트 수와 1km 안 초·중·고 수를 poi 원장에서 직접 센 값이다. location.overall_score·scores는
미검증 참고값이라(location.score_demotion) 순위·비교·'입지 좋음' 판정에 쓰지 마라.
응답에 좌표(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 declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: the [유료] paid cost, the data-validity disclosure that location.overall_score·scores are unverified (location.score_demotion), the provenance of location.facts as raw counts from the POI ledger, and the chaining contract that the response carries coordinates and complex_key. 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?
Three dense sentences, each earning its place: the core purpose, the critical location-data protocol, and the downstream chaining instruction. Purpose is front-loaded. Slightly long sentences keep it from a 5, but there is zero 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 must carry return semantics — and it does for the critical parts: what location.facts contains, why overall_scores are untrustworthy, and that coordinates + complex_key are returned for chaining. Missing is guidance on parameter selection (prefer complex_key vs name, and that realty_search_complexes can resolve a key), which would fully close the loop for a paid, 2-param 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% — both name and complex_key have Korean descriptions ('단지명 (예: 반포자이)', '정확한 단지 키'). The description reinforces that complex_key appears in the response for chaining, but it doesn't add parameter-level meaning such as which parameter takes precedence or how to discover a complex_key. Baseline 3 is appropriate since 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?
The description states a specific verb and resource: '단지 하나의 시세·전세·기본정보를 통합 조회한다' (integrated query of price, jeonse, and basic info for one complex). This clearly differentiates it from siblings like realty_complex_pyeong_price, realty_complex_rent_by_pyeong, and realty_location_scores, which each target a narrower slice.
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 workflow routing: the response's coordinates and complex_key should be fed into realty_poi_nearby and realty_predict_price for deeper analysis, and warns that location.overall_score/scores must not be used for ranking or comparison. However, it doesn't explicitly state when to prefer this tool over alternative single-complex tools, leaving some selection logic implicit.
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 already declare readOnlyHint/idempotentHint/destructiveHint=false, but the description adds non-obvious behavior: meta.data_as_of is the true latest timestamp, warnings must be relayed verbatim, lagged figures must not be presented as current, annual series need a stated reference year, and households has a source-data defect that rejects same-named districts.
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?
Content is front-loaded (purpose, then usage questions, then behavioral caveats) and dense with useful detail, but there is mild redundancy between the opening sentence and '지역 인구통계를 조회한다'.
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 back (data_as_of, warning) and how to report it, and it covers metrics scope, time-window limits, and the geographic granularity restriction for age — enough 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 the schema already documents metric/months/region, but the description contributes param-relevant guidance the schema lacks: the households same-name city/district rejection and the population·migration workaround, plus the annual-vs-monthly window distinction.
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 line names a specific verb (조회한다 = retrieves) and a specific resource (지역 인구·가구·고령화·순유입 통계 = regional population/household/aging/net-inflow statistics), which cleanly separates it from price-oriented siblings like realty_region_price_stats or realty_macro_indicators.
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 enumerates the exact user questions this tool answers ('인구 줄고 있어?', '1인 가구 비율은?', '고령화 심해?', '순유입 되는 동네야?'), and gives an explicit alternative path: when households rejects same-named districts, fall back to population·migration.
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?
Annotations already declare a safe read-only, idempotent profile, and the description adds substantial context beyond them: inputs like home count/first-time/newlywed are self-declared (server does not fact-judge), the tool performs eligibility matching and routing only, and it deliberately does not compute limits. This is rich behavioral disclosure.
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?
Core purpose and the router framing are front-loaded, and the boundary list is well-structured. It is somewhat long with bolded repetition of the routing rationale, but nearly every sentence carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description points to the `topic` field in the response for evidence and uncertainty, and covers the declaration semantics and scope limits. Complete for a routing/eligibility 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 description coverage is 100%, so the schema already documents all eight parameters, including the purpose enum warning about '전세' vs '전세반환'. The description reinforces the purpose/region/home-count axes but adds little syntax or format detail beyond what the schema provides, so 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?
States a specific verb and resource (list/judge usable loan products per product) and frames the tool as a router that spares the caller from picking a rule topic. It explicitly distinguishes itself from realty_loan_limit, so an agent can tell them apart 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?
Names the alternative (realty_loan_limit for purchase-purpose bank loan limits) and the condition that routes to it, plus explicit when-not boundaries for jeonse/mid-payment (no limit calculation) and jeonse-return. 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_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?
Annotations already cover safety (readOnlyHint=true, idempotentHint=true, openWorldHint=true), so the description focuses on behavioral context it *can* add: the rate_type-dependent DSR split (기본값 '변동'이 최악 가정), the declaration-vs-fact boundary for borrower type (inputs_declared 에코), the 'not an approval' caveat, and the mandated transmission of uncertainties·disclaimer. This is rich beyond the annotations. It doesn't quantify rate limits or latency but for a read-only calculator that matters less.
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, followed by three numbered boundary constraints — the intended order is sound. However, the numbering restarts (① appears twice: '① 차주 유형은 선언' and then a second '① 규칙 원표·근거는…', plus a duplicated ③), which is a structural defect in an otherwise dense but information-efficient paragraph. Every sentence earns its place, but the numbering error hurts navigability.
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 15-parameter, no-output-schema, read-only calculator, the description covers purpose, scope limits, rate_type sensitivity, the by_rate_type comparison instruction, sibling routing, and disclaimer transmission. Missing: explicit pagination or return-shape hints are not needed (no output schema), but the description could state that inputs_declared is echoed (it does) and that it never makes loan-approval claims (it does). It is complete enough for an agent to call and interpret correctly; no output schema means the description carries the return-value burden lightly and handles it.
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 already 100%, so the schema documents every parameter fully. The description adds meaning marginally above baseline by explaining *why* default rate_type='변동' produces the smallest limit, why credit_loan_10k should not be hand-computed, and by referencing the by_rate_type comparison table rather than restating param names. Baseline for 100% coverage is 3; the extra modeling guidance on rate_type default and desired_loan_10k semantics lifts it.
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 (주담대 규제 상한: LTV 상한액, 가액구간 한도, 만기 상한, 스트레스 DSR 최대 대출액). It names the sibling it is *not* — realty_policy_rules (원표·근거), realty_presale_funding_plan (분양 시점별 자금 판정) — and anchors itself with an example query ('10억 집, 생애최초, 연소득 8천이면 얼마까지 나와?'). An agent can route correctly without opening any 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?
Explicit when-to-use ('~류 질문의 자리다'), explicit when-not (규칙 원표는 realty_policy_rules, 규제지역 지정은 regulated_area, 취득세는 acquisition_tax, 분양 자금은 realty_presale_funding_plan), and explicit boundaries (대출 승인·확약이 아니다). Alternative routing for the sibling realty_loan_eligibility would have been a bonus but the alternative mapping given is thorough.
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
단지 입지를 원시값으로 답한다 — "역세권이야? 학군 어때? 병원 가까워?" 담당.
**답은 행마다 맨 앞의 location_facts로 하라**: 최근접 지하철역 이름·노선·직선거리(m,
상한 없음 — 시골 단지는 30km도 그대로 나온다), 반경 500m·1km 안 역·버스 정류장 수,
1km 안 초·중·고 수와 최근접 초등학교 거리, 반경 안 병원(전 의료기관·병원급 분해)·마트
수. 전부 poi 원장에서 직접 센 값이라 재현할 수 있다. "역세권이야?"는
subway.nearest_distance_m와 walk_band로, "초품아야?"는 schools.nearest_elementary로 답하라.
같은 행의 transit_score·school_score는 **미검증 참고값**이다(응답 score_demotion) —
transit 90점 이상이 86.7%이고 역이 5km 넘게 떨어진 단지도 90점이 나와 변별력이 없다.
**점수로 순위를 매기거나 '역세권·학군 좋음'을 판정하지 마라.** 점수가 null이면 미측정이지
0점이 아니다. 학군 점수는 학원가 강도 지표이지 학교 배정·수준이 아니다.
complex_key/complex_name이면 단지 행(원시값은 앞 5개 단지), region만 주면 지역 집계 +
점수 상위 5 단지(점수 순이라 순위로 인용 금지). 점수가 없는 단지도 색인에 좌표가 있으면
원시값을 준다. 없는 단지는 not_found — 지어내지 말고 realty_search_complexes로 실존부터
확인하라. complex_key는 공백 1칸으로 정규화돼 다른 도구에 그대로 넣을 수 있다.
시설 **목록**(이름별 거리)이 필요하면 [유료] realty_poi_nearby.
| 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?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses that scores are unverified and have no discrimination power (transit 90+ even for far-away complexes), null means unmeasured not 0, output structure (location_facts at front), and not found behavior (don't fabricate, use search). This is rich behavioral context.
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 well-structured, starting with the core purpose, then the output format, then critical score caveats, then input modes, then fallback. Every sentence adds value, and the use of bold and line breaks 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 fully explains the output fields, the meaning and caveats of scores, null handling, input modes, and the alternative tool for facility lists. It is complete for an agent to call this tool correctly and interpret results.
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 the schema covers all three parameters, the description adds crucial semantics: the combination of region with complex_name as search scope, the difference between complex_key/complex_name (complex row) vs region alone (aggregation + top 5), and the normalization of complex_key to single space for 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 clearly states the tool answers with raw location values (station distance, nearby schools, stop counts) and explicitly distinguishes it from score-based tools. It answers specific queries like '역세권이야?' and '학군 어때?', and names the sibling realty_poi_nearby for facility lists, making the 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 and when-not-to-use guidance: use this tool for raw values and specific questions, use realty_poi_nearby for facility lists, and use realty_search_complexes to confirm existence for not found cases. It also warns against ranking by scores, giving clear boundaries.
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
[유료] 미분양 추이와 시장심리지수를 한 번에 조회한다. 매수 타이밍 판단의 거시 신호. 준공후 미분양(unsold_completed, 지역 합계)도 같은 모양으로 싣는다.
기본 창은 **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 already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description earns credit by disclosing a non-obvious runtime behavior: nationwide widening drops the oldest months to fit a budget and reports this via meta.truncated and meta.truncated_note, while region-scoped queries return the full window.
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 purpose and scope, then the truncation caveat — good ordering. Slightly repetitive: the truncation/budget behavior is stated in the prose and again inside the months parameter schema, so a bit of the text does not earn its place.
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?
No output schema exists, yet the description tells the agent what comes back structurally — both the 미분양 series and 준공후 미분양(unsold_completed, regional total) in the same shape, plus the meta.truncated fields. For a 2-param read-only tool with full annotation coverage, 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 coverage is 100%, so baseline is 3, but the description adds rationale beyond the schema: why months defaults to 6 (minimum needed for direction judgment), the multiplicative blow-up of 18 시도 × months rows, and the region-scoping workaround. That is real added meaning over the parameter definitions.
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 set — 미분양 추이(unsold trend) and 시장심리지수(sentiment index) queried together — plus the downstream purpose (매수 타이밍 판단의 거시 신호). An agent can distinguish it from generic siblings like realty_macro_indicators or realty_supply_demand_balance because it names the exact two signal sources it bundles.
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 context for the default window (6 months is the minimum for 방향 판단) and a conditional rule: widen months when a longer trend is needed, but narrow to a region first because nationwide widening hits the result limit. It does not name an alternative sibling for nationwide long-window queries, which keeps it from a 5.
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?
Annotations cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds substantial behavioral context beyond that: it admits the three construction-delay exceptions are unjudgeable due to missing 인가일·착공일 data, warns the 재개발 부칙 trap prevents a verdict without a declaration, and instructs the agent to relay exceptions·disclosures from the response. This is unusually candid about limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core decision in the first sentence, then uses a numbered boundary list that each earn their place as routing rules. It is long, but the length is spent on genuine scope limits and alternatives rather than 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?
Despite no output schema, the description tells the agent what the response contains (exceptions, disclosures) and where the judgment stops, and it enumerates the fallback tools for the questions it refuses. For a read-only judgment tool with 6 params, this is complete enough to call 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 every parameter is already documented in the schema; baseline is 3. The description adds only marginal parameter meaning (that the judgment multiplies regulated_area × 사업 유형 × 단계 and that Seoul auto-combines stage), which is largely a restatement of the schema's own notes.
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 (조합원 지위양도 가능 여부를 도시정비법 39조 2항으로 결정론 판정한다) and anchors it to a concrete user question ('한남3구역 지금 사도 입주권 나와?'). It is trivially distinguishable from siblings like realty_redevelopment or realty_policy_rules because it says exactly what it decides and what it will not decide.
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 routing: 조문 원문·예외 목록 → realty_policy_rules(topic=redevelopment_rules), 지정 현황 → regulated_area, 분양자격 불확실 → redevelopment_entitlement, 사업장 목록·단계 → realty_redevelopment. It also states the when-not boundary (소규모정비사업은 별도 법제라 판정하지 않는다). 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_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에 넣어라 — region에 넣으면 서버가 sigungu로 옮겨 조회하고 그 사실을 meta.unapplied_conditions에 적는다(시군구 어휘에 없는 이름은 옮기지 못하고 역시 거기 적는다). 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?
Annotations cover the safety profile, and the description adds substantial behavior beyond them: the default window points forward, results are a lower bound with a ~30-month notice lag, meta.window_direction self-labels the window, and the reading/interpretation fields must be honored in the conclusion. The 세종 실사고 example concretely shows the failure mode.
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 and the default-window trap, and dense with actionable detail rather than filler. It is long, but nearly every sentence prevents a specific misreading, so the length is justified rather than 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, the description proactively explains the return-shape fields that matter (meta.window_direction, reading/interpretation, coverage.region_recent_annual_rate) and how to phrase conclusions from them. Nothing an agent needs to call and interpret it 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?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-tool contract context (region takes 시도 only here vs. 시군구/동 in realty_supply_pipeline) and reinforces the months/from_ym mutual exclusivity and the past-vs-future framing that trips agents up.
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: aggregating a region's scheduled move-in volume by year-month, and frames it against the sibling it is not (realty_supply_pipeline). An agent can distinguish it from realty_supply_pipeline and realty_supply_demand_balance without opening a 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?
Explicitly names the question types it answers ('○○ 입주장 리스크 있어?', '내년에 입주 물량 얼마나 쏟아져?'), states when to switch to realty_supply_pipeline (when coverage.region_recent_annual_rate is far below), and warns not to sum the two axes due to double counting.
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건이 아파트로 답해졌다).
**매매 데이터만 있다** — 전월세를 물으면 이 축엔 데이터가 없다고 답하라(추정 금지).
**도시형생활주택은 property_type에 없고 가를 수도 없다** — 원천에 유형 코드가 없어
아파트·연립다세대·오피스텔 신고에 섞여 있다. villa/officetel 값을 도시형생활주택
시세로 부르지 말고 섞여 있다고 밝혀라(응답 urban_housing_notice).
면적 기준: 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?
Goes well beyond the readOnly/idempotent annotations: sale-only data with no 전월세 (must refuse rather than estimate), 도시형생활주택 absent from the type enum and unsplittable from source codes, 지분 rows excluded from stats and unsuitable for per-area pricing, and the critical failure mode that a wrong property_type still returns HTTP 200 with populated rows so errors are silent.
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 and reasonably organized, but the apartment-exclusion warning is repeated in the description, again in the region and property_type schema fields, and again in the title — some of that emphasis is redundant rather than load-bearing for an already long block.
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 defines the response shape (recent rows + stats with 표본 수·가격·상위 구성) and flags the urban_housing_notice and note fields. For a disambiguation-heavy, high-mis-invocation tool, nothing material 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%, so the baseline is 3; the description nonetheless adds real meaning — area basis differs by type (villa/officetel use 전용면적, house splits 대지/건물, land returns 계약면적·지목·용도지역), and share_type='지분' handling is documented nowhere in 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+resource+scope: 조회 of 매매 실거래가 for 빌라·오피스텔·단독주택·토지, and explicitly negates the sibling category ('아파트는 이 도구가 아니다'). An agent can distinguish it from realty_region_price_stats / realty_search_complexes without opening any 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?
Gives explicit routing rules: if the query mentions 아파트, stop and go to realty_region_price_stats (region/동 monthly trend), realty_search_complexes (단지/평형 시세), or realty_complex_pyeong_price (건별 내역). It also warns that legal-dong narrowing is not a reason to pick this tool, pre-empting the most likely mis-selection.
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?
Annotations only cover the safety profile (readOnly/idempotent/openWorld), and the description adds a lot beyond them: a 64KiB result cap, the meta.truncated / meta.omitted_sections signal, the re-fetch path via section='분양가', the p (page number) citation convention with notice_version, and the unverified_source_text fallback with a required disclaimer. These are exactly the operational traits the 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?
Front-loaded with the value proposition and the field list, but the opening line ('입주자모집공고 원문에서 추출·검증한 팩트시트를 항목별로 준다') is then repeated almost verbatim in the bolded second paragraph, and the field list appears twice (once inline, once expanded). The truncation warning earns its space; the duplication does not.
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?
No output schema exists, so the description carries the return-shape burden and does: it tells the agent values come with page numbers, that an uncited answer set is possible (unverified_source_text), how truncation is surfaced, and how to recover omitted sections. Nothing an agent needs to interpret or re-request results 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%, so the baseline is 3, but the description adds real meaning on top: it shows that section='분양가' retrieves one section in full and that this is also the recovery path for sections dropped by truncation, and it explains why keyword matches without regard to spaces. It does not restate the schema, but it does extend it usefully.
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 (extract/verify a fact sheet from the original 입주자모집공고) and enumerates the exact fields it returns: 전매제한, 재당첨제한, 거주의무, 층별 분양가표, 특별공급 배정, 발코니 확장·유상옵션, 중도금 회차, 예비입주자 규칙. It also names the sibling it is not (realty_notice_text for full clause text), so an agent can separate it from the other presale tools without opening 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?
Explicitly defines the question types it owns ('이 값들을 묻는 질문이 이 도구의 자리다', 추정하거나 웹에서 찾을 필요 없이), routes detailed clause text to realty_notice_text, and gives two negative rules: do not fabricate values not present, and do not infer absence in the notice from absence in the fact sheet. That is when-to-use, when-not, and alternatives all in one.
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 readOnly/idempotent/openWorld, and the description layers substantial operational detail on top: table columns may be misaligned due to pdftotext (so don't assert), zero-hit responses degrade gracefully with per-word and partial-match pages, full-text responses cap at 6 pages, and meta.matching_pages always carries the full list. This is exactly the beyond-annotation context the dimension rewards.
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 action and its differentiator, and the bolded pages_only guidance is well placed. Slightly long, and the opening sentence is near-duplicated in the title ('읽어 준다' / '읽는다'), which is the only real waste.
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 carries the return burden itself and does so: response shape (max 6 pages, meta.matching_pages), pages_only output (page numbers + excerpts), and the zero-hit fallback payload. Nothing needed to call this 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?
Schema coverage is 100%, so the baseline is 3, but the description adds workflow meaning: query words are ANDed with worked examples ('가점제 추첨제', '신혼부부 소득'), match='any' widens, and pages_only is framed as a scan-then-narrow pattern. Some of this (the query/pages conflict, pages_only_ignored) is echoed in the schema, so it is reinforcement rather than pure addition.
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 ('입주자모집공고문 원문을 쪽 단위로 읽는다') and explicitly distinguishes itself from the sibling realty_notice_facts by naming the factsheet as the thing it supplements. An agent can tell this apart from realty_notice_facts 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?
Gives explicit when-to-use ('팩트시트에 없는 세부...는 이 도구로 원문을 직접 확인하라'), a recommended first call ('쪽을 모를 땐 pages_only=true로 먼저 훑어라'), a widening path ('match=any로 넓힐 수도 있다'), and the query-vs-pages exclusivity. 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_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 | 시군구. 물건명에서 시도 다음 한 토막을 뽑은 것이라 '고양시 덕양구'는 '고양시'로만 잡힌다 — 자치구까지 좁히려면 이 원장으로는 안 된다. ⚠️ 시도 없이 시군구만 주면 **합치지 않고 거절한다**(error='region_ambiguous') — '중구'처럼 여러 시도에 같은 이름이 있으면 합친 값은 어느 지역의 것도 아니다. sido와 갈라 넣어라(예: sido='서울특별시'·sigungu='중구'). 거절 응답이 후보를 준다. | |
| usage_name | No | 용도 부분일치(대·중·소 3단). 원장 값 예: 주거용건물·아파트·토지·근린생활시설. 표본이 **입찰결과 원장**이라 물건 목록과 어휘가 미세하게 갈린다 — 없는 이름은 거절하며 이 원장의 쓸 수 있는 값을 준다. | |
| property_type | No | 재산구분. **이 축을 빼고 하나의 낙찰가율을 말하면 거의 틀린다** — 실측 중앙값이 압류재산 31.6% vs 국유재산 106.3%로 3배 넘게 갈린다. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly/idempotent safety, and the description layers on extensive behavioral disclosure: the 3-month sampling window, the 113,673/688,264 coverage and 3,824-bid subset, outcome_mix being 성립률 not 낙찰가율, the apslPrcCtrsScfbPrcRto source-value passthrough with 2,896/3,824 missing treated as unknown not zero, median-vs-mean distortion (386% outlier), region recovered from property-name prefix at 90.0% bid coverage, and silent drops from region filters. No annotation contradiction.
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 a distinct operational fact and the ⚠️-marked warnings make caveats scannable. Front-loading the 경매/공매 distinction up front is the right prioritization. Slightly dense, but the complexity of the data source justifies the length; the bold headers aid skimming.
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-optional-param statistical tool with no output schema, the description is exceptionally complete: it names response fields (region_basis, outcome_mix, ratio_missing, median_pct, p25_pct, p75_pct), discloses data provenance and coverage gaps, explains missing-data semantics, and documents the region-recovery methodology including its failure mode (silent drop). Nothing an agent needs to interpret results 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?
Schema coverage is 100% and the schema descriptions are already rich (the '광주' ambiguity and sigungu single-token limitation live in the schema). The main description adds the key semantic emphasis that property_type is the axis that must not be omitted (실측 31.6% vs 106.3% spread) and that usage_name vocabulary diverges from the property list. It reinforces rather than repeats the schema, which is the right division of labor.
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 (answers 공매 sale-rate and bid-failure statistics from actual bid-opening results) and immediately distinguishes itself from the same-named court-auction metric realty_auction_sale_rate. It also names realty_search_onbid as the sibling for individual properties, so an agent can route correctly without opening 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?
Explicitly says not to mix the two percentages (경매 vs 공매), tells the agent to confirm which one is being asked, and directs per-property queries to realty_search_onbid. It also instructs to read by property_type and to cite median_pct rather than the mean, with the p25/p75 spread. Exclusions and alternatives are spelled out.
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의 location_facts로
충분하다 — 이 도구는 시설 **목록**(이름별 거리)이 필요할 때 쓴다.
| 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 mark this as read-only and idempotent. The description adds useful behavioral context: it is a paid tool, returns results sorted by distance, depends on coordinates from realty_complex_report, and only supports coordinate search for subway, hospital, and school. It does not detail the full response structure, but it does say it returns a facility list with distances.
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 main behavior appears first, followed by source-coordinate context, use-case framing, and alternative routing. Every sentence serves a purpose, with no filler or unnecessary repetition beyond the paid marker.
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 compensates by explaining the return shape as a facility list with distances, noting the paid nature, providing coordinate provenance, and routing to alternatives. It is sufficient for an agent to select and invoke the tool correctly, though a precise response-structure note would make it fully 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%, and the schema itself already explains latitude source, poi_type allowed values, combination syntax, and radius bounds/defaults. The tool description does not add much parameter-level meaning beyond the schema, 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 a specific action: retrieve surrounding location factors such as subway, school, hospital, and mart around given coordinates, sorted by distance. It also distinguishes itself from siblings like realty_location_scores and realty_poi_stats by clarifying it returns a facility list, not aggregate scores or regional statistics.
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: use this tool when a facility list with distances is needed, and use the free realty_location_scores location_facts instead when only nearest-station distance or count-in-radius is required. It also points out that mart/pharmacy data belongs to realty_poi_stats, and that coordinates should come from realty_complex_report.
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)·면책, 기산점(개시≠인가) 함정. **재산·주택 축은 credit_rehab_property**, credit_rehab_property=개인회생 중인데 집 살 수 있나·배우자 명의로 주택 취득·청산가치·가용소득·퇴직금 압류금지·퇴직연금 압류금지 범위·주택임차보증금 압류금지·재산 은닉·인가 후 재산이 늘면 | **개인회생×부동산** — 개인회생재단의 범위(개시 vs 인가 시점)·청산가치 보장원칙이 묶는 것·압류금지라 재단에서 빠지는 재산(퇴직연금 전액 vs 퇴직금 1/2)·부부 명의 축·은닉과 정상 거래의 경계. **판정은 안 한다**, 신용·대출 축은 credit_rehab, 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만원 인정·미납/선납·예부금 전환 2027-09-30 한시, 2026-09-23 1년 재연장) — 점수 계산은 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 already declare readOnly/idempotent/non-destructive/open-world, so the safety profile is covered. The description adds real behavioral context beyond that: the response carries uncertainties and a disclaimer, it refuses to fabricate (returns zero hits rather than guessing) when the axis is absent, and it warns that conditions matter (the '85㎡ 이하 1.1%' only holds under 6억, with a quantified 16.9억/84타입 error example).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Scope and routing are front-loaded well, but the opening sentence is duplicated almost verbatim ("단지에 종속되지 않는 일반 규범…을 근거 조문과 함께 준다" twice), and the routing paragraph is very dense. The volume is partly justified by the breadth of topics, but the redundant lead-in is clear waste.
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 must convey what comes back, and it does: norms with citations and confirmation dates, tables carrying applicable_if/exceptions, plus uncertainties and disclaimer. It also maps the surrounding ecosystem (realty_presale, realty_notice_facts, realty_presale_cost) so the agent knows where adjacent data lives. Minor gap: no explicit note on return shape or topic-count/pagination 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?
Schema description coverage is 100% and the enum/section descriptions are extremely detailed, so the schema does the heavy lifting. The description adds conceptual framing (topic tables as truth source, applicable_if/exceptions fields) but no parameter syntax or usage detail beyond the schema, 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 names a specific resource and scope: general legal/regulatory norms (tax rate tables, regulated areas, loan rules, lease rules) that are NOT tied to a specific complex, delivered with citations and confirmation dates. It distinguishes itself from calculation siblings by naming them explicitly (realty_loan_limit, realty_subscription_score, realty_redevelopment_burden, realty_capital_gains_tax, realty_member_transfer_check) and positioning itself as their source of truth.
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 states the question shapes it belongs to ("취득세 얼마야?", "갱신권 썼는데 집주인이 팔면?") and explicitly routes calculations elsewhere by name and condition. It also sets a when-not boundary: it performs no judgment — the agent must ask the user clarifying questions using the table's applicable_if/exceptions rather than decide facts like one-home status.
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
이 분양 공고를 같은 시군구·같은 평형의 다른 공고들과 5축으로 견준다.
이 분양 공고를 **같은 시군구·같은 평형 공고들과 견줘** 읽는다 — 청약홈 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 already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: minimum sample threshold of 3 with a '표본 부족' verdict, n_known/n_unknown split for 중도금, coverage disparity across years (meta.coverage.by_year), and percentile-in-distribution output. This is rich behavioral context an agent could not infer.
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 comparison, then a clearly delimited '읽는 법' rules block and a positioning paragraph — easy to scan. Minor redundancy: the title and the first two sentences restate the same 'compare to same sigungu/pyeong notices' framing.
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?
No output schema exists and all six params are optional, yet the description explains return shape (five-axis values plus percentile, or distribution-only), edge-case verdicts, and interpretation caveats. Nothing needed to call or interpret 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?
Schema description coverage is 100%, so the schema already documents all six parameters including the keyword/house_manage_no tradeoff and the exclusive_m2 filter scope. The description reinforces semantics (region is background only, exclusive area basis) but adds little parameter-level detail the schema lacks; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (견준다/compare) and resource (분양 공고 vs 같은 시군구·평형 공고들), then enumerates the five exact axes compared. It explicitly positions itself against siblings (realty_notice_facts, realty_notice_text, realty_presale_vs_market, realty_presale_price_trend), so an agent can route without opening any 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?
States when to use it, what it returns with and without a notice specified, and several explicit 'do not' rules: don't fall back to 시도 background values when a cell has <3 samples, don't build year-spliced time series, use realty_presale_price_trend for yearly trend. Alternatives are named with the condition that selects them.
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 cover read-only/idempotent/safe, but the description adds real behavioral context: the result is a deterministic fact-sheet computation, differing move-in assumptions can swing the total by ~1.24M KRW, and the computed assumptions (중과·감면 etc.) must be surfaced to the user. It stops short of describing the return shape, which matters since there is no output 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?
Front-loads the formula and the scope, then the boundary and cross-tool routing in a second block; every sentence carries information. It is dense and slightly long, with heavy inline emphasis and a stray trailing quote character, but there is little true 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?
For a 6-parameter, zero-required calculation tool with no output schema, the description gives enough to call it correctly: inputs implied, deterministic basis, assumption caveat, and sibling handoffs. The one gap is that the return shape (per-floor breakdown fields) is only sketched as '층별 총액' rather than described.
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 already 100%, so the baseline is 3, but the description adds domain meaning beyond the schema: it frames mid_rate_pct and movein_ym as assumptions with material impact on the total and flags that acquisition tax uses the standard rate while heavier rates live in assumptions. That is genuine added semantics, not schema 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?
States a specific verb (계산한다) plus the resource and scope (분양 한 건의 층별 총 소요자금) and spells out the formula components (분양가·발코니·중도금이자·취득세). It also names the sibling tools it is not (realty_complex_rent_by_pyeong, realty_presale_funding_plan, realty_policy_rules), so an agent can route 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?
Explicitly draws the boundary: this tool computes only what is deterministically derivable from the notice plus tax law, and it states what it deliberately does NOT compute (월 상환액, 매수 vs 전세 손익분기) along with the alternative tools that do. The 'when not to use' guidance is unusually concrete.
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?
Annotations already declare readOnly/idempotent/non-destructive, lowering the bar. The description adds meaningful behavioral context beyond that: deterministic verdict, assumptions/uncertainties carried in response, no future-rule extrapolation, parallel scenarios (scenario_at_expected_price, jeonse_scenario) only when declared, and honest failure when movein_ym absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Scope and the core verdict are front-loaded, but the body is dense with five numbered boundary clauses and interleaved ASCII markers, which slightly obscures readability. Content largely earns its place, but it is thick for a tool an agent must parse quickly.
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 22-parameter, 3-required, no-output-schema tool, the description supplies the essential contracts: declaration semantics, assumption propagation, parallel scenario gates, failure mode when movein_ym is missing, and sibling routing. Missing only explicit response-shape hints, which is acceptable given no output schema is provided.
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 already carries a rich inline description (units, defaults, ranges, cross-references). The description adds the declaration-vs-judgment contract and cross-engine consistency with realty_loan_limit/realty_presale_cost, but little per-parameter syntax. 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?
States a specific deterministic verdict verb ('판정') with clear resource (시점별 계약금→중도금→잔금 필요액 × 잔금대출 규제 상한) and explicitly frames the question it answers ('이 분양 당첨되면 진행 가능해?'). It names sibling engines it shares logic with (realty_loan_limit) and boundaries with realty_presale_vs_market / realty_policy_rules, distinguishing it clearly.
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 scopes the question type it serves and lists four boundaries (①선언 vs 판정, ④전략·적정성은 이 도구 밖 → points to realty_presale_vs_market, realty_policy_rules). Strong context. No explicit negative 'when NOT to call' beyond the out-of-scope items, so not a 5.
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지역 분양가 추이 — 공고 간 연도별 평당 분양가BRead-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 declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds useful behavioral caveats: that median can be affected by housing-type mix, that years with 1-2 announcements shouldn't be read as a trend, and that the metric uses supply-area pyeong maximum price excluding balcony/options. However, it still doesn't disclose return format or pagination, and the caveats, while helpful, are somewhat scattered.
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 repetitive: the first two sentences say almost the same thing ('같은 지역 분양 공고들의 연도별 평당 분양가 추이를 낸다' twice). It front-loads the core purpose but then mixes usage rationale, metric definition, caveat, and sibling positioning without clear structure. It could be trimmed.
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 and full annotation coverage, the description needs to convey what the tool produces and when to use it. It covers the metric definition, caveats about data quality, and how it relates to sibling tools. The main gap is the lack of explicit usage conditions (when to choose this over alternatives), but overall it's fairly complete for a trend-extraction 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 schema already documents all five parameters. The description only adds a note that exclusive_m2_min/max should be used to fix unit size (e.g., 80-85 for national pyeong) and a warning that sigungu is corrupted for Sejong, which is valuable beyond the schema. But it doesn't explain the region or keyword parameters beyond what the schema already provides, so it's a marginal addition.
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 ('연도별 평당 분양가 추이' for same-region presale notices) and contrasts itself with siblings realty_presale_vs_market and realty_region_price_stats. It clearly carves out its niche as '시분가끼리의 시계열'. The '축' framing is slightly abstract but the core purpose is 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 indicates this axis answers the 'wait or not' question, especially under a re-application restriction. But it doesn't state explicit when-to-use or when-not-to-use conditions beyond mentioning siblings. It names the alternatives but doesn't provide clear selection criteria (e.g., 'use this when you want cross-announcement trends, not single-announcement fairness').
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로 검색하고, 여러 건이면
후보 목록을 돌려주니 하나를 골라 다시 호출하라(추측해서 고르지 않는다).
기준선: 평형 행의 gap_pct는 gap_basis가 말하는 기준 대비다 — 인근 비교단지가 충분하면
**공고 좌표 반경·준공 연도 조건·같은 평형대 비교군**(nearby_baseline) 대비이고, 아니면
지역(공고 시군구, 없으면 시도) 실거래 평균(구축·외곽 포함, 이상치 미필터) 대비다. 지역 평균 대비 값은
gap_pct_region_avg에 늘 따로 있고, 두 기준선이 크게 갈리면 baseline_divergence가
붙는다 — 그때 지역 평균 대비 수치로 '비싸다'를 말하지 마라. 청약 경쟁률·당첨 가점
커트라인은 realty_subscription_odds에 있다("넣을 만해?"엔 둘을 같이 써라).
지역 수준 교차확인은 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?
Beyond readOnly/idempotent annotations, it discloses important behaviors: how announcement lookup falls back to region+keyword when house_manage_no is missing, that multiple candidates are returned and must be disambiguated without guessing, and the exact baseline-selection logic including nearby_baseline vs region-average fallback and baseline_divergence warnings. It also clarifies output fields like gap_pct and gap_pct_region_avg.
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 sentence carries operational value, and it is well-structured into lookup, baseline, and sibling-routing sections. The core purpose is front-loaded in the first 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?
With no output schema, the description compensates by naming key fields (gap_pct, gap_basis, nearby_baseline, gap_pct_region_avg, baseline_divergence, comparison_truncated) and explaining ambiguous selection flows. It also covers recommendation behavior and sibling hand-offs, making it 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?
The input schema already provides 100% rich parameter descriptions, so the baseline is 3. The description adds extra value by explaining how house_manage_no relates to region+keyword, the candidate-list rerouting behavior, and the pyeong auto-selection context via comparison_truncated, so it earns a 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?
The description states a specific verb+resource: it calculates whether a subscription announcement's presale price is cheap/expensive relative to nearby actual transaction prices, by housing type. It clearly separates itself from siblings such as realty_presale_price_trend, realty_area_price_bands, and realty_subscription_odds.
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 user questions it answers ('이 청약 넣을 만해?', '분양가 적정해?') and gives alternatives: realty_subscription_odds for competition/score cutoffs, realty_area_price_bands for region-level cross-checking, and realty_presale_price_trend for time-series patterns. It also warns when not to use region-average numbers.
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?
Annotations already carry readOnly/idempotent/non-destructive, so the description focuses on the gaps those annotations can't express: coverage is Seoul-only, stage filtering is unsupported (agent must filter client-side on the stage field), and generation count/completion dates come back null and must not be invented. These are meaningfully non-obvious behaviors; return shape specifics are the only notable omission.
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-loads the paid-scope and subject, then layers coverage limits and sibling routing. Slightly dense with bracket tags and repetition of the '[유료]' marker across sentences, but every sentence carries routing or constraint 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?
For a read-only filtered-list tool with a fully covered schema and no output schema, the description covers scope, coverage ceiling, null-field guidance, filtering limitation, and sibling routing. It could say a word about pagination/return shape, but for this complexity it is substantively 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% and each parameter (limit, offset, sigungu, project_type) is already documented, including the enum label mapping for project_type. The description adds no syntax beyond the schema, so it sits at 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?
States a specific verb (조회한다/목록) plus resource (서울시 정비사업 사업장) and enumerates the project categories it covers. It explicitly distinguishes itself from two named siblings (realty_reconstruction, realty_member_transfer_check), so an agent can route 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?
Provides explicit when-to-use ('○○구 재개발 어디까지 진행됐어?'류 질문), when-not (타 시도는 이 도구로 답할 수 없다고 밝혀라), and names the alternative tools for adjacent needs. Boundaries are stated rather than implied.
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 already cover the safety profile (readOnlyHint, idempotent, no destruction), and the description adds substantial context beyond them: all inputs are user-declared and unverified, the formula is a practical convention rather than statutory, and the proportion rate is an estimate that keeps changing until completion. These are meaningful behavioral caveats an agent would otherwise miss.
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 action, then the formula, then numbered boundaries, which is well structured. The opening two lines overlap somewhat (both restate the purpose), costing a little tightness, but the boundary list earns its space.
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 the response contains (sensitivity with ±10%p swing and disclosures), which is exactly the information needed to present results responsibly. For a 6-param, 2-required calculation tool 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 schema already documents every parameter, including the unit convention and the role of the three optional total_* fields. The description's formula relates the parameters to each other but adds no syntax or format detail beyond the schema; 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?
States a specific verb+resource (재개발·재건축 조합원의 권리가액과 추가 분담금 계산) and gives the exact formulas (권리가액 = 종전자산 감정평가액 × 비례율, 분담금 = 조합원분양가 − 권리가액). It also frames the concrete user question it answers, making it clearly distinct from realty_redevelopment 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?
Explicitly names when-not/where-else: for formula provenance and 변동 함정 go to realty_policy_rules(topic=redevelopment_rules), and if 분양자격 itself is uncertain, start with topic=redevelopment_entitlement. It also specifies the requirement to relay sensitivity and disclosures, an operational usage instruction rather than just context.
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_ambiguous) 토큰이
정확히 같은 후보를 준다(그 목록을 사용자에게 되묻고, 고른 이름을 그대로 다시 넣어라).
지역은 토큰 정확일치로만 맞춘다 — '동구'는 '남동구', '서구'는 '달서구'가 아니다.
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 | 지역명 — 시군구까지(예: '강남구', '수원시 권선구') 또는 **법정동까지**(예: '강남구 대치동', '세종특별자치시 나성동'). 시도 약칭은 서버가 정식명으로 펴지만('서울 마포구' → '서울특별시 마포구'), 동명 지역이 여럿이면 시도를 앞에 붙여라 — 안 붙이면 **고르지 않고 거절**하며 이름이 정확히 같은 후보 목록을 준다('동구'는 '남동구'가 아니다). 단지명은 여기 넣지 마라(단지는 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?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial non-obvious behavior: outlier filtering gap ('이상치...필터되지 않아 평균이 눌리며'), ambiguous-region rejection with candidate list, rejection when ㎡ is passed to pyeong parameters, warning_pyeong_fallback semantics for rental, and the top_n boundary ('창 안의 고가 거래'이지 신고가가 아니다). 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 purpose and organized with bold headers, but it is bloated with provenance parentheticals ('2026-08-08, 8/7 테스터 제안 수용', '2026-09-07 외부 신고 T-2026W34-352') and meta-rationale (S364) that don't help an agent invoke the tool. Sections like the rental/pyeong warning also duplicate what is already in each parameter schema 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?
With no output schema, the description compensates well: it names monthly_trend fields, top_transactions fields, warning_pyeong_fallback, and rejection modes, covering the tool's trickiest behaviors. Minor gaps remain, such as the exact top-field snapshot structure and full error shapes, but an agent has enough context to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with already-rich descriptions, so the baseline is 3. The description adds cross-parameter meaning beyond the schema: Sejong-specific need for dong-level narrowing, token-exact region matching ('동구'는 '남동구'가 아니다), server-side unit conversion, and the semantic distinction that top_n is not an all-time high. Some duplication exists, but the added context justifies a 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?
Opens with a specific verb + resource: '지역의 아파트 실거래 시세 추이(월별)를 조회한다', making the core function unmistakable. It also distinguishes itself from realty_area_price_bands and realty_search_complexes in the same opening section, so an agent can pick the right tool without deep schema inspection.
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 ('월별 흐름·방향이 필요할 때 이걸 쓴다') and when not to ('가격 수준을 인용할 거면 realty_area_price_bands를 쓰라', complex-specific questions → realty_search_complexes, pyeong-specific rental → realty_complex_rent_by_pyeong). It even suggests combining with realty_move_in_supply for reverse-jeonse judgments, which is 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_region_rankings지역 순위 (시세·상승률·전세가율·교통·학군)ARead-onlyIdempotentInspect
시군구 순위를 가격·상승률·전세가율 같은 축으로 조회한다.
지역(시군구) 순위를 조회한다 — "제일 비싼 동네 어디야?", "요즘 많이 오른 지역은?",
"전세가율 높은 곳은?"류 질문용.
price=거래량 가중 전용 평당가(최소 5건, 최신월은 집계 진행 중일 수 있음) ·
growth=전용 60-85㎡ 고정 YoY(평형 구성 왜곡 제거). 응답 methodology의 산식·단위를
답변에 반영하라. **investment는 원천 정지·기준월 혼재로 보류 중**(대안: realty_rental_yield).
**transit·school도 보류다**(2026-09-26, D-2026W39-16) — 입지 점수는 90점 이상이 86.7%라
변별력이 없어 지역 순위를 내지 않는다. "교통 좋은 동네"는 단지를 특정해
realty_location_scores의 location_facts(최근접역 거리·반경 안 정류장·학교 수)로 답하라.
비교 대상이 두어 곳으로 정해진 질문("A vs B 어디가 나아?")은 [유료]
realty_compare_regions가 시세·추이를 나란히 준다 — 이 도구는 순위·탐색용이다.
| 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?
Despite annotations already indicating readOnly, openWorld, and idempotent behavior, the description adds important behavioral details: growth uses 60-85㎡ fixed YoY to avoid distortion, price uses volume-weighted average with a minimum of 5 transactions, and current month may be incomplete. It explicitly states that investment, transit, and school are unavailable and why (source halted, score lacks discrimination). This goes beyond annotations and provides critical context for correct interpretation.
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 concise and front-loaded with the core purpose. It uses whitespace and bullet-like separators to break down metric explanations. While it contains quite a bit of text, every sentence serves a purpose: defining purpose, giving example queries, explaining metric formulas, and routing to alternatives. The only minor inefficiency is redundancy between the title and the first line, but it's not significant.
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 tool's complexity (multiple metrics, some unavailable, need for methodology awareness), the description is remarkably complete. It covers all metrics, explains why certain ones are unavailable, provides alternatives, and tells the agent to reflect methodology in responses. The output schema is absent, but the description hints at what the response will contain (rankings, methodology details). An agent can call and use this tool correctly with just this description.
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 documented, but the description adds crucial nuances beyond the schema. For metric, it explains what each value means and explicitly lists which are unavailable ('보류'), which the schema also mentions but in a more terse way. For region, it clarifies how the value filters (시도 vs 시군구 vs 전체). limit and order are left to schema, but those are straightforward. Overall, the description adds meaningful value 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 the tool's purpose: to look up 시군구 rankings by various axes such as price, growth rate, and jeonse-to-sale ratio. It provides concrete example queries ('제일 비싼 동네 어디야?', etc.) that an agent can match to user intent. It also differentiates from sibling tools by specifying what this tool is NOT for (comparison) and what to use instead.
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 (ranking/exploration queries) and when not to use it. It names alternatives for specific cases: realty_compare_regions for fixed comparisons, realty_location_scores for transit/school queries. It also warns about unavailable metrics and directs to realty_rental_yield for investment-related needs. This is exceptionally clear routing.
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 cover the safety profile (readOnly/idempotent/non-destructive), and the description goes well beyond them: it discloses real coverage numbers (2,294 of 2,851 with source text, 258 mentioning structure type, 0% for pre-2020 completed complexes), that coverage is emitted on every response, that missing values return 'unknown' which is not a negative, and that the agent should route to how_to_find_out rather than dead-end.
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, but the body is heavy: bolding, scare-quoted questions, repeated framing of the 'two false common beliefs', and coverage statistics restated across paragraphs. Much of the content earns its place, yet the same points are made more than once and the layout is denser than needed.
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 takes on that burden and does so thoroughly: it describes the two response layers (100% normative vs sparse complex-level), how coverage is reported per response, and the presence of a how_to_find_out field for the unknown case. An agent has everything needed to interpret results.
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 enum for axis is already documented in the schema, so the schema carries the parameter burden. The description reinforces that complex_name is optional and what happens when it is omitted, but adds no syntax or format detail beyond what the schema already states. 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?
States a specific decision it enables (whether an apartment's walls and plumbing can be altered) split into two explicit axes, ①load-bearing wall removal ②plumbing/stack relocation. It names the sibling that holds the full statutory text (realty_policy_rules(topic='unit_alteration_rules')), so an agent can tell the two apart 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?
Gives concrete trigger questions ("can I move the bathroom?", "do I need a district office permit?") and spells out the conditional behavior: leave complex_name empty to get the normative layer alone, supply it for complex-level notice citations. It routes to a named alternative for the full statute text, though it never states a clear when-not-to-use condition.
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 | 분양평수(예: 25·34) — 서버가 ×0.745로 전용평으로 환산해 **전용평 구간**(S·M·L·XL·XXL)을 고른다(분양 25평→S, 34평→M) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent behavior, and the description adds important non-obvious behavior: results are truncated to one month and sorted descending, with a truncated field to inspect. This genuinely helps the agent avoid misinterpreting partial 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?
Two short paragraphs: the first states purpose and audience, the second states the critical caveat about truncation and how to override it. Every sentence earns its place and the key warning is 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?
For a read-only query tool with no required parameters and a well-annotated schema, the description covers purpose, default behavior, and the main parameter to adjust. It could clarify whether a null region returns nationwide data, but the truncation warning covers the most important 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?
Schema coverage is 100% and parameter descriptions already explain limit, region, year_month, and pyeong_supply, including default behaviors and conversion logic. The description reinforces the sorted/truncated default but adds little 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?
Description states a specific verb ('조회한다') and resource ('시군구별 월세 수익률·평균 매매가·평균 월세'), making the tool's function clear. It does not explicitly differentiate from the many realty siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives practical usage context: default returns only the latest completed month sorted by yield, not the full period or region, and directs the user to use year_month for a specific month. It does not name alternatives or exclusions, but the guidance is actionable.
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 | 시군구 (예: 강남구, 성남시) ⚠️ 시도 없이 시군구만 주면 **합치지 않고 거절한다**(error='region_ambiguous') — '중구'처럼 여러 시도에 같은 이름이 있으면 합친 값은 어느 지역의 것도 아니다. sido와 갈라 넣어라(예: sido='서울특별시'·sigungu='중구'). 거절 응답이 후보를 준다. | |
| 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 declare read-only, open-world, idempotent, and non-destructive behavior, and the description layers on substantial caveats: past-auction rows are mixed in, sort=date_asc puts stale rows first, empty items with has_more=true does not mean no matches, and min_bid_source can be stale. It also warns against mixing court-auction and public-auction ledgers, adding behavior beyond what annotations 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 text is long but organized with bold axes, warning blocks, and bullet lists; each section prevents a concrete mistake such as pagination errors, stale-date misinterpretation, unit errors, or unreliable minimum-bid sources. The core filtering statement is front-loaded before the caveats.
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?
Since there is no output schema, the description carries the return-shape burden and covers has_more, next_offset, requested_offset, past_auction_count, min_bid_stale_risk_count, past_auction_note, and meta.past_prefix_skipped. It also tells the agent to call realty_get_auction_case for full case details, so 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?
Despite 100% schema coverage, the description significantly enriches parameter meaning: price units are in 10k won with the example 5억=50000, usage_name supports partial matching and rejects '토지', sido and sigungu ambiguity handling is explained, and pagination via offset/has_more/next_offset is documented. This goes well beyond the schema 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 opens with a specific verb and resource: filters court-auction properties by region, type, appraised price, and bid-failure count. It explicitly separates this tool from search, realty_get_auction_case, fetch, and realty_search_onbid, so an agent can distinguish it 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?
Provides explicit routing: use search first for a natural-language query, use realty_get_auction_case or fetch for details, use realty_search_onbid and realty_onbid_sale_rate for public auctions, and use realty_auction_alerts for bargain discovery. It also instructs when to set exclude_past=true and warns against combining auction ledgers.
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·[유료] 단지 도구들에 그대로 넣는 키다.
**단지끼리 급을 견줄 때는 price_per_exclusive_m2(전용 ㎡당 실거래 단가)를 축으로 쓰라**
— 행마다 실리고, **sort='unit_price'로 그 순서대로 받을 수 있다**(백엔드에 없는 축이라
이 응답에 실린 행만 다시 세운 것이다 — sort_applied.scope 참조). 행의 scores
(composite·convenience)는 걸어서 닿는 **시설의 개수**이지 선호도가 아니다(직선거리만
세어 간선도로 횡단 같은 보행 장벽을 못 본다) — 그 점수로 단지에 줄을 세워 추천하지
마라. 입지 점수는 **미검증 참고값**이다(scores_meaning.status — transit 90점 이상 86.7%).
"역세권이야?"는 행의 nearest_station·subway_distance_m(직선 m)으로 답하라.
응답의 scores_meaning·unit_price_axis에 근거가 있다.
**견줄 때는 조건을 맞춰라 — 두 인자가 그 수단이다.** ㎡단가는 평형이 작을수록,
준공이 새로울수록 높다(⚠️ **전국 중앙값 이야기다** — 서울은 구축이 더 비싼 동이 28.0%다).
`area_band_m2=59`면 각 단지의 대표 단가가 **전용 59±3㎡ 행만으로** 다시 계산되고,
`construction_year_band=2018`이면 2013~2023년 준공 단지가 비교군으로 표시된다
(in_year_band). 연식이 더 지배적이다 — 법정동 안 ρ 중앙값이 연식 +0.7298 대
평형 +0.2245라, 연식이 섞인 ㎡단가 순위는 **사실상 신축 순**이 되기 쉽다. 두 인자 모두
**가격 계산·비교군 표시에만** 걸리고 단지 검색을 거르지 않는다(못 잰 단지는 목록에
남고 값이 null + 사유다). 몇 개를 쟀고 몇 개를 못 쟀는지는 응답의 coverage가 적는다.
**0.84.0부터 scores.composite는 school + convenience다**(transit을 뺐다 — 전국 실측에서
고유값의 86.8%가 90~100에 몰려 변별력이 없고, 합산에 넣으면 법정동 격자 ρ 중앙값이
0.0825→0.0654로 떨어졌다). 백엔드 원장의 옛 가중평균 값은 **composite_legacy로 병기**하니 이전 응답과
견줄 때 그쪽을 쓰라 — 두 값은 척도가 다르다(가중평균 대 단순합).
**세대수 조건은 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=준공연도 **최신순(내림차순 — 신축이 먼저)**, **unit_price=전용 ㎡당 실거래 단가 높은 순** — 단지 간 급·선호를 견주는 축이다(못 잰 단지는 맨 뒤). ⚠️ unit_price는 백엔드에 없는 축이라 **이 응답에 실린 행만** 다시 세운 것이다 — total이 이 페이지보다 크면 '이 지역 ㎡단가 상위 N'으로 인용하지 마라(sort_applied.scope='page_only'가 그 사실을 값으로 싣는다). ⚠️ **오래된 순 정렬은 이 도구에 없다** — '오래된 단지'·'재건축 후보'를 찾는 조회에 sort='year'를 쓰면 정확히 반대 결과가 온다(정비사업 축은 realty_reconstruction·realty_redevelopment) | name |
| limit | No | 단지 수 — 평형별 시세가 포함돼 응답이 무겁다. 최대 20이고 더 받으려면 limit을 올리지 말고 **page를 넘겨** 이어 받아라(응답의 total이 전체 건수다 — 다만 서버가 지역 토큰을 뒤에서 검증한 경로에서는 total이 null이고 meta.total_unavailable이 사유를 적는다. 그리고 **sort='unit_price'로 받은 응답이 잘렸으면 page로 이어받을 수 없다** — sort_applied.page_continuation이 그 사실을 값으로 싣는다). 요청분을 다 실으면 응답이 크기 상한을 넘는 경우 **실제 반환 수를 줄이고 meta.size_capped**에 총계·이어받는 호출을 값으로 싣는다 — 조용히 자르지 않는다 (허용 범위 1~20) | |
| query | No | 단지명 일부 (예: 래미안, 마포래미안푸르지오) | |
| region | No | 시군구명 (예: 마포구, 서울특별시 마포구). **법정동까지 넣어도 된다**(예: '강남구 대치동') — 백엔드는 동으로 거르고 나머지 토큰은 서버가 검증해 note에 적는다. 종전 설명이 시군구만 적어 **이 도구가 못 하는 일로 읽혔고**, 동 단위를 원한 모델이 비아파트 도구로 새던 자리다(2026-08-23 PlayMCP QA) | |
| area_band_m2 | No | **평형을 고정해 단지끼리 견줄 때** 넣는다(전용면적 ㎡ — 분양면적이 아니다). 예: '59㎡대로 맞춰서 비교' → 59. 전용 ±3.0㎡ 근사 매칭이고(원장 면적이 59.224·59.9처럼 단지마다 달라 정확 일치는 대부분 0건이다), 각 단지의 price_per_exclusive_m2가 **그 밴드 안 평형 행만으로 다시 계산된다**. ⚠️ 이 인자는 **가격 계산에만** 걸리고 단지 검색을 거르지 않는다 — 밴드에 거래가 없는 단지도 목록에 그대로 실리고 그 값은 null + 사유다. 밴드에 든 행에는 in_area_band=true가 붙는다 (허용 범위 0 초과~500) | |
| period_months | No | 가격 집계 기간(개월). 비우면 2024-01 이후 전체 (허용 범위 1~24) | |
| max_households | No | 세대수 상한 — '300세대 이하 소규모'처럼 위쪽을 자를 때. min_households와 함께 주면 구간이 된다 | |
| min_households | No | **세대수 하한** — '500세대 이상', '대단지'를 여기에 넣는다(예: 500). 세대수가 원장에 없는 단지는 이 조건에서 제외되고 그 건수를 meta.households_scope로 실토한다(미상 ≠ 소규모) | |
| construction_year_band | No | **연식을 맞춰 단지끼리 견줄 때** 넣는 기준 준공연도. 예: 2018 → 2013~2023년 준공(±5년, 폭 10년)이 비교군이 된다. **연식은 ㎡단가를 가장 강하게 끄는 축이다** — 법정동 안에서 준공연도와 ㎡단가의 순위상관 ρ 중앙값이 +0.7298로 평형(+0.2245)·입지점수(+0.0707)보다 지배적이라, 연식이 섞인 비교는 사실상 '신축 순'이 되기 쉽다(⚠️ 방향은 지역마다 반대일 수 있다 — **서울은 ρ +0.3833이고 구축이 더 비싼 동이 28.0%, 세종은 36.8%**다. 재건축 기대가 가격에 들어간 U자 구간이다). ⚠️ 이 인자도 검색을 거르지 않는다 — 밴드 밖 단지는 목록에 남고 행마다 in_year_band로 갈라 적힌다(준공연도가 원장에 없으면 null: **판정 불가이지 구식이 아니다**). area_band_m2와 함께 주면 둘 다 걸린다 (허용 범위 1900~2100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/idempotent profile, and the description adds non-obvious behavior that annotations cannot express: sort='unit_price' is rebuilt only from returned rows and cannot be paged, area/year bands affect price computation but not filtering, households=null means 'not in ledger' not 'small', and scores.composite changed meaning in 0.84.0 with composite_legacy as the comparable value. This materially changes how a model should interpret 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 front-loaded with purpose and uses bold section labels, but it is very long and repeats key cautions (e.g., '검색을 거르지 않는다' appears for both bands). The density is justified by the tool's complexity, but it is not 'appropriately sized' in the sense of a crisp definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, no output schema, and many sibling tools, the description covers response fields, pagination caps, null semantics, sort order caveats, version changes, and even the external report ID for the households feature. An agent has enough context to invoke the tool correctly and interpret the response 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 coverage is 100%, so the baseline is 3, but the prose adds deep meaning for sort, area_band_m2, construction_year_band, and min/max_households beyond the schema. One flaw: it asserts 'query·region 중 하나는 필수' while the schema declares zero required parameters, which could mislead an agent about call validation.
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 combination: '아파트 단지를 이름·지역으로 검색하고 평형별 실거래 시세를 함께 돌려준다.' It then positions the tool as the '1차 도구' for complex questions, which distinguishes it from regional-average siblings before any schema inspection.
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 names realty_region_price_stats and realty_area_price_bands as the wrong tools for complex-level questions and the right tools for region-level trends. It also routes floor-band questions to realty_complex_pyeong_price and 'oldest first' queries to realty_reconstruction/realty_redevelopment, leaving no ambiguity about alternatives.
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 | 시군구 (예: 춘천시, 강남구). 부분일치다 — '고양시'는 '고양시 덕양구'도 잡는다. ⚠️ 시도 없이 시군구만 주면 **합치지 않고 거절한다**(error='region_ambiguous') — '중구'처럼 여러 시도에 같은 이름이 있으면 합친 값은 어느 지역의 것도 아니다. sido와 갈라 넣어라(예: sido='서울특별시'·sigungu='중구'). 거절 응답이 후보를 준다. | |
| open_only | No | 입찰 마감이 아직 안 지난 회차가 남은 물건만. 기본 True — 원장에는 이미 끝난 회차 행이 함께 들어 있어서(물건 25,669개 중 마감 전 회차가 남은 것은 10,327개), 끄면 지금 입찰할 수 없는 물건이 섞인다. cltr_mng_no로 특정 물건을 볼 때는 무시된다. | |
| usage_name | No | 용도 부분일치(대·중·소 3단을 한꺼번에 건다). 중분류 5종은 토지·주거용건물·상가용및업무용건물·용도복합용건물·산업용및기타특수용건물이고 소분류는 91종이다. **'아파트'는 소분류라 중분류로는 안 걸린다** — 넓게 보려면 '주거용건물'. 원장 값 예: 주거용건물·아파트·다세대주택·대지·상가주택. 경매 어휘 '전답'은 여기 없다(전·답으로 갈렸다) — 없는 이름은 거절하며 쓸 수 있는 값을 준다. | |
| 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?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, and the description builds on this without contradicting it. It discloses deep behavioral traits: rows are auction rounds not properties (with measured 3.51 rows/property and 71% overcounting risk), min_bid returns null (not 0) when '비공개', seized-property addresses are masked at the street-number level, and sido values are re-standardized with sido_source/sido_basis provenance fields. No annotation contradiction.
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 bolded section carries operationally distinct knowledge that prevents a real error, and the most critical fact (not court auction + sibling routing) is front-loaded. The emoji-warning headers aid scanning. It could be tightened slightly, but given 11 parameters and a non-obvious row-vs-property data model, the density is largely earned.
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 an 11-parameter tool with no output schema, the description is unusually complete: it documents the response envelope (rounds_total, rounds_remaining, next_round, last_round, condition_rows, min_bid_undisclosed_rounds, not_court_auction), all parameter caveats, data-quality pitfalls, and what is absent from the ledger (권리분석·감정평가서·공고 원문). Nothing an agent needs to call it 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?
Schema coverage is 100%, giving a baseline of 3, but the description adds substantial meaning beyond the schema: '광주' ambiguity returning error='sido_ambiguous', sigungu partial-match and region_ambiguous rejection requiring sido, usage_name's 3-level hierarchy ('아파트' is a subclass so it won't match mid-class '주거용건물'), open_only's default-true rationale (25,669 vs 10,327 active properties), and property_type being flagged as the most important axis with distinct legal natures. The description also corrects semantics: limit is property count, cltr_mng_no is the detail view that returns per-round schedules.
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 precise verb+resource+scope: '한국자산관리공사 온비드 공매 물건을 지역·용도·재산구분·감정가로 조회한다' and immediately draws the boundary against court auction (법원경매가 아니다). It names the exact legal basis (국세징수법·국유재산법·공유재산법) and the operator (캠코), and distinguishes itself from realty_search_auctions and realty_onbid_sale_rate. An agent cannot confuse this with any 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?
Exceptional routing guidance: explicitly names realty_onbid_sale_rate for sale-rate questions, realty_search_auctions for court auction, says to ask the user when they only say '경매', and warns never to merge/average the two. Also warns not to transplant realty_policy_rules answers because the rights-acquisition rules differ. This is explicit when-to-use, when-not-to-use, and alternatives.
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"다.
**여기서 백틱은 필드 이름이고 큰따옴표는 값이다** — "lookup_failed"·"not_found"라는
이름의 키는 어느 응답에도 없다(찾지 마라). 지역 벤치마크만 필요하면 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?
Even though annotations already mark this as read-only/idempotent, the description discloses important runtime behavior: empty arrays can mean either not_yet_published or not_yet_collected, disambiguated by freshness_verdict.verdict; not-found and lookup-failed produce error responses with distinct error/result values; estimate_superseded is attached when estimates conflict with actuals; and null cutoffs mean no winners/no point system, not zero points. It also explicitly states the tool does not calculate win probability, preventing a common LLM hallucination.
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 text is long, but it is front-loaded with the core purpose and organized into bolded warning blocks, numbered pathways, and a 'don't fabricate' section, so an agent can locate the relevant guidance quickly. It earns most of its length given the tool's complexity and missing output schema, though a few dated changelog asides could be trimmed for tightness.
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 full burden of explaining response semantics, and it does: freshness_verdict verdict values, result_status_legend as canon, error/result keys on rejection, allocated_households_rank1_local as denominator source, sample-concentration warnings, and estimate_superseded behavior. The two operational paths and their data caveats are fully covered, so an agent has what it needs to interpret results 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 the baseline is 3, but the description adds substantial parameter-level guidance beyond the schema: my_score should come from realty_subscription_score if unknown, breakdown must be sigungu/quarter/year depending on question type, omitting budget_max_10k when a budget was stated can mix in unaffordable complexes, and house_manage_no absent from both ledgers must produce a not_found rejection rather than 'not published'. This transforms raw parameter names into decision rules.
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 computes 청약 경쟁률 and 실제 당첨 가점 커트라인, and frames them as the quantitative basis for 'will my 52-point score win?'. It also names the sibling realty_subscription_score for users who need to compute their score first, so an agent can distinguish this tool from related subscription 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 explicit routing conditions: if the user doesn't know their score, use realty_subscription_score and pass my_score; if only a regional benchmark is needed, call without house_manage_no using region/sigungu; and for price reasonableness, continue to realty_presale_vs_market. It also explains when the tool falls back from published results to regional benchmarks, and warns against treating missing data as 'not published', which is exactly when/not-to-use guidance.
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)을 배점표로 계산한다.
민영주택 일반공급 가점제 점수(만점 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?
Annotations already cover readOnly/idempotent/destructive=false, so the bar is lower. The description goes beyond them by disclosing a critical behavioral constraint: it will not adjudicate contested dates/qualifications (사실판단), and it requires traps (misevaluation → disqualification) to be surfaced with the result. It does not describe output shape, but no output schema exists and the trap requirement is the key safety note.
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-loads the purpose and score composition, then uses numbered boundaries: ① declared inputs + traps, ② next step to odds, ③ source of truth. Every sentence earns its place. However, it is somewhat dense with cross-references and repeated boundary caveats, which slightly reduces crispness.
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 calculator with full schema coverage and no output schema, the description supplies the essential missing context: the declared-not-adjudicated boundary, the trap warning agents must relay, the sibling for comparison, and the policy source of truth. Nothing an agent needs to call it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter description already explains ranges, fractional years, and fact-judgment caveats. The description reiterates the three-part composition but adds no syntax or edge-case details beyond the schema. Baseline 3 is appropriate when the schema 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?
States a specific verb (계산한다/apply a point table) and resource (민영주택 일반공급 청약 가점, 최대 84점) and names the exact composition (무주택기간 32 + 부양가족 35 + 통장 17). It is clearly distinguishable from sibling realty_subscription_odds, which it explicitly routes to as the next step.
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/when-not/alternatives: it states this handles the declared-value point calculation, that all three inputs must be the caller's declared facts (not server-adjudicated), and that the score should be passed to realty_subscription_odds for odds comparison and that realty_policy_rules(topic=subscription_account) is the source of truth for rules. This is unusually thorough routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realty_supply_demand_balance시군구 수급 균형 — 입주 예정 대 세대 증가ARead-onlyIdempotentInspect
시군구마다 앞으로 들어올 아파트와 늘어나는 세대를 같은 창으로 나눠 수급을 판정한다.
"○○ 공급 과잉이야?", "세종 대전 서울 경기 수급", "어디가 입주 대비 수요가 많아?"류 질문의
자리 — 입주(청약홈 공고, 향후 N개월)를 연 단위로 환산해 최근 12개월 세대 증가로 나눈
**비율**과 판정(과잉 >1.5 · 공급 우위 1~1.5 · 균형 0.5~1 · 부족 <0.5 · 세대 감소 중)을 주고,
같은 행에 교차검증 신호(순이동·매매 거래량 증감·전세/월세 증감과 월세 비중·1순위 경쟁률·
낙찰가율·미분양)를 싣는다. 판정과 신호가 엇갈리면 `conflict`에 적는다.
**결론에 반드시 옮길 것**:
· 입주는 **하한**이다 — 정비사업 조합원분이 공고에 없어 서울처럼 재건축 비중이 큰 곳은
'부족'이 실제보다 과장된다. `meta.disclosures`를 그대로 전하라.
· `permit_pipeline_households`(사업승인 기준)는 **입주에 더하지 마라**(이중계상).
· `denominator_unstable=true`면 비율이 분모 탓에 흔들린다 — 배수를 단정하지 마라.
· 판정 구간은 **우리 규칙**이지 공식 기준이 아니다. 호가 매물·비아파트는 데이터에 없다.
· 지표마다 기준 시점이 다르다 — `meta.series_as_of`로 밝혀라.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | 시도(예: '경기', '서울', '세종') 또는 시군구(예: '평택시', '서울 강남구'). 시도를 주면 소속 시군구 표 + 시도 합계, 시군구를 주면 그 행 + 시도 합계. 동명 시군구('중구')는 시도를 붙여라 — 안 붙이면 후보를 돌려준다. '광주'는 광역시·경기 광주시가 갈려 '광주광역시' 또는 '광주시'로 줘라 | |
| horizon_months | No | 입주를 **다음 달부터 몇 개월** 볼지(기본 24). 비율은 이 창을 연 단위로 환산해 12개월 세대 증가와 나눈다. 30개월을 넘기면 뒤쪽은 아직 공고 전이라 과소로 나온다 (허용 범위 6~60) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent, but the description adds rich behavioral context beyond them: how the ratio is annualized, what verdict thresholds mean, the conflict signal reconciliation, meta.disclosures requirements, and explicit data limitations (호가 매물, 비아파트, 기준 시점 차이). 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 sentence earns its place given the analytical complexity. It opens with the core purpose, then systematically lists mandated caveats. Slightly verbose, but not padded; the structure is logical and front-loaded with the verdict categories before the detailed warnings.
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 two-parameter read-only analytical tool with no output schema, the description covers what data is returned (ratio, verdict, signals, conflict), how to interpret each verdict, critical caveats that must be passed to the final answer, and meta information (disclosures, series_as_of, denominator_unstable). An agent has everything needed to call it and interpret results 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 the baseline is 3. The parameter descriptions in the schema already explain region disambiguation and horizon over-estimation. The main description adds calculation context (annualized ratio divided by 12-month household increase) but does not substantially enhance parameter-level 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 description states a specific verb (판정한다), a clear resource (시군구별 입주 예정 대 세대 증가 수급), and the exact output (비율, 판정 구간, 교차검증 신호). It explicitly answers targeted question types and references a conflict field, making it readily distinguishable from sibling tools like realty_supply_pipeline or realty_move_in_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?
The '결론에 반드시 옮길 것' section provides explicit interpretive rules: treat 입주 as a floor, do not add permit_pipeline_households, avoid definitive statements when denominator_unstable, and clarify series_as_of. It also includes regional input disambiguation (중구, 광주) in the parameter description. This goes well beyond implied usage and gives clear do/don't guidance.
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?
Annotations cover the read-only/idempotent profile, but the description adds substantial non-obvious behavior: rows may carry announced_notice, absence of that marker does not imply unannounced (meta.announced_cross_check), the values are a lower bound (pre-approval 지구계획/공모 excluded), business_body is structurally empty pre-completion, and the floor-axis fields can be missing due to a backend lag the agent should not chase. It also correctly defers live field availability to response meta.floor_axis rather than asserting fixed behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the body sprawls across field-by-field caveats, an internal ticket reference (T-2026W33-68), and a dated 2026-08-20~09-07 incident narrative. Much of the floor-axis paragraph is operational incident history that does not help an agent decide whether or how to call the tool, and it pushes the agent to consult the response instead of the doc.
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, no-required-param listing tool with full schema coverage and no output schema, the description is more than complete: it covers scope, exclusions, double-counting, lower-bound interpretation, floor-axis caveats, and where live state must be read from (meta.*). The only gap is that it never describes the row shape or pagination, but that is a minor omission given the richness already 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% so baseline is 3, but the description adds real cross-tool semantics: it notes months is a shorthand replacing to_ym with the same contract as realty_move_in_supply (mutual exclusion = error) and warns region here is a partial-match 시도·시군구·동 whereas the sibling's region is 시도-only — a caller would otherwise pass arguments that silently behave differently.
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+timeframe: planned supply seen via 사업계획승인 basis before any 모집공고. It explicitly distinguishes itself from siblings realty_presale and realty_move_in_supply, explaining those are registered only at 모집공고일 and thus structurally blind to pre-notice volume.
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 concrete query archetypes ('지금 넣을까, 다음 걸 기다릴까', '입주 폭탄 있나'), tells the agent to call it during 청약 상담 when 재당첨/전매제한 creates false urgency, and explicitly warns not to double-count with already-announced notices — routing those to realty_presale/realty_subscription_odds instead.
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?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral value: it discloses that the parser is a limited adapter, that unread axes surface in the response's `unapplied_conditions`, and warns not to misread narrow result scope when that field is non-empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening two sentences say the same thing ('법원경매 물건을 자연어로 검색한다' appears twice), and the routing to realty_search_auctions is repeated three times across the body. Information is front-loaded but the redundancy costs it marks.
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 `unapplied_conditions` response field and explaining the id→fetch follow-up. It covers the parser's limitation and the handoff clearly, leaving only minor gaps about full 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% and the schema itself exhaustively documents the query axis set (지역 표기, 물건종류, 유찰횟수, 감정가). The description largely restates the same examples and axis list, so it adds reinforcement rather than new meaning — 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?
States a specific verb+resource: searches court-auction (법원경매) properties from a natural-language query. It immediately scopes itself against siblings, naming realty_presale, realty_presale_vs_market and realty_region_price_stats as out-of-scope, so an agent can distinguish it without opening any 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?
Gives explicit routing rules: pass the user's sentence verbatim here, use realty_search_auctions when the axes are already known as values, use realty_get_auction_case when the case number is known, and use fetch for details on a returned id. When-to-use and when-not are both covered with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
realty_move_in_supply1 field changed- changed
Input schema / properties / region / descriptionPrevious value: -"**시도만** (예: 서울, 경기, 세종, 부산). ⚠️ 시군구('강남구')는 여기가 아니라 sigungu에 넣어라 — 넣어도 오류가 나지 않고 0건이 온다(realty_supply_pipeline의 region은 시군구·동도 받는다. 두 도구의 계약이 다르다)"New value: +"**시도만** (예: 서울, 경기, 세종, 부산). 시군구('강남구')는 sigungu에 넣어라 — region에 넣으면 서버가 sigungu로 옮겨 조회하고 그 사실을 meta.unapplied_conditions에 적는다(시군구 어휘에 없는 이름은 옮기지 못하고 역시 거기 적는다). realty_supply_pipeline의 region은 시군구·동도 받는다 — 두 도구의 계약이 다르다"
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)·면책, 기산점(개시≠인가) 함정. **재산·주택 축은 credit_rehab_property**, credit_rehab_property=개인회생 중인데 집 살 수 있나·배우자 명의로 주택 취득·청산가치·가용소득·퇴직금 압류금지·퇴직연금 압류금지 범위·주택임차보증금 압류금지·재산 은닉·인가 후 재산이 늘면 | **개인회생×부동산** — 개인회생재단의 범위(개시 vs 인가 시점)·청산가치 보장원칙이 묶는 것·압류금지라 재단에서 빠지는 재산(퇴직연금 전액 vs 퇴직금 1/2)·부부 명의 축·은닉과 정상 거래의 경계. **판정은 안 한다**, 신용·대출 축은 credit_rehab, 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=제공 항목 안내(토픽 목차)"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)·면책, 기산점(개시≠인가) 함정. **재산·주택 축은 credit_rehab_property**, credit_rehab_property=개인회생 중인데 집 살 수 있나·배우자 명의로 주택 취득·청산가치·가용소득·퇴직금 압류금지·퇴직연금 압류금지 범위·주택임차보증금 압류금지·재산 은닉·인가 후 재산이 늘면 | **개인회생×부동산** — 개인회생재단의 범위(개시 vs 인가 시점)·청산가치 보장원칙이 묶는 것·압류금지라 재단에서 빠지는 재산(퇴직연금 전액 vs 퇴직금 1/2)·부부 명의 축·은닉과 정상 거래의 경계. **판정은 안 한다**, 신용·대출 축은 credit_rehab, 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만원 인정·미납/선납·예부금 전환 2027-09-30 한시, 2026-09-23 1년 재연장) — 점수 계산은 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_builder_presale_record3 fields changed- added
Input schema / properties / min_shortfallAdded value: +{ + "default": 1, + "description": "sites: 최근 회차 미달 세대 하한 (허용 범위 0~100000)", + "maximum": 100000, + "minimum": 0, + "title": "Min Shortfall", + "type": "integer" +} - added
Input schema / properties / sortAdded value: +{ + "default": "shortfall", + "description": "sites 정렬", + "enum": [ + "shortfall", + "ratio", + "recent" + ], + "title": "Sort", + "type": "string" +} - added
Input schema / properties / viewAdded value: +{ + "default": "companies", + "description": "sites=무순위 청약 미달 단지 목록(최근 회차 △N, since는 최근 회차 월)", + "enum": [ + "companies", + "sites" + ], + "title": "View", + "type": "string" +}
1 tool update
- Added
realty_builder_presale_record
1 tool update
- Added
realty_supply_demand_balance
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.16378MIT
- 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.1MIT
- 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.828 npmMIT
- 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.2-
Glama MCP Gateway
Add one secure layer between your agents and this server.