extractPageContent
extractPageContent 🆓
:material-language-html5:
web · example L3
Fetches a web page and extracts its main readable content + outbound links. Uses the host-injected fetch (SSRF-defended in `strict` mode) and safety.parser.html for parsing.
**Params** `pageUrl`
**Env** -
→ Examples
getCurrentTime
getCurrentTime 🆓
:material-clock-outline:
datetime · example · util L0
Returns the current time in ISO 8601 format. If the user specifies a city, country, or location, the agent should first map it to an IANA time zone and supply it via the timeZone parameter. If no time zone is provided, UTC is used.
**Params** `timeZone`
**Env** -
→ Examples
buildGoogleCalendarCreateLink
buildGoogleCalendarCreateLink 🆓
:simple-googlecalendar:
productivity · example · util L0
Builds a Google Calendar "Add Event" URL with prefilled fields.
**Params** `title` · `start` · `end` · `details` · `location` · `timeZone`
**Env** -
→ Examples
getWeather
getWeather 🆓
:material-weather-partly-cloudy:
web · example · weather L3
Free public weather lookup via wttr.in (no API key). Returns a small JSON summary: { location, tempC, humidity, windSpeed, windDirection }.
**Params** `location`
**Env** -
→ Examples
googlePseSearch
googlePseSearch 🔑 × 2
:simple-google:
web · example · search L3
Google Programmable Search Engine query (Custom Search API). Requires `GOOGLE_API_KEY` and `GOOGLE_PSE_ID` env vars.
**Params** `query` · `resultNum` · `startPage`
**Env** `GOOGLE_API_KEY` · `GOOGLE_PSE_ID`
→ Examples
openaiResponseGenerator
openaiResponseGenerator 🔑 × 1
:material-creation:
ai · example L3
Calls OpenAI's Responses API. Requires `OPENAI_API_KEY` env var.
**Params** `prompt` · `model`
**Env** `OPENAI_API_KEY`
→ Examples
sendSlackMessage
sendSlackMessage 🔑 × 1
:material-pound-box-outline:
messaging · example L3
Posts a text message to a Slack channel via Incoming Webhook. Requires `SLACK_WEBHOOK_URL` env var (the full https://hooks.slack.com/services/... URL).
**Params** `text`
**Env** `SLACK_WEBHOOK_URL`
→ Examples
timezoneConvert
timezoneConvert 🆓
:material-clock-alert-outline:
datetime · util L0
Converts a moment in time between IANA time zones. Returns the same instant rendered in the target zone (ISO with offset).
**Params** `text` · `toTimeZone`
**Env** -
→ Utilities
dateDiff
dateDiff 🆓
:material-calendar-arrow-right:
datetime · util L0
Computes b - a in the requested unit (days|hours|minutes|seconds|milliseconds). Returns a number which may be fractional.
**Params** `a` · `b` · `unit`
**Env** -
→ Utilities
urlEncode
urlEncode 🆓
:material-link-variant:
text · util L0
Percent-encodes a string for use in a URL component. Equivalent to encodeURIComponent.
**Params** `text`
**Env** -
→ Utilities
dateMath
dateMath 🆓
:material-calendar-clock:
datetime · util L0
Adds (or subtracts) a duration to a date and returns the resulting ISO timestamp. Unit: years|months|weeks|days|hours|minutes|seconds|milliseconds.
**Params** `text` · `amount` · `unit`
**Env** -
→ Utilities
parseDate
parseDate 🆓
:material-calendar-import:
datetime · util L0
Parses a date/time string (ISO 8601 or RFC 2822) and returns its components plus epochMillis.
**Params** `text` · `timeZone`
**Env** -
→ Utilities
cronNext
cronNext 🆓
:material-timer-cog-outline:
datetime · util L0
Computes the next datetime matching a standard 5-field cron expression (minute hour day month weekday). Supports * , - / and ? (treated as *). Returns ISO timestamp in UTC.
**Params** `expression` · `from` · `count`
**Env** -
→ Utilities
diffText
diffText 🆓
:material-file-compare:
text · util L0
Returns a line-by-line diff between two texts. Each entry is {op, line} where op is one of '=' (unchanged), '-' (only in a), '+' (only in b).
**Params** `a` · `b`
**Env** -
→ Utilities
sortLines
sortLines 🆓
:material-sort-alphabetical-ascending:
text · util L0
Sorts lines of text alphabetically. Supports reverse and case-insensitive options.
**Params** `text` · `reverse` · `caseInsensitive`
**Env** -
→ Utilities
piiDetect
piiDetect 🆓
:material-shield-account-outline:
security · util L0
Scans text for personally identifiable information patterns (email, US SSN, US phone, credit card, IPv4). Returns an array of {type, masked, index}.
**Params** `text`
**Env** -
→ Utilities
regexExtract
regexExtract 🆓
:material-regex:
text · util L0
Returns all regex matches in the input. With the 'g' flag every match is returned; without it the first match (with capture groups) is returned.
**Params** `text` · `pattern` · `flags`
**Env** -
→ Utilities
formatDate
formatDate 🆓
:material-calendar-text-outline:
datetime · util L0
Formats a date (ISO string or epoch ms) using a pattern with tokens yyyy/MM/dd HH:mm:ss SSS. Time zone aware.
**Params** `text` · `pattern` · `timeZone`
**Env** -
→ Utilities
stats
stats 🆓
:material-sigma:
math · util L0
Returns summary statistics (count, sum, min, max, mean, median, stddev) for an array of numbers.
**Params** `numbers`
**Env** -
→ Utilities
secretPatternDetect
secretPatternDetect 🆓
:material-key-alert-outline:
security · util L0
Scans text for well-known secret patterns (AWS keys, GitHub tokens, Slack tokens, OpenAI keys, Stripe keys, private keys). Returns an array of {type, masked, index}.
**Params** `text`
**Env** -
→ Utilities
regexReplace
regexReplace 🆓
:material-find-replace:
text · util L0
Replaces regex matches in the input with the given replacement string. Supports $1, $2 group back-references.
**Params** `text` · `pattern` · `replacement` · `flags`
**Env** -
→ Utilities
evalExpression
evalExpression 🆓
:material-calculator-variant-outline:
math · util L0
Evaluates a safe arithmetic/logical expression (no eval, no host access). Supports + - * / % ** parens, &&, ||, !, ==, !=, <, <=, >, >=, and numeric/string/boolean literals plus variables from the variables object.
**Params** `expression` · `variables`
**Env** -
→ Utilities
formatCsv
formatCsv 🆓
:material-file-table-outline:
data · util L0
Serialises an array of rows into CSV text. Rows may be arrays (use header param) or objects (keys become the header). RFC 4180 quoting.
**Params** `rows` · `header` · `delimiter`
**Env** -
→ Utilities
base64
base64 🆓
:material-code-tags:
encoding · util L0
Encodes UTF-8 text to base64, or decodes base64 back to UTF-8 text. Use mode='encode' (default) or 'decode'. URL-safe variant via urlSafe=true.
**Params** `text` · `mode` · `urlSafe`
**Env** -
→ Utilities
hex
hex 🆓
:material-numeric:
encoding · util L0
Encodes UTF-8 text to hex string, or decodes hex back to UTF-8 text. Use mode='encode' (default) or 'decode'.
**Params** `text` · `mode` · `upperCase`
**Env** -
→ Utilities
uuid
uuid 🆓
:material-identifier:
crypto · util L0
Generates a cryptographically random UUID v4 string.
→ Utilities
hash
hash 🆓
:material-pound:
crypto · util L0
Computes the cryptographic hash of UTF-8 text. Algorithms: SHA-256 (default), SHA-384, SHA-512. Returns lowercase hex.
**Params** `text` · `algorithm`
**Env** -
→ Utilities
hmac
hmac 🆓
:material-key-variant:
crypto · util L0
Computes an HMAC signature over UTF-8 text using a secret. Algorithms: SHA-256 (default), SHA-384, SHA-512. Returns lowercase hex.
**Params** `secret` · `text` · `algorithm`
**Env** -
→ Utilities
secureRandom
secureRandom 🆓
:material-dice-6-outline:
crypto · util L0
Generates cryptographically secure random bytes. encoding: 'hex' (default), 'base64', or 'base64url'.
**Params** `bytes` · `encoding`
**Env** -
→ Utilities
passwordGenerate
passwordGenerate 🆓
:material-form-textbox-password:
crypto · util L0
Generates a strong random password from selected character classes. Uses crypto.getRandomValues for unbiased selection.
**Params** `length` · `includeLowercase` · `includeUppercase` · `includeDigits` · `includeSymbols`
**Env** -
→ Utilities
jwtDecode
jwtDecode 🆓
:material-shield-key-outline:
crypto · util L0
Decodes a JWT without verifying its signature. Returns the header and payload as JSON, plus signaturePresent.
**Params** `token`
**Env** -
→ Utilities
jwtVerify
jwtVerify 🆓
:material-shield-check-outline:
crypto · util L0
Verifies a HS256/HS384/HS512 JWT signature using a shared secret and returns the decoded payload on success. Also checks exp and nbf claims when present.
**Params** `token` · `secret`
**Env** -
→ Utilities
parseCsv
parseCsv 🆓
:material-file-import-outline:
data · util L0
Parses CSV text into an array of rows. If header=true, each row is an object keyed by the first row.
**Params** `text` · `header` · `delimiter`
**Env** -
→ Utilities
readTextFile
readTextFile 🆓
:material-file-document-outline:
file · pipeline L3
Reads a UTF-8 text file from disk and returns its contents as a single string.
**Params** `path`
**Env** -
→ Filesystem
listDir
listDir 🆓
:material-folder-outline:
file · pipeline L3
Lists the immediate entries (files and subdirectories) of a directory under the FS base path. Returns an array of relative names (not full paths). Uses safety.fs.list().
**Params** `dir`
**Env** -
→ Filesystem
statFile
statFile 🆓
:material-information-outline:
file · pipeline L3
Returns size, last-modified timestamp, and a directory flag for a path inside the FS base. Uses safety.fs.stat().
**Params** `path`
**Env** -
→ Filesystem
lineCount
lineCount 🆓
:material-counter:
file · pipeline L3
Counts the lines in a UTF-8 text file. Uses safety.fs.lineCount().
**Params** `path`
**Env** -
→ Filesystem
sliceFile
sliceFile 🆓
:material-content-cut:
file · pipeline L3
Returns a slice of lines from a UTF-8 text file (head / tail / range). `start` is 0-based inclusive, `end` is 0-based exclusive (Python-style slice). Negative values count from the end of the file. Uses safety.fs.slice().
**Params** `path` · `start` · `end`
**Env** -
→ Filesystem
sortFile
sortFile 🆓
:material-sort:
file · pipeline L3
Sorts the lines of a UTF-8 text file and returns the sorted lines as an array. Options: reverse / numeric / caseInsensitive / unique. Uses safety.fs.sort().
**Params** `path` · `reverse` · `numeric` · `caseInsensitive` · `unique`
**Env** -
→ Filesystem
grepFile
grepFile 🆓
:material-file-find-outline:
file · pipeline L3
Searches a UTF-8 text file for lines matching a JavaScript regex. Returns an array of matching lines (optionally numbered). Uses safety.fs.grep().
**Params** `pattern` · `path` · `caseInsensitive` · `numbered` · `limit`
**Env** -
→ Filesystem
findFiles
findFiles 🆓
:material-folder-search-outline:
file · pipeline L3
Recursively finds files matching a glob inside a directory. Glob supports `*` and `?`. Optional max recursion depth and type filter ('file' or 'dir'). Uses safety.fs.find().
**Params** `dir` · `glob` · `maxDepth` · `type`
**Env** -
→ Filesystem
cutFileFields
cutFileFields 🆓
:material-table-column:
file · pipeline L3
Extracts selected fields from each line of a delimited file (CSV/TSV/etc.). Uses safety.fs.cut(). 1-based field numbers, comma-separated alternatives via the array.
**Params** `path` · `fields` · `delimiter` · `regex`
**Env** -
→ Filesystem
writeTextFile
writeTextFile 🆓
:material-file-edit-outline:
file · pipeline L4
Writes a UTF-8 text file inside the FS base path (creating parent directories as needed). Overwrites any existing file. Requires `fileWrite` permission on the sandbox.
**Params** `path` · `content`
**Env** -
→ Filesystem
getGithubRepo
getGithubRepo 🆓
:simple-github:
web · github L3
Fetches public metadata for a GitHub repository (no authentication needed; subject to GitHub's 60 requests/hour anonymous rate limit).
**Params** `owner` · `repo`
**Env** -
→ Global
searchWikipedia
searchWikipedia 🆓
:simple-wikipedia:
web · search L3
Looks up a Wikipedia page summary by title. No authentication required. Uses the public REST API at en.wikipedia.org/api/rest_v1/page/summary.
**Params** `title` · `lang`
**Env** -
→ Global
searchHackerNews
searchHackerNews 🆓
:simple-ycombinator:
web · search L3
Searches Hacker News stories via the public Algolia HN Search API (no auth needed).
**Params** `query` · `hits` · `tag`
**Env** -
→ Global
searchStackOverflow
searchStackOverflow 🆓
:simple-stackoverflow:
web · search L3
Searches Stack Overflow questions via the public Stack Exchange API (anonymous, capped at 300 requests / IP / day).
**Params** `query` · `pageSize` · `sort` · `tags`
**Env** -
→ Global
getGithubUser
getGithubUser 🆓
:simple-github:
web · github L3
Fetches public profile information for a GitHub user or organisation (no auth - 60 req/h anonymous).
**Params** `login`
**Env** -
→ Global
listGithubRepoIssues
listGithubRepoIssues 🆓
:simple-github:
web · github L3
Lists issues on a public GitHub repository (no auth). Excludes pull requests by default. Anonymous quota 60 req/h.
**Params** `owner` · `repo` · `state` · `perPage` · `page`
**Env** -
→ Global
listGithubRepoReleases
listGithubRepoReleases 🆓
:simple-github:
web · github L3
Lists releases on a public GitHub repository (no auth).
**Params** `owner` · `repo` · `perPage`
**Env** -
→ Global
getGithubLatestRelease
getGithubLatestRelease 🆓
:simple-github:
web · github L3
Fetches the latest non-draft, non-prerelease release of a public GitHub repository (no auth).
**Params** `owner` · `repo`
**Env** -
→ Global
getGithubFileContent
getGithubFileContent 🆓
:simple-github:
web · github L3
Fetches the raw text content of a file from a public GitHub repository (no auth).
**Params** `owner` · `repo` · `path` · `ref`
**Env** -
→ Global
searchGithubRepos
searchGithubRepos 🆓
:simple-github:
web · github · search L3
Searches public GitHub repositories by query (no auth - anonymous limit 10 requests/minute).
**Params** `query` · `sort` · `perPage`
**Env** -
→ Global
listGithubRepoContributors
listGithubRepoContributors 🆓
:simple-github:
web · github L3
Lists top contributors to a public GitHub repository (no auth).
**Params** `owner` · `repo` · `perPage`
**Env** -
→ Global
getCryptoPrice
getCryptoPrice 🆓
:material-currency-btc:
web · finance L3
Fetches current crypto prices from CoinGecko's public Simple Price API (no auth, generous rate limit). Pass coin ids like 'bitcoin,ethereum' and currency ids like 'usd,krw'.
**Params** `ids` · `currencies`
**Env** -
→ Global
convertCurrency
convertCurrency 🆓
:material-currency-usd:
web · finance L3
Converts between fiat currencies using open.er-api.com daily reference rates (no key).
**Params** `from` · `to` · `amount`
**Env** -
→ Global
getIpInfo
getIpInfo 🆓
:material-ip-network-outline:
web · geo L3
Returns geolocation and ASN info for an IP address (or the caller's IP if `ip` is omitted) via ipapi.co (no auth, 1000 req/day).
**Params** `ip`
**Env** -
→ Global
getCountryInfo
getCountryInfo 🆓
:material-earth:
web · geo L3
Fetches country information from the open mledoze/countries dataset (via the jsDelivr CDN, no key) by partial or full name.
**Params** `name`
**Env** -
→ Global
searchArxiv
searchArxiv 🆓
:simple-arxiv:
web · search L3
Searches arXiv preprints via the public Atom-feed API (no auth). Results are parsed from XML.
**Params** `query` · `max` · `sortBy`
**Env** -
→ Global
getPublicHolidays
getPublicHolidays 🆓
:material-calendar-star-outline:
web L3
Returns public holidays for a given country and year via Nager.Date (no auth).
**Params** `year` · `countryCode`
**Env** -
→ Global
getOpenMeteoForecast
getOpenMeteoForecast 🆓
:material-weather-cloudy-clock:
web · weather L3
Fetches a multi-day weather forecast from Open-Meteo (no auth, 10k req/day for non-commercial). Open-Meteo serves official ECMWF/GFS/ICON model output - far richer than wttr.in but requires lat/lon (use `geocodeAddress` first if you only have a city name).
**Params** `latitude` · `longitude` · `days` · `timezone`
**Env** -
→ Global
geocodeAddress
geocodeAddress 🆓
:simple-openstreetmap:
web · geo L3
Forward-geocodes a free-form address to coordinates via OpenStreetMap Nominatim (no key). Nominatim's usage policy requires a descriptive User-Agent and at most 1 req/s - we set both.
**Params** `address` · `limit`
**Env** -
→ Global
getSunriseSunset
getSunriseSunset 🆓
:material-weather-sunset:
web · geo L3
Returns sunrise / sunset / twilight times for a given lat-lon and date via sunrise-sunset.org (no auth).
**Params** `latitude` · `longitude` · `date` · `timezone`
**Env** -
→ Global
getRecentEarthquakes
getRecentEarthquakes 🆓
:material-vibrate:
web · geo L3
Fetches recent earthquakes from the USGS public catalog (no auth).
**Params** `minMagnitude` · `lookbackHours` · `limit`
**Env** -
→ Global
getUpbitTicker
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** -
→ Korea
getUpbitOrderbook
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** -
→ Korea
getUpbitCandles
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** -
→ Korea
listUpbitMarkets
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** -
→ Korea
getBithumbTicker
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** -
→ Korea
getBithumbOrderbook
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** -
→ Korea
searchNaver
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`
→ Korea
searchKakaoLocal
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`
→ Korea
getAirKoreaPm
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`
→ Korea
searchKpopOnItunes
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** -
→ Korea
searchKBeautyProducts
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** -
→ Korea
searchKoreaTour
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`
→ Korea
searchSeoulCulturalEvents
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`
→ Korea
getKamisAgriPrice
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`
→ Korea
getKoficBoxOffice
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`
→ Korea
getKrxStockPrice
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`
→ Korea
callDataGoKrOpenApi
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`
→ Korea
getKmaShortTermForecast
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`
→ Korea
getApartmentTradePrice
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`
→ Korea
searchKoreaDrugInfo
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`
→ Korea
getKoreaEmergencyAlerts
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`
→ Korea