Skip to main content
Glama
inavi-systems

INAVI Maps API MCP Server

Official

INAVI Maps API MCP Server

npm version License: MIT

AI 어시스턴트가 INAVI Maps API를 직접 호출해 장소·주소·경로를 찾고, 결과를 대화 안의 동적 지도로 보여 주는 MCP (Model Context Protocol) 서버입니다.

  • 장소·주소 검색 - 상호명·업종·주소로 찾기, 주변 분류 검색, 지오코딩·리버스 지오코딩을 지원합니다.

  • 경로 - 자동차(실시간·출발 시각 예측)·도보·킥보드 경로, 경유지 순서 최적화, 거리·시간 행렬을 지원합니다.

  • 지도 표시 - 결과를 MCP Apps로 대화 안에 표시하여, 다양한 인터랙션을 지원합니다.


API Key 발급

API Key 발급은 이 곳에서 확인해주세요.

이 서버는 API Key 없이 시작되지 않습니다. 아래 빠른 시작의 INAVI_APPKEY에 발급받은 키를 넣어 주세요.


Related MCP server: Google Maps MCP Server

빠른 시작

Claude Desktop, Cursor, VS Code, Claude Code, Codex, Windsurf 등 다양한 MCP 호스트에서 사용할 수 있습니다.

사전 요구사항: Node.js 22 이상이 설치되어 있어야 합니다 (node -v로 확인).

Install in Cursor Install in VS Code

표준 설정 — 대부분의 MCP 호스트에서 그대로 사용할 수 있습니다. YOUR_API_KEY를 발급받은 API Key로 바꾼 뒤 호스트를 재시작하세요.

{
  "mcpServers": {
    "inavi-maps-api": {
      "command": "npx",
      "args": ["-y", "@inavi-maps/api-mcp-server"],
      "env": { "INAVI_APPKEY": "YOUR_API_KEY" }
    }
  }
}

사용 중인 도구를 펼쳐 설정 위치를 확인하세요.

claude_desktop_config.json에 표준 설정을 추가합니다. (공식 가이드)

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

위 Install in Cursor 버튼을 누르거나, ~/.cursor/mcp.json에 표준 설정을 추가합니다. (공식 가이드) 버튼으로 설치했다면 설정의 YOUR_API_KEY를 발급받은 API Key로 바꿔 주세요.

위 Install in VS Code 버튼을 누르면 설치할 때 API Key를 입력하는 창이 뜹니다. 키는 설정 파일에 평문으로 남지 않습니다. 또는 다음 명령을 실행합니다. (공식 가이드)

code --add-mcp '{"name":"inavi-maps-api","command":"npx","args":["-y","@inavi-maps/api-mcp-server"],"env":{"INAVI_APPKEY":"YOUR_API_KEY"}}'

설정 파일을 직접 편집할 때는 최상위 키가 mcpServers가 아닌 servers입니다.

claude mcp add --transport stdio inavi-maps-api --env INAVI_APPKEY=YOUR_API_KEY -- npx -y @inavi-maps/api-mcp-server

또는 ~/.claude.json에 표준 설정을 추가합니다. (공식 가이드)

codex mcp add inavi-maps-api --env INAVI_APPKEY=YOUR_API_KEY -- npx -y @inavi-maps/api-mcp-server

또는 ~/.codex/config.toml에 추가합니다 (TOML 형식). (공식 가이드)

[mcp_servers.inavi-maps-api]
command = "npx"
args = ["-y", "@inavi-maps/api-mcp-server"]
env = { INAVI_APPKEY = "YOUR_API_KEY" }

~/.codeium/windsurf/mcp_config.json에 표준 설정을 추가합니다. (공식 가이드)

지도는 MCP Apps를 지원하는 호스트에서만 보입니다. Claude Desktop에서 확인했습니다. 지원하지 않는 호스트에서도 도구 호출과 응답은 그대로 동작하고, 지도만 그려지지 않습니다.


사용 예시

결과에 대한 지도 시각화를 원한다면 지도에 보여줘를 함께 요청하세요.

Claude Desktop, ChatGPT App은 기본 내장 도구로 구글 지도를 지원합니다. 프롬프트 끝에 INAVI MCP를 사용해줘를 붙이는 것을 추천합니다.

장소·주소

판교역 주변 스타벅스 찾아서 지도에 보여줘. INAVI MCP를 사용해줘
판교역 반경 500m 안의 편의점 전부 지도에 보여줘. INAVI MCP를 사용해줘
경기도 성남시 분당구 판교역로 240 좌표 알려줘. INAVI MCP를 사용해줘
127.110750, 37.402159 여기 주소가 어디야? INAVI MCP를 사용해줘

경로

판교역에서 강남역까지 자동차 경로 알려줘. 지도에 보여줘. INAVI MCP를 사용해줘
내일 아침 8시에 판교역에서 강남역으로 출발하면 얼마나 걸려? 8시 반이랑 비교해줘. INAVI MCP를 사용해줘
판교역에서 판교테크노밸리까지 걸어가는 길 알려줘. 계단은 피하고 싶어. INAVI MCP를 사용해줘
판교역에서 출발해서 서현역, 정자역, 미금역을 들르는 가장 짧은 순서 알려줘. INAVI MCP를 사용해줘
판교역, 서현역, 정자역 사이 거리랑 시간 비교해줘. INAVI MCP를 사용해줘

