Default Tools - Korea

June 18, 2026 · View on GitHub

description: Default Tools - Korea reference. 21 Korea-locale tools - Upbit, Bithumb, Naver, Kakao, KMA, KOFIC, KRX, data.go.kr keychain.

Default Tools - Korea

The 21 tools in default-tool-specs-kr.json are Korea-locale services - crypto exchanges (Upbit, Bithumb), search and local discovery (Naver, Kakao, K-pop iTunes, K-beauty, Korea Tourism), government open-data services (data.go.kr keychain, Seoul Open Data Plaza), and Korea-specific finance and disaster feeds (KAMIS, KOFIC, KRX, MOLIT, MFDS, MOIS).

Most return Korean text in their response payloads - names, addresses, codenames - so a chat agent calling them should be locale-aware. Eight are no-key (Upbit endpoints, Bithumb endpoints, iTunes K-pop, Open Beauty Facts), the other thirteen need provider-issued keys. Provider keys live in the tool's static variables as ${ENV_VAR} placeholders that resolve at runtime from the JVM environment - they are not committed to the spec.

Like the global network tools, every fetch runs through the SSRF four-layer guard in the default host-allowlist egress mode.

Browse the 21 services { #browse-the-services }

Crypto markets (6, no key) · Search & local (5, mixed) · Finance & data (4, mixed) · Weather & disaster (3, mixed) · Government dispatcher (2 + 1 generic). All run at sandbox L3 with host-allowlist egress.

getUpbitTicker 🆓
:material-currency-btc:
web · korea · finance L3
Fetches the current KRW ticker(s) from Upbit, a major Korean crypto exchange (no auth). `markets` is comma-separated, e.g. 'KRW-BTC,KRW-ETH'. Returns an array of { market, tradePrice, openingPrice, highPrice, lowPrice, change, changeRate, accTradeVolume24h, timestamp }.
**Params**   `markets`
**Env**       -
Click for full reference · params · sandbox · JS source
getUpbitOrderbook 🆓
:material-chart-box-outline:
web · korea · finance L3
Fetches Upbit live orderbook (bids/asks) for one or more KRW markets (no auth). `markets` is comma-separated like 'KRW-BTC,KRW-ETH'. Optional `level` controls price aggregation upstream. Returns an array of { market, timestamp, totalAskSize, totalBidSize, units:[{askPrice,bidPrice,askSize,bidSize}] }.
**Params**   `markets` · `level`
**Env**       -
Click for full reference · params · sandbox · JS source
getUpbitCandles 🆓
:material-chart-line:
web · korea · finance L3
Fetches Upbit OHLCV candles for a market (no auth). `interval` accepts 'days' (default), 'weeks', 'months', or 'minutes/N' where N is one of 1, 3, 5, 10, 15, 30, 60, 240. `count` is capped at 200 upstream. Returns an array (most recent first) of { market, candleDateTimeKst, candleDateTimeUtc, openingPrice, highPrice, lowPrice, tradePrice, candleAccTradeVolume, candleAccTradePrice }.
**Params**   `market` · `interval` · `count`
**Env**       -
Click for full reference · params · sandbox · JS source
listUpbitMarkets 🆓
:material-format-list-bulleted:
web · korea · finance L3
Lists all tradable markets on Upbit (no auth). Pass `quote` (e.g. 'KRW', 'BTC', 'USDT') to filter by quote currency. Returns { count, markets: [{ market, koreanName, englishName }] }.
**Params**   `quote`
**Env**       -
Click for full reference · params · sandbox · JS source
getBithumbTicker 🆓
:material-currency-btc:
web · korea · finance L3
Fetches the current KRW ticker for a symbol from Bithumb (no auth). Used as an Upbit alternative or for cross-exchange checks. Returns: { symbol, openingPrice, closingPrice, minPrice, maxPrice, unitsTraded24h, accTradeValue24h, change24h, changeRate24h, fluctate24h, fluctateRate24h }.
**Params**   `symbol`
**Env**       -
Click for full reference · params · sandbox · JS source
getBithumbOrderbook 🆓
:material-chart-box-outline:
web · korea · finance L3
Fetches Bithumb public orderbook depth for a KRW pair (no auth). `count` defaults to 5, max 30. Returns { symbol, paymentCurrency, orderCurrency, timestamp, bids:[{price,quantity}], asks:[{price,quantity}] }.
**Params**   `symbol` · `count`
**Env**       -
Click for full reference · params · sandbox · JS source
searchNaver 🔑 × 2
:simple-naver:
web · korea · search L3
Naver Search API (KR; key required). Searches across blog, news, webkr, encyc, book, image, shop, kin, or cafearticle. Issue Client-Id + Client-Secret at https://developers.naver.com/apps/ and set NAVER_CLIENT_ID + NAVER_CLIENT_SECRET on the tool's staticVariables, or inject as env vars. Returns: { type, total, start, display, items:[{title, description, link, pubDate, bloggerName, author}] }.
**Params**   `query` · `type` · `display` · `start`
**Env**       `NAVER_CLIENT_ID` · `NAVER_CLIENT_SECRET`
Click for full reference · params · sandbox · JS source
searchKakaoLocal 🔑 × 1
:simple-kakaotalk:
web · korea · geo L3
Kakao Local keyword search - finds places/POIs and returns WGS84 coordinates (KR; key required). Issue a REST API key at https://developers.kakao.com/ and set KAKAO_REST_API_KEY on the tool's staticVariables, or inject as env var. Optionally pass (longitude, latitude, radius) to search around a point. Returns: { totalCount, pageableCount, isEnd, places:[{ name, category, categoryGroup, phone, address, roadAddress, latitude, longitude, placeUrl, distance }] }.
**Params**   `query` · `size` · `page` · `longitude` · `latitude` · `radius`
**Env**       `KAKAO_REST_API_KEY`
Click for full reference · params · sandbox · JS source
getAirKoreaPm 🔑 × 1
:material-air-filter:
web · korea · weather L3
AirKorea (data.go.kr) real-time air quality readings by Korean province (KR; data.go.kr key required). Issue the air-quality serviceKey at https://www.data.go.kr/data/15073861/openapi.do and set DATA_GO_KR_AIR_KEY on the tool's staticVariables, or inject as env var. Returns: { sidoName, totalCount, stations:[{ stationName, sidoName, dataTime, pm10, pm25, o3, no2, co, so2, khaiValue, khaiGrade }] }. On auth error: { success:false, status, message }.
**Params**   `sidoName` · `numOfRows`
**Env**       `DATA_GO_KR_AIR_KEY`
Click for full reference · params · sandbox · JS source
searchKpopOnItunes 🆓
:simple-applemusic:
web · korea L3
iTunes Search API - Korean music catalog including K-pop (no auth). Default country=kr biases results to the Korean iTunes storefront. Suitable for song / musicArtist / album / musicVideo lookups. Each result includes a 30s preview URL and album artwork URL. Catalog metadata is in the storefront language (Korean for kr). `entity`: musicArtist | song | album | musicVideo | mix. `country`: ISO-2 storefront code (kr/us/jp/...). Default kr. Returns: { country, entity, resultCount, results:[{ kind, artistName, trackName, collection, releaseDate, primaryGenre, previewUrl, trackViewUrl, artworkUrl, ... }] }.
**Params**   `term` · `entity` · `country` · `limit`
**Env**       -
Click for full reference · params · sandbox · JS source
searchKBeautyProducts 🆓
:material-flower-tulip-outline:
web · korea · search L3
K-beauty cosmetics product search via Open Beauty Facts (no auth). Default country=south-korea biases the lookup to Korean brand catalogs (Innisfree / Laneige / COSRX / ...). Returns ingredients, allergens, packaging, and product image URLs. For a global search pass country='', or other slugs like country='japan'. Note: localized product names may appear in Korean. Pass a barcode (e.g. '8809610706106') as `query` for single-product lookup - useful for ingredient checks. Returns: { country, count, page, pageSize, products:[{ code, productName, brands, countries, categories, allergens, ingredients, packaging, imageUrl, openBeautyFactsUrl }] }.
**Params**   `query` · `country` · `pageSize`
**Env**       -
Click for full reference · params · sandbox · JS source
searchKoreaTour 🔑 × 1
:material-bag-suitcase-outline:
web · korea · search L3
Korea Tourism Organization TourAPI 4.0 keyword search - tourist spots, cultural facilities, festivals, lodging, restaurants by Korean keyword (KR; data.go.kr key required, separate from the air-quality key). Issue the Korean tourism serviceKey at https://www.data.go.kr/data/15101578/openapi.do and set DATA_GO_KR_TOUR_KEY on the tool's staticVariables, or inject as env var. Filters: `areaCode` (province) + `sigunguCode` (city/county) + `contentTypeId` (content type). Examples: Jeonju = areaCode 37 + sigunguCode 12, Gyeongju = 35+2, Jeju City = 39+4, Seogwipo = 39+5. Metropolitan cities (Busan=6, Daegu=4, ...) do not require sigunguCode. Returns: { keyword, totalCount, pageNo, numOfRows, items:[{ contentId, contentTypeId, title, addr1, addr2, areaCode, sigunguCode, firstImage, mapX, mapY, tel, ... }] }.
**Params**   `keyword` · `areaCode` · `sigunguCode` · `contentTypeId` · `pageNo` · `numOfRows`
**Env**       `DATA_GO_KR_TOUR_KEY`
Click for full reference · params · sandbox · JS source
searchSeoulCulturalEvents 🔑 × 1
:material-theater:
web · korea · search L3
Seoul Open Data Plaza (data.seoul.go.kr) cultural events search (KR; separate key required). This API is operated directly by the Seoul city government and is separate from the data.go.kr keychain. Issue a free key at https://data.seoul.go.kr/together/apikey.do (1,000 req/day) and set SEOUL_OPEN_API_KEY on the tool's staticVariables, or inject as env var. Optional filters: `codename` (category: musical / exhibition / Korean classical music / concert / ...), `titleSearch` (partial title match), `eventDate` ('YYYY-MM-DD'; events active on that date only). Returns: { totalCount, events:[{ category, gu, title, period, startDate, endDate, place, organizer, audience, fee, isFree, program, imageUrl, latitude, longitude, ... }] }.
**Params**   `startIndex` · `endIndex` · `codename` · `titleSearch` · `eventDate`
**Env**       `SEOUL_OPEN_API_KEY`
Click for full reference · params · sandbox · JS source
getKamisAgriPrice 🔑 × 2
:material-leaf:
web · korea · finance L3
KAMIS agricultural product wholesale/retail prices - daily price data operated by aT (Korea Agro-Fisheries & Food Trade Corp). KR; cert_id + cert_key required, free. Issue credentials at https://www.kamis.or.kr/customer/reference/openapi_list.do and set KAMIS_CERT_ID + KAMIS_CERT_KEY on the tool's staticVariables, or inject as env vars. `productClsCode`: 01=retail, 02=wholesale (default). `itemCode` is the KAMIS product code (rice=111, apple=411, napa cabbage=211, pork belly=515, ...). Returns: { productClass, itemCode, startDay, endDay, count, rows:[{ itemName, kindName, county, market, year, date, price, unit }] }.
**Params**   `itemCode` · `startDay` · `endDay` · `productClsCode` · `itemCategoryCode` · `kindCode`
**Env**       `KAMIS_CERT_ID` · `KAMIS_CERT_KEY`
Click for full reference · params · sandbox · JS source
getKoficBoxOffice 🔑 × 1
:material-movie-outline:
web · korea L3
KOFIC (Korean Film Council) daily box-office ranking (KR; single API key required, free instant issuance). Issue the key at https://www.kobis.or.kr/kobisopenapi/ and set KOFIC_API_KEY on the tool's staticVariables, or inject as env var. `targetDate` is typically yesterday's date (same-day totals are tallied after market close). Both YYYYMMDD and YYYY-MM-DD are accepted. Optional filters: `multiMovieYn` (Y=diversity films only / N=commercial films only), `repNationCd` (K=Korean / F=foreign), `wideAreaCd` (screening region). Returns: { type, showRange, count, movies:[{ rank, rankChange, isNew, movieCode, title, openDate, salesAmount, salesShare, salesAccumulated, audience, audienceAccumulated, screens, shows }] }.
**Params**   `targetDate` · `multiMovieYn` · `repNationCd` · `wideAreaCd`
**Env**       `KOFIC_API_KEY`
Click for full reference · params · sandbox · JS source
getKrxStockPrice 🔑 × 1
:material-chart-line:
web · korea · finance L3
KRX Korea Exchange daily stock quotes (data.go.kr) - KOSPI/KOSDAQ/KONEX daily open/close/change/volume/market cap. KR; data.go.kr serviceKey required, separate service application from other dgk keys. Register the `Financial Services Commission stock quote info` service at data.go.kr (https://www.data.go.kr/data/15094808/openapi.do), receive a serviceKey, and set DATA_GO_KR_STOCK_KEY on the tool's staticVariables, or inject as env var. Note: the KIS API (Korea Investment & Securities) is a two-step token → Bearer flow that is inefficient for stateless tools (token consumed per call). This tool uses the KRX-official channel that exposes the same data behind a single key. Filters: `basDt` (business day YYYYMMDD), `itmsNm` (exact stock name), `likeItmsNm` (partial name match), `srtnCd` (short code e.g. 005930), `mrktCls` (KOSPI/KOSDAQ/KONEX). Returns: { totalCount, pageNo, numOfRows, items:[{ baseDate, shortCode, isinCode, name, market, close, diff, changePct, open, high, low, volume, tradeValue, listedShares, marketCap }] }.
**Params**   `basDt` · `itmsNm` · `likeItmsNm` · `srtnCd` · `mrktCls` · `numOfRows` · `pageNo`
**Env**       `DATA_GO_KR_STOCK_KEY`
Click for full reference · params · sandbox · JS source
callDataGoKrOpenApi 🔑 × 1
:material-database:
web · korea L3
data.go.kr generic dispatcher - calls arbitrary data.go.kr services not covered by dedicated tools in this catalog. High-frequency services (air quality / tourism / stocks / ...) have their own tools; use this dispatcher for the 7,000+ other services (real-estate transactions / postal codes / road-name addresses / drug-safety agency / national statistics / ...). Most responses are in Korean. Set the data.go.kr serviceKey on the tool's staticVariables as DATA_GO_KR_KEY, or inject as env var. NOTE: each data.go.kr dataset requires its own service registration (the key value can be the same, but each OpenAPI service is approved separately). Inputs: { servicePath: 'B551011/KorService2/...' (the path after apis.data.go.kr/), query: { pageNo:1, numOfRows:10, ... } (extra query parameters) }. On success: { ok:true, totalCount, pageNo, numOfRows, items, raw }. On failure: { ok:false, status, message } (HTTP error or OpenAPI_ServiceResponse.cmmMsgHeader error).
**Params**   `servicePath` · `query`
**Env**       `DATA_GO_KR_KEY`
Click for full reference · params · sandbox · JS source
getKmaShortTermForecast 🔑 × 1
:material-weather-cloudy:
web · korea · weather L3
KMA short-term weather forecast - hourly forecast for the next ~72 hours by lat/lon or KMA grid coordinates (nx,ny). KR; data.go.kr serviceKey required, separate KMA service registration. Register the `KMA short-term forecast service` at data.go.kr, receive a serviceKey, and set DATA_GO_KR_KMA_KEY on the tool's staticVariables, or inject as env var. Coordinates: pass either (latitude, longitude) or (nx, ny). Lat/lon are converted internally to KMA Lambert grid. baseDate/baseTime default to today's 0500 release (KMA releases at 02/05/08/11/14/17/20/23). Response is pivoted to 1-hour slots: { fcstDate, fcstTime, temp(℃), humidity(%), precipProbability(%), precipType, precipAmount, skyCondition, windSpeed(m/s), windDirection(deg) }.
**Params**   `latitude` · `longitude` · `nx` · `ny` · `baseDate` · `baseTime`
**Env**       `DATA_GO_KR_KMA_KEY`
Click for full reference · params · sandbox · JS source
getApartmentTradePrice 🔑 × 1
:material-home-city-outline:
web · korea · finance L3
MOLIT (Ministry of Land, Infrastructure & Transport) apartment sale transactions (KR; data.go.kr serviceKey required). Register the MOLIT apartment-trade data service at data.go.kr, receive a serviceKey, and set DATA_GO_KR_APT_KEY on the tool's staticVariables, or inject as env var. `lawdCode` is the 5-digit legal-dong city/county code (not the road-name address). Examples: Gangnam=11680, Seocho=11650, Songpa=11710, Haeundae=26350, Bundang(Seongnam)=41135, Jeju City=50110. `dealYmd` is the transaction month as YYYYMM. Returns: { lawdCode, dealYmd, totalCount, pageNo, numOfRows, items:[{ aptName, dealYear, dealMonth, dealDay, dealAmount(10K KRW), excluUseAr(sqm), floor, buildYear, umdNm(legal dong), jibun(lot), roadName, dealingType }] }.
**Params**   `lawdCode` · `dealYmd` · `numOfRows` · `pageNo`
**Env**       `DATA_GO_KR_APT_KEY`
Click for full reference · params · sandbox · JS source
searchKoreaDrugInfo 🔑 × 1
:material-pill:
web · korea · search L3
MFDS (Ministry of Food & Drug Safety) drug product approval search (KR; data.go.kr serviceKey required). Register the `MFDS drug product approval info` service at data.go.kr, receive a serviceKey, and set DATA_GO_KR_DRUG_KEY on the tool's staticVariables, or inject as env var. At least one of `itemName` (partial product name), `entpName` (company name), or `itemSeq` (product sequence) is required. Returns: { totalCount, pageNo, numOfRows, items:[{ itemSeq, itemName, entpName, itemPermitDate, className, storageMethod, packUnit, validTerm, cancelDate, cancelName, chart }] }.
**Params**   `itemName` · `entpName` · `itemSeq` · `numOfRows` · `pageNo`
**Env**       `DATA_GO_KR_DRUG_KEY`
Click for full reference · params · sandbox · JS source
getKoreaEmergencyAlerts 🔑 × 1
:material-alert-octagon-outline:
web · korea L3
MOIS (Ministry of the Interior & Safety) emergency disaster-alert SMS history (KR; data.go.kr serviceKey required). Register the `MOIS emergency disaster alerts` service at data.go.kr, receive a serviceKey, and set DATA_GO_KR_DISASTER_KEY on the tool's staticVariables, or inject as env var. `area` matches the dispatch region name partially (Korean string). `fromDate`/`toDate` accept YYYYMMDD or YYYY-MM-DD. Returns: { totalCount, pageNo, numOfRows, items:[{ serialNo, createDate, message, emergencyStep, disasterType, location }] }.
**Params**   `area` · `fromDate` · `toDate` · `numOfRows` · `pageNo`
**Env**       `DATA_GO_KR_DISASTER_KEY`
Click for full reference · params · sandbox · JS source

Composition patterns (KR-domain chains)

The Korea bundle is heavier on data sources, so most chains are Korean source → analysis:

  • Cross-exchange spread (kimchi premium) - getUpbitTicker(markets='KRW-BTC') + getBithumbTicker(symbol='BTC')evalExpression(expression='(a-b)/b*100', variables={a, b}) for the live KRW spread between the two majors. No keys, no setup.
  • Local + weather - searchKakaoLocal(query) for POI lat/lon → getKmaShortTermForecast(latitude, longitude) for the next 72h hourly forecast in the KMA grid - "Will it rain tomorrow at this Gyeongju temple?"
  • Tour + box office - searchKoreaTour(keyword) for festivals in a region → getKoficBoxOffice(targetDate) to cross-reference what is also showing in cinemas that weekend.
  • Agri price tracker - getKamisAgriPrice(itemCode='211', startDay, endDay) for napa cabbage (or any 4-digit KAMIS code) → formatCsv the rows → writeTextFile snapshot for a monthly price history.
  • Disaster → Slack - getKoreaEmergencyAlerts(area='경주', fromDate, toDate) → conditional → sendSlackMessage(text) to fan out emergency-alert SMS history to a channel.

Tutorial 8: Default Tool Recipes walks the cross-exchange spread and disaster → Slack patterns end-to-end.

Keys & secrets

Eight of the 21 are no-key (Upbit, Bithumb, iTunes K-pop, Open Beauty Facts - see the cost badges on each card). The other thirteen pull from six keychains.

ToolEnv varWhere to issue
searchNaverNAVER_CLIENT_ID + NAVER_CLIENT_SECRETCreate an app at developers.naver.com/apps/ → enable Search API → copy Client-Id / Secret

Kakao Developers

ToolEnv varWhere to issue
searchKakaoLocalKAKAO_REST_API_KEYdevelopers.kakao.com → My Application → REST API key

Seoul Open Data Plaza

ToolEnv varWhere to issue
searchSeoulCulturalEventsSEOUL_OPEN_API_KEYdata.seoul.go.kr/together/apikey.do - 1 000 req/day free

KAMIS (aT Korea Agro-Fisheries)

ToolEnv varWhere to issue
getKamisAgriPriceKAMIS_CERT_ID + KAMIS_CERT_KEYkamis.or.kr/customer/reference/openapi_list.do - free credentials

KOFIC (Korean Film Council)

ToolEnv varWhere to issue
getKoficBoxOfficeKOFIC_API_KEYkobis.or.kr/kobisopenapi/ - instant issuance

data.go.kr keychain (8 services)

data.go.kr issues one keystring per service registration even when the value happens to be the same across services. Each tool below needs its own service registration; the env var name distinguishes them:

ToolEnv vardata.go.kr service
getAirKoreaPmDATA_GO_KR_AIR_KEYdata.go.kr/data/15073861/openapi.do - AirKorea air quality
searchKoreaTourDATA_GO_KR_TOUR_KEYdata.go.kr/data/15101578/openapi.do - KTO TourAPI 4.0
getKrxStockPriceDATA_GO_KR_STOCK_KEYdata.go.kr/data/15094808/openapi.do - KRX stock quotes
getKmaShortTermForecastDATA_GO_KR_KMA_KEYdata.go.kr/data/15084084/openapi.do - KMA short-term forecast (VilageFcstInfoService_2.0)
getApartmentTradePriceDATA_GO_KR_APT_KEYdata.go.kr/data/15126468/openapi.do - MOLIT apartment-trade transactions (detailed)
searchKoreaDrugInfoDATA_GO_KR_DRUG_KEYdata.go.kr/data/15095677/openapi.do - MFDS drug-product approval
getKoreaEmergencyAlertsDATA_GO_KR_DISASTER_KEYdata.go.kr/data/15134001/openapi.do - MOIS emergency disaster alerts
callDataGoKrOpenApiDATA_GO_KR_KEYdata.go.kr/tcs/dss/selectDataSetList.do?dType=API - generic dispatcher; pick any other data.go.kr service from the API catalog

The launcher's Environment Variables card is the recommended place to set the whole keychain at once. Each ${ENV_VAR} placeholder on the tool's static variables resolves at runtime from the JVM environment; the resolved string is masked from console.log whenever it appears in the trace.

Tool Studio: Static Variables - how the masking works.