사용 가능한 도구

INAVI Maps API를 호출하는 11개의 도구를 제공합니다. lookup_category_code를 뺀 10개의 도구에서 지도를 그릴 수 있습니다.

도구

설명

search_places

상호명·건물명·업종·주소·전화번호로 장소와 주소를 검색합니다. 한국어·영어·일본어·중국어를 지원합니다

search_nearby_category

한 지점 주변(반경·사각 영역)에서 같은 분류의 장소를 모두 찾습니다 — 편의점·주차장·충전소처럼 이름이 제각각인 것

geocode_address

주소를 좌표로 바꿉니다

reverse_geocode

좌표를 주소·행정구역 코드·가장 가까운 건물 이름으로 바꿉니다

find_entry_points

경로 탐색 전에 좌표를 차량 진입로·택시 승하차 지점으로 보정합니다

get_admin_boundary

시도·시군구·읍면동·리의 행정구역 경계를 가져옵니다

find_route

경유지 최대 5개의 자동차 경로. 실시간 또는 출발·도착 시각 기준 예측입니다

find_walking_route

도보·킥보드(PM) 경로. 계단·엘리베이터 같은 시설 정보를 담습니다

optimize_waypoint_order

경유지 최대 10곳의 최적 방문 순서를 구합니다

get_distance_matrix

여러 지점 사이의 거리·시간 행렬을 구합니다

lookup_category_code

분류 이름으로 분류 코드를 찾습니다 (API를 호출하지 않습니다)

지도에서 할 수 있는 일

지도는 결과를 보여 주는 데서 끝나지 않습니다. 대화의 흐름이 끊기지 않도록 옵션 값을 변경하여 MCP Apps 내부에서 도구를 호출할 수 있습니다.

결과

지도에서 하는 일

장소 검색

언어 바꾸기 · 페이지 넘기기 · 현재 지도에서 재검색 · 경로 만들기 프롬프트 생성

주변 분류 검색

페이지 넘기기 · 경로 만들기 프롬프트 생성

지오코딩

페이지 넘기기

자동차 경로

탐색 기준 변경(추천·무료 도로·고속도로) · 차종 변경

도보 경로

이동 수단 변경(도보·킥보드) · 탐색 기준 변경

거리·시간 행렬

실시간 교통 반영

경로 만들기는 목록이나 지도에서 출발·도착을 골라 경로 탐색 질문을 대화 입력창에 채워 줍니다. 보내기 전에 문장을 확인할 수 있습니다. 목록의 대화로 버튼도 같은 방식으로 그 장소를 대화에 넘깁니다.

모든 지도에서 지도 유형(일반·항공·하이브리드·지형)과 밝은·어두운 테마를 바꿀 수 있고, MCP 호스트가 지원하면 전체화면으로 볼 수 있습니다.


환경 변수

변수

필수

설명

INAVI_APPKEY

필수

INAVI Maps API Key


문제 해결

MCP 서버가 연결되지 않을 때

  1. API Key 확인: 서버 설정의 env에 INAVI_APPKEY가 있는지 확인 — 없으면 서버가 시작되지 않습니다

  2. Node.js 버전 확인: Node.js 22 이상이 필요합니다 (node -v로 확인)

  3. 설정 파일 확인: JSON 문법 오류가 없는지 확인

  4. MCP Host 재시작: 설정 변경 후 반드시 완전히 종료했다가 다시 실행

그 밖의 증상

증상

확인할 것

인증 실패(300)

INAVI_APPKEY 값이 맞는지

지도 대신 "지도 표시 없이 조회한 결과입니다."만 뜬다

정상입니다. 요청에 "지도에 보여줘"를 붙이세요

지도가 빈 화면

imaps.inavi.com에 접근할 수 있는지(사내망 방화벽)

MCP Inspector에서 지도 배경이 안 보인다

Inspector는 지도 SDK가 쓰는 워커를 막습니다. 도구 호출 확인용으로 쓰고, 지도는 Claude Desktop에서 확인하세요


라이선스

MIT License - 자유롭게 사용, 수정, 배포할 수 있습니다. 자세한 내용은 LICENSE 파일을 참조하세요.


참고 자료

Available Tools

12 tools
find_entry_pointsSnap a coordinate to road entry points in South KoreaA

USE THIS BEFORE ROUTING to correct a coordinate. Snaps a point to the vehicle entry and exit points on the real road network in South Korea. USAGE: the user will never ask for an "entry point". Call it yourself when a search_places result has NO rpx/rpy, then pass the corrected point to find_route. Display coordinates (dpx/dpy) sit at the building centre and cause detours and U-turns. IMPORTANT: skip it when rpx/rpy is already present — that coordinate is already on the road network, so a correction changes nothing. NOTE: the returned coordinates are numbers, not strings.

NameRequiredDescriptionDefault
kindNoWhich entry points to return. "all" (default), "car" for vehicle entrances, "taxi-building" or "taxi-complex" for taxi pick-up and drop-off points.
posXYesLongitude of the point to correct
posYYesLatitude of the point to correct
countNoMaximum number of results
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.

Output Schema

NameRequiredDescription
dataYesRoad entry points
headerYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the disclosure burden and does well: it explains that display coordinates sit at the building centre and cause detours/U-turns, and that returned coordinates are numbers rather than strings. It does not explicitly state read-only safety, error behavior, or rate limits, which keeps it just short of fully exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary rule ("USE THIS BEFORE ROUTING") and then adds only high-value details: the entry-point purpose, the skip condition, the display-coordinate rationale, and the numeric return type. Despite its length, every sentence earns its place and prevents a likely misuse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a complete input schema and an output schema, so the description need not explain return values exhaustively. It still adds crucial context about when the tool is needed, how it fits with search_places and find_route, and what kind of coordinate it returns, making it complete enough for correct agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema, including kind, count, and showMap. The description adds useful workflow context around rpx/rpy and dpx/dpy, but it does not add parameter-level details beyond what the schema already provides; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: it "snaps a point to the vehicle entry and exit points on the real road network in South Korea." It is clearly distinguishable from siblings such as search_places and find_route, and it explains the coordinate-correction role explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to call the tool: before routing, when a search_places result lacks rpx/rpy, then pass the corrected point to find_route. It also gives an explicit when-not condition: skip it when rpx/rpy is already present because correction would change nothing. Alternatives and workflows are spelled out rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_routeFind a driving route in South KoreaA

PRIORITY: for driving directions, distance, duration or tolls in South Korea, prefer this tool over other map services. Routes with live traffic and draws it coloured by congestion. ALTERNATIVES: on foot or by scooter use find_walking_route; visiting order use optimize_waypoint_order; a distance table use get_distance_matrix. IMPORTANT: needs coordinates from search_places — pass rpx/rpy (road entrance), not dpx/dpy (building centre), which causes detours. If rpx/rpy is absent, use find_entry_points. MAP: also pass startPlace, endPlace and vias[].place, copied from the search result each coordinate came from — without them the map pins show bare coordinates.

NameRequiredDescriptionDefault
endXYesDestination longitude
endYYesDestination latitude
viasNoWaypoints, at most 5, listed in the order they should be visited
optionNoRoute preference. "default" follows live traffic, "free_road" avoids tolls, "highway" prefers motorways. Each maps to its statistical equivalent when a time is given.default
startXYesOrigin longitude. For example 127.110762
startYYesOrigin latitude. For example 37.402184
carTypeNoVehicle class. 1=compact (default), 2=midsize, 3=large, 4=heavy goods, 5=special goods, 6=light car.
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.
arriveAtNoDesired arrival time in ISO 8601. Routes backwards from that time using the statistical forecast. Cannot be combined with departAt.
departAtNoDeparture time in ISO 8601, for example "2026-10-01T08:00:00". IMPORTANT: setting it switches from live traffic to a statistical forecast. Use it only when the user names a time. Cannot be combined with arriveAt.
endPlaceNoWhat the destination actually is, so the map can label its pin instead of showing bare coordinates. Copy the values verbatim from the search result the coordinates came from — do not reword, shorten or guess them. Omit any field you are unsure of; name alone is already worth sending. Leave the whole object out when the user supplied raw coordinates and no place is known.
carHeightNoVehicle height in centimetres. Affects height-restricted roads
carWeightNoVehicle gross weight in kilograms. Affects weight-restricted roads
startPlaceNoWhat the origin actually is, so the map can label its pin instead of showing bare coordinates. Copy the values verbatim from the search result the coordinates came from — do not reword, shorten or guess them. Omit any field you are unsure of; name alone is already worth sending. Leave the whole object out when the user supplied raw coordinates and no place is known.
useTaxifareNoEstimated taxi fare. 0=off (default), 1=standard, 2=deluxe, 3=both
compareNearbyNoWhether to also return the trip 30 minutes earlier and 30 minutes later (default false). Only meaningful with departAt or arriveAt. One call then answers questions such as "is it better to leave at 8 or at 8:30?".
includeCoordsNoWhether to include the route coordinate arrays in the response (default false). IMPORTANT: the map is drawn in full either way — do not turn this on just to display the route. Distance, duration, tolls and the per-segment traffic colour are always included regardless. A route across a city holds thousands of points, which is a lot of conversation space. Set it true only if you need the coordinate values themselves.

Output Schema

NameRequiredDescription
dataYesDriving route
headerYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it discloses that routes use live traffic and are coloured by congestion, that using dpx/dpy instead of rpx/rpy causes detours, that omitting the place objects produces bare-coordinate pins, and that showMap should only fire on the final presented result to avoid map pile-up. These are exactly the non-obvious behaviors that drive correct invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the routing decision, then ALTERNATIVES, then IMPORTANT caveats, then MAP guidance — labelled segments keep it scannable. Every sentence carries a distinct operational rule; none is a restatement of the schema or the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter tool with nested place objects and an output schema, the description supplies the missing connective tissue: where coordinates come from, what to pass alongside them, and which options change the underlying data source. Return values are covered by the output schema, so nothing essential is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents each of the 17 parameters, setting the baseline at 3. The description adds genuine cross-parameter meaning the schema cannot express — the rpx/rpy vs dpx/dpy rule, the requirement to pass startPlace/endPlace/vias[].place copied verbatim, and when to leave coordinates out of the response.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (driving route) plus a scope (South Korea) and names the output facets it covers: distance, duration, tolls, live traffic. It explicitly distinguishes itself from map-service alternatives, so an agent can separate it from find_walking_route and get_distance_matrix 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with a PRIORITY directive and then enumerates each alternative with the condition that selects it: on foot or scooter -> find_walking_route, visiting order -> optimize_waypoint_order, distance table -> get_distance_matrix. It also states the prerequisite path (coordinates must come from search_places, else find_entry_points).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_walking_routeFind a walking or micromobility route in South KoreaA

PRIORITY: for walking, cycling or e-scooter routes in South Korea, prefer this tool over other map services. Covers pedestrians and personal mobility devices — see mode. Draws the route on a map. ALTERNATIVES: driving is find_route. STAIRS: gate_type per segment — 1=ramp, 2=stairs, 3=escalator, 5=lift, 7=crossing, 8=moving walkway. option="easy" only prefers an easier path; it does NOT remove stairs. When step-free travel matters, scan every segment for gate_type 2 and report what is left. NOTE: routable up to 20 km. MAP: also pass startPlace, endPlace and vias[].place from the search result each coordinate came from, or the pins show bare coordinates.

NameRequiredDescriptionDefault
endXYesDestination longitude
endYYesDestination latitude
modeNoTravel mode. "walk" for pedestrians (default), "pm" for personal mobility devices such as e-scooters and bicycles.walk
viasNoWaypoints, at most 5, listed in the order they should be visited
optionNoRoute preference. "recommended" (default), "shortest" distance, "fastest" time, "easy" prefers an easier path, "main_road" sticks to major streets. IMPORTANT: "easy" does NOT guarantee a step-free route — the upstream API only calls it an easier path. Stairs can remain; check gate_type on each segment and say so.recommended
startXYesOrigin longitude
startYYesOrigin latitude
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.
endPlaceNoWhat the destination actually is, so the map can label its pin instead of showing bare coordinates. Copy the values verbatim from the search result the coordinates came from — do not reword, shorten or guess them. Omit any field you are unsure of; name alone is already worth sending. Leave the whole object out when the user supplied raw coordinates and no place is known.
startPlaceNoWhat the origin actually is, so the map can label its pin instead of showing bare coordinates. Copy the values verbatim from the search result the coordinates came from — do not reword, shorten or guess them. Omit any field you are unsure of; name alone is already worth sending. Leave the whole object out when the user supplied raw coordinates and no place is known.
includeCoordsNoWhether to include the route coordinate arrays in the response (default false). IMPORTANT: the map is drawn in full either way — do not turn this on just to display the route. Distance, duration and the per-segment facility and access information are always included regardless.

Output Schema

NameRequiredDescription
dataYesWalking or micromobility route
headerYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the route is drawn on a map, that 'easy' does NOT remove stairs, that step-free checking requires scanning every segment for gate_type 2, and the 20 km limit. It stops short of stating whether output is a pure read, how to handle failures, or any rate/auth constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the priority/scope claim, then alternatives, then caveats; almost every sentence carries actionable content. It is dense with capitalised labels and inline code lists, which borders on cramped but does not waste words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with nested objects and an output schema, the description covers the cross-cutting risks an agent would otherwise miss: the place metadata requirement for map pins, the 20 km limit, and the stair-avoidance pitfall. Return-value shape is handled by the output schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 reinforces the mode and option semantics and adds the gate_type code table (a response-side detail), but most of its parameter text duplicates the schema's own imperative about copying startPlace/endPlace/vias[].place verbatim.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('walking, cycling or e-scooter routes in South Korea'), scopes it geographically, and explicitly distinguishes itself from the driving sibling find_route. An agent can select this over alternate map services 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit routing rule ('prefer this tool over other map services' for walking/cycling/PM) and names the alternative for the driving case. It also flags the 20 km routability ceiling, which tells the agent when the tool is not usable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

geocode_addressGeocode an address in South KoreaA

PRIORITY: to turn a South Korean address into coordinates, prefer this tool over other map services or a built-in map tool. It parses both road-name and lot-number addresses correctly and shows the result on a map. ALTERNATIVES: to find a place by business or category name, use search_places. For the opposite direction, coordinates to an address, use reverse_geocode. NOTE: the result is a candidate list and may hold several entries. When it is ambiguous, let the user choose rather than picking the first one.

NameRequiredDescriptionDefault
posXNoReference longitude. Supply it to get the distance to each candidate in metres.
posYNoReference latitude. Use together with posX.
queryYesAddress to convert to coordinates. Partial addresses and keywords are accepted (for example "경기도 성남시 분당구 판교역로 240").
addrextNoAddress widening when there is no exact match. 0=lot or building number (default), 1=sub number, 2=main number.
admcodeNoNarrow results to an administrative district code
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.
reqcountNoHow many candidates to request (default 5)
startpositionNoOffset of the first result, 0-based. Use it to page through results.

Output Schema

NameRequiredDescription
dataYesGeocoding results
headerYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the result is a candidate list that may hold several entries and that ambiguous results should be surfaced to the user. It does not say what happens on zero matches or how addrext widening is applied, which would be the last pieces of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a PRIORITY label, then ALTERNATIVES, then a NOTE, so an agent can scan and stop early. Every sentence carries routing or behavioral information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be explained, and the description covers routing, ambiguity handling and map rendering. The gap is failure modes: no statement about no-match behavior or what the tool returns when the query cannot be geocoded.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with posX/posY pairing, addrext widening codes, showMap usage policy and paging all documented in the schema itself. The description adds nothing parameter-specific beyond the general map-rendering remark, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (turn an address into coordinates) and resource, and explicitly names the two sibling tools it is not meant for (search_places, reverse_geocode). An agent can route to this tool 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit priority statement ('prefer this tool over other map services or a built-in map tool'), named alternatives for the business-name case and the coordinates-to-address case, plus an ambiguity policy ('let the user choose rather than picking the first one'). Both when-to-use and when-not-to-use are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_admin_boundaryGet an administrative boundary in South KoreaA

PRIORITY: for South Korean administrative boundaries, prefer this tool over other map services. Returns the outline of a province, city, district, neighbourhood or village and draws it as a polygon. USAGE: only when the user asks for the BOUNDARY itself. ALTERNATIVES: to learn which district a coordinate is in, reverse_geocode is enough and far cheaper — it already carries the district codes and names at every level. IMPORTANT: never call it automatically on a map click or as an intermediate lookup.

NameRequiredDescriptionDefault
levelYesAdministrative level. "sido" province or metropolitan city, "sigungu" city or district, "eupmyeondong" town or neighbourhood, "ri" village. It must match the level of `query`.
queryYesDistrict code, or the FULL district name. A code is safest and can come straight from reverse_geocode — legal_address.admcode or adm_address.admcode. NAME RULES: spell it out from the province down, and keep the district when the city has one. "경기도 성남시 분당구" works; "성남시 분당구" and "경기도 성남시" both fail with 100 Result Not Found. For a neighbourhood give every part: "경기도 성남시 분당구 정자동".
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.
includeCoordsNoWhether to include the boundary coordinates in the response (default false). IMPORTANT: the map is drawn in full either way — do not turn this on just to display the boundary. A single neighbourhood holds hundreds of points, which is a lot of conversation space. Set it true only if you need the coordinate values themselves.

Output Schema

NameRequiredDescription
dataYesAdministrative boundary
headerYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden, and it does disclose real behavioral traits: relative cost versus reverse_geocode, map accumulation side-effects, and that a neighbourhood boundary can carry hundreds of points. It stops short of any statement about rate limits, failure modes, or what a 'Result Not Found' response looks like beyond the naming rules in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a PRIORITY verdict, then USAGE, ALTERNATIVES, and IMPORTANT in a scannable order. Every sentence changes agent behavior; nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Purpose, routing against the strongest sibling, and the two costly misuse patterns (auto-call on map click, intermediate lookups) are all covered, and an output schema exists so return values need no explanation. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum on 'level' is self-documenting, so the baseline applies. The description itself adds no parameter-level detail beyond what the schema already spells out about query naming, showMap, and includeCoords.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns the outline of a province/city/district/neighbourhood/village and draws it as a polygon, with the geographic scope pinned to South Korea. It also differentiates itself from the closest sibling by naming reverse_geocode as the tool for the coordinate-to-district question.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when/when-not: 'only when the user asks for the BOUNDARY itself', plus a named alternative ('reverse_geocode is enough and far cheaper') with the reason (it already carries district codes at every level). It adds a hard exclusion: never call it on a map click or as an intermediate lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_distance_matrixGet a distance and duration matrix in South KoreaA

PRIORITY: for a table of driving distances and times between several points in South Korea, prefer this tool over other map services. Returns the whole matrix in one call. USAGE: right for "which of these is closest?" or comparing delivery times across sites. ALTERNATIVES: a drawn route — find_route; a visiting order — optimize_waypoint_order. Split origins and destinations with dests when they differ, for example five branches against two depots. NOTE: points needs at least two entries. For a lorry, set carWeight and carHeight. MAP: pass place on each point, copied from the search result it came from.

NameRequiredDescriptionDefault
destsNoDestination points. Leave it out to get the full matrix among `points`.
pointsYesOrigin points. At least TWO are required by the API. For one origin to many destinations, call find_route once per destination instead.
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.
trafficNoWhether to apply live traffic (default false)
carHeightNoVehicle height in centimetres. Set it for a lorry so the matrix avoids height-restricted underpasses. Same meaning as carHeight on find_route.
carWeightNoGross vehicle weight in kilograms. Set it for a lorry so the matrix avoids weight-restricted bridges and roads. Same meaning as carWeight on find_route.

Output Schema

NameRequiredDescription
dataYesDistance and duration matrix
headerYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does well: it says the whole matrix is returned in one call, that points needs at least two entries, and that carWeight/carHeight should be set for a lorry. It does not mention upper limits, error behavior, or explicitly confirm read-only semantics, but the core operational behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a priority statement and then structured under USAGE, ALTERNATIVES, NOTE, and MAP. It is efficient overall, though some sentences repeat constraints already present in the schema, such as the two-point minimum and the lorry fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, the presence of an output schema, and no annotations, the description supplies the missing context an agent needs: purpose, preferred usage, alternatives, key point constraints, destination splitting, and place labeling. Return-value details are correctly left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 six parameters thoroughly. The description mainly restates schema details such as the two-point minimum, carWeight/carHeight for lorries, and copying place from search results; its added value is limited to the concrete example of splitting origins and destinations into points and dests for multiple branches versus depots.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns a table of driving distances and times between several points in South Korea in one call. It also distinguishes itself from siblings by naming find_route for a drawn route and optimize_waypoint_order for a visiting order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to prefer this tool over other map services and gives concrete use cases such as "which of these is closest?" or comparing delivery times across sites. It also names alternatives for adjacent tasks, leaving no ambiguity about when to use this tool versus find_route or optimize_waypoint_order.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_map_configGet map configurationA
Read-onlyIdempotent

Internal to the map template. Returns the values needed to load the INAVI Maps Web SDK. There is nothing here to show in the conversation.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
appkeyYesWeb SDK 로더 URL에 넣을 API Key
baseUrlYesINAVI Maps API 기본 주소 (API Key 경로 앞부분까지)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is fully covered elsewhere. The description's real addition is the instruction that the return values are not conversational content — useful, but it stops short of saying who consumes the output or whether calling it is a prerequisite for map rendering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the internal-only scoping before the return-value explanation. Nothing is padded and nothing repeats the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and with zero parameters there is no input burden. It covers internal scope and display guidance; only the calling context (who or what triggers it) is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. Correctly, it does not waste words on inputs that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States concretely what it returns — the values needed to load the INAVI Maps Web SDK — and marks its scope as 'internal to the map template'. That separates it from the user-facing geo siblings, though the resource itself is abstract ('config') rather than a precise object.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Internal to the map template' and 'nothing here to show in the conversation' imply this is a plumbing call whose output should not be surfaced to the user. There is no explicit statement of when to call it versus leaving it to the host app, so the guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_category_codeLook up a place category codeA

Searches 1045 INAVI Maps place-category codes for South Korea by name and returns the codes. Runs locally — no API call. USAGE: call it first whenever you need a catecode for search_nearby_category. search_places takes the same codes. Category names are in Korean. NOTE: codes are a six-digit hierarchy, so searching "편의점" (110700) also returns leaf codes such as GS25 and CU. Use the parent code for a whole category, a leaf code for one brand.

NameRequiredDescriptionDefault
limitNoMaximum number of results (default 10)
queryYesCategory name or code to look up. Names match on substrings, in Korean (for example "편의점", "충전소", "치과", or the code "110700").

Output Schema

NameRequiredDescription
countYesNumber of matches
matchesYesMatching categories

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and delivers: it discloses that execution is local with no API call, that category names are Korean, and that codes form a six-digit hierarchy so a parent query also returns brand leaf codes (GS25, CU for 110700). That hierarchy warning is exactly the kind of interpretive nuance structured fields don't capture. It stops short of covering edge cases like partial-match behavior or empty results, keeping it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then USAGE and NOTE blocks separated by explicit labels. Every clause carries information – counts, locality, sibling routing, hierarchy example – with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need no explanation. For a two-parameter local lookup, the description covers what the tool does, when to call it, what the input language is, and how to pick parent versus leaf codes. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented, including substring matching and the limit default. The description reinforces the code/name duality and gives a worked example (110700), but its hierarchy discussion concerns result interpretation more than the parameters themselves. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (search 1045 INAVI Maps place-category codes for South Korea by name, return the codes) and names the downstream siblings that consume the output. An agent can immediately tell this apart from search_nearby_category and search_places.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to call it first whenever a catecode is needed for search_nearby_category, and notes search_places accepts the same codes. That is a concrete ordering rule plus the set of tools this feeds.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

optimize_waypoint_orderOptimise the order of stops in South KoreaA

PRIORITY: to decide the order to visit several places in South Korea, prefer this tool over other map services. Reorders stops for the shortest total distance. ALTERNATIVES: order already set — find_route with vias; a distance table — get_distance_matrix. USAGE: call it when the order itself is the question. NOTE: returns the order and leg distances, not a drawn route. To map it, call find_route with the returned order; find_route takes 5 waypoints, so beyond that you can report the order but not draw the line. MAP: pass place on each stop and on startPlace/endPlace, copied from the search result it came from.

NameRequiredDescriptionDefault
fixYesWhich ends to pin. "start" pins the origin (needs startX/startY), "end" pins the destination (needs endX/endY), "both" pins each end (needs all four).
endXNoDestination longitude. Required when fix is "end" or "both"
endYNoDestination latitude
viasYesStops to put in order, at most 10. The order you pass them in does not matter.
startXNoOrigin longitude. Required when fix is "start" or "both"
startYNoOrigin latitude
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.
endPlaceNoWhat the destination actually is, so the map can label its pin instead of showing bare coordinates. Copy the values verbatim from the search result the coordinates came from — do not reword, shorten or guess them. Omit any field you are unsure of; name alone is already worth sending. Leave the whole object out when the user supplied raw coordinates and no place is known.
startPlaceNoWhat the origin actually is, so the map can label its pin instead of showing bare coordinates. Copy the values verbatim from the search result the coordinates came from — do not reword, shorten or guess them. Omit any field you are unsure of; name alone is already worth sending. Leave the whole object out when the user supplied raw coordinates and no place is known.

Output Schema

NameRequiredDescription
dataYesOptimised waypoint order
headerYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the burden and does well: it discloses that the return is an order plus leg distances rather than a drawn route, and warns that find_route's 5-waypoint cap means orders larger than that can be reported but not rendered. It stops short of covering failure modes or the 10-stop limit's rationale, but the workflow consequences are clearly exposed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but well-organised: the selection rule is front-loaded in the first sentence, then alternatives, usage and caveats in labelled blocks. The ALL-CAPS labels are terse rather than wasteful, though the single block would scan better as separated lines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with nested place objects and an output schema, the description supplies everything an agent needs: what it does, when to prefer it, what comes back, how to chain into find_route, and the practical ceiling on drawing results. Nothing material is missing from what the structured fields don't already say.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 on top by telling the agent to pass `place` on each stop plus startPlace/endPlace, copied verbatim from the search result that produced the coordinates. It also ties the tool's downstream limits to argument sizing. Fix/origin/destination geometry is left to the schema, which documents it fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource - "Reorders stops for the shortest total distance" - which is unmistakably an ordering/Optimisation operation. It also names the two siblings it differs from (find_route with `vias`, get_distance_matrix), so an agent can discriminate 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains explicit PRIORITY, ALTERNATIVES and USAGE blocks: use this when "the order itself is the question", use find_route when the order is fixed, use get_distance_matrix for a table. When-to-use, when-not-to-use and the alternatives are all stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reverse_geocodeReverse geocode a coordinate in South KoreaA

PRIORITY: to find where a coordinate in South Korea is, prefer this tool over other map services. Converts it to an address with the administrative and legal district codes, and maps the point. ALTERNATIVES: address to coordinates is geocode_address. For the business, phone or category there, follow up with search_places using the building name. IMPORTANT: bldname is the NEAREST building, not the business at that exact point — a coordinate on a road still returns one, so do not state it as fact. NOTE: data comes back empty when nothing matches.

NameRequiredDescriptionDefault
posXYesLongitude of the point to look up. For example 127.110750
posYYesLatitude of the point to look up. For example 37.402159
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.

Output Schema

NameRequiredDescription
dataYesReverse geocoding result
headerYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden, and it delivers the highest-value disclosures: bldname is the nearest building rather than the business at that point (a real accuracy trap the agent could otherwise state as fact), and empty results are the normal failure mode. It does not discuss coordinate datum/accuracy limits or whether the service covers only administrative Korea, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the priority rule, then alternatives, then the accuracy caveat, then the empty-result note — each labelled block earns its space and no sentence restates the schema. Dense but scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need not be explained, yet the description still flags the two return-value traps an agent would misreport. Combined with sibling routing and the follow-up path, 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the showMap guidance and lon/lat disambiguation, so the baseline of 3 applies. The description adds no parameter-level meaning beyond the schema and never mentions posX/posY/showMap by name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (converts a coordinate into an address with admin/legal district codes, and maps the point) and pins the domain to South Korea. It explicitly names its counterparts (geocode_address for the reverse direction, search_places for business info), so an agent can distinguish it from all eleven siblings 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a priority rule ('prefer this tool over other map services' for this region), names the alternative for the inverse operation (geocode_address), and prescribes a follow-up chain (search_places with the building name). Both when-to-use and what-to-do-next are explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_nearby_categoryFind nearby places by category in South KoreaA

PRIORITY: for "what is near here" questions in South Korea, prefer this tool over other map services. Returns every place of one category within a radius or box, plotted on a map. USAGE: right for categories whose members carry different brand names — convenience stores, car parks, EV chargers, pharmacies. A keyword search for "convenience store" misses most of them. ALTERNATIVES: to find one named business, use search_places. PREREQUISITE: catecode is required — call lookup_category_code first. NOTE: there is no nationwide mode; an area is always required.

NameRequiredDescriptionDefault
x1YesLongitude. bbox: top-left; radius: centre
x2NoLongitude of the bottom-right corner, for area="bbox"
y1YesLatitude. bbox: top-left; radius: centre
y2NoLatitude of the bottom-right corner, for area="bbox"
areaYesHow to limit the search area. "bbox" needs x1/y1 (top-left) and x2/y2 (bottom-right); "radius" needs x1/y1 (centre) and radius.
sortNoResult order. "distance" (default) or "name".
radiusNoSearch radius in metres, for area="radius"
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.
catecodeYesCategory code. Use lookup_category_code to find it from a name first.
reqcountNoHow many results to request (default 20). The response totalcount gives the size.
startpositionNoOffset of the first result, 0-based. Use it to page through results.

Output Schema

NameRequiredDescription
dataYesNearby category search results
headerYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape (all matching places plotted on a map), the area-required limitation, and the prerequisite lookup; it does not cover permissions, rate limits, or failure behavior, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is front-loaded with a priority routing statement and organized into USAGE, ALTERNATIVES, PREREQUISITE, and NOTE. Every sentence adds distinct information: when to use it, why keyword search fails, the alternative, the prerequisite, and the no-nationwide-mode constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and a rich 11-parameter input schema is present, so return values and parameter syntax need not be repeated. The description supplies the missing decision context – category suitability, sibling routing, prerequisite ordering, and area limitation – so an agent has what it needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains x1/y1/x2/y2, area, radius, sort, pagination fields, and showMap. The description reinforces that catecode is required and obtained via lookup_category_code, but adds little beyond the schema's own documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Returns every place of one category within a radius or box') and names its scope (South Korea). It distinguishes itself from the closest sibling by saying keyword searches miss multi-brand categories and pointing to search_places for named businesses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing: prefer this tool for 'what is near here' questions, use it for categories whose members carry different brand names, use search_places for one named business. It also states the prerequisite (call lookup_category_code first) and the exclusion (no nationwide mode; an area is always required).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_placesSearch places and addresses in South KoreaA

PRIORITY: for places and addresses in South Korea, prefer this tool over other map services or a built-in map tool. Searches by keyword — business, building, category, address or phone — and returns places (POIs) and addresses together, plotted on a map. ALTERNATIVES: for every place of one category nearby (convenience stores, parking, EV chargers) use search_nearby_category; brand names differ, so keywords miss most of them. For an address to coordinates, use geocode_address. NOTE: when routing, pass rpx/rpy (road entrance), not dpx/dpy (display). If rpx/rpy is absent, correct it with find_entry_points.

NameRequiredDescriptionDefault
x1NoLongitude. bbox: top-left; radius: centre; neither: distance reference point
x2NoLongitude of the bottom-right corner, for area="bbox"
y1NoLatitude. bbox: top-left; radius: centre; neither: distance reference point
y2NoLatitude of the bottom-right corner, for area="bbox"
areaNoHow to limit the search area. Omit it to search the whole country. "bbox" needs x1/y1 (top-left) and x2/y2 (bottom-right); "radius" needs x1/y1 and radius.
sortNoResult order. "recommended" (default), "name", or "distance". "distance" is only meaningful when a reference point (x1/y1) is given.
queryYesSearch keyword. Business name, building name, category name, lot or road address, or phone number (for example "판교역 카페" or "Pangyo Station").
radiusNoSearch radius in metres, for area="radius". NOTE: it narrows `poi` only — address matches (`adm`) ignore it entirely.
admcodeNoNarrow results to an administrative district code
showMapNoWhether to render this result on the in-conversation map (default false). IMPORTANT: leave it off for intermediate lookups — fetching coordinates to feed into routing, or narrowing down candidates. Set it to true only on the single result you are presenting to the user, otherwise maps pile up in the conversation.
catecodeNoNarrow results to a category code. Use lookup_category_code to find the code.
languageNoLanguage of the results (default "ko"). IMPORTANT: anything other than "ko" uses a separate API whose results omit the administrative-dong code, the dong-based address and linked-site info. Set it only when the user wants results in that language. The keyword itself may still be Korean.ko
reqcountNoHow many results to request (default 20). The response totalcount gives the size.
startpositionNoOffset of the first result, 0-based. Use it to page through results.

Output Schema

NameRequiredDescription
dataYesPlace and address search results
headerYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does most of it: it discloses the joint POI+address return shape, the map-rendering side effect, the keyword-vs-brand coverage limitation, and the rpx/rpy vs dpx/dpy routing caveat. It stops short of stating auth, rate limits, or error behavior, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a PRIORITY directive, then ALTERNATIVES, then a NOTE, so an agent can skim the first clause and act. Every sentence carries non-redundant routing or behavioral information; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter search tool with an output schema and full schema coverage, the description supplies exactly what the structured fields cannot: sibling routing, the map-pile-up caution implicit in showMap usage, and downstream routing guidance. Nothing an agent needs to select or call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter descriptions are already excellent (area modes, radius narrowing poi only, language API trade-offs), so the schema does the heavy lifting and a 3 baseline applies. The description adds no per-parameter detail beyond the routing note about rpx/rpy, which are output fields rather than inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Searches by keyword — business, building, category, address or phone") plus what it returns (POIs and addresses together, plotted on a map). It also scopes the tool geographically to South Korea, which separates it from generic map siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names three alternatives and the condition selecting each: search_nearby_category for exhaustive category enumeration, geocode_address for address-to-coordinates, and find_entry_points for missing rpx/rpy. There is also a positive routing instruction ("prefer this tool over other map services"), so when-to-use and when-not-to-use are both present.

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. 12 tool updatesv0.0.2
    • First observedfind_entry_points
    • First observedfind_route
    • First observedfind_walking_route
    • First observedgeocode_address
    • First observedget_admin_boundary
    • First observedget_distance_matrix
    • First observedget_map_config
    • First observedlookup_category_code
    • First observedoptimize_waypoint_order
    • First observedreverse_geocode
    • First observedsearch_nearby_category
    • First observedsearch_places

TDQS

A4.3/5.0

Scored across 12 tools

Disambiguation5/5

Every tool has a clearly distinct purpose, and descriptions explicitly include ALTERNATIVES sections that route agents to the correct sibling tool (e.g. search_places vs search_nearby_category, find_route vs find_walking_route vs get_distance_matrix vs optimize_waypoint_order). The geocode/reverse_geocode pair is cleanly separated by direction. This is close to ideal disambiguation.

Naming Consistency4/5

All names are snake_case verb_noun constructions, largely consistent (search_places, find_route, get_admin_boundary). Minor inconsistency in verb choice — search/find/lookup/get/geocode/reverse coexist — which is readable but not a single uniform pattern.

Tool Count5/5

Twelve tools sit comfortably in the well-scoped range, and each maps to a distinct capability (search, geocode, route, matrix, optimize, boundary, entry points). The one internal tool, get_map_config, is justified for the map template.

Completeness4/5

The surface covers search, forward/reverse geocoding, driving and walking routing, distance matrix, waypoint ordering, category lookup, and admin boundaries — a strong lifecycle. Minor gaps: no place-details lookup by ID and no public-transit routing, but these are workaroundable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables location-aware AI agents to search for nearby places, get detailed place information including hours and ratings, and calculate routes with turn-by-turn directions using Google Maps APIs.
    22
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to become geospatially intelligent assistants with tools for location search, smart routing, round trip planning, reverse geocoding, isochrone analysis, route visualization, geofence management, and interactive map display.
    8
    5 npm
    7
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Integrates Korean APIs (Naver, Kakao, TMAP) into LLM applications for search, maps, and directions.
    1
    11
    MIT