Default Tools¶
Spring AI Playground ships with 86 default tools spread across five JSON source bundles. They are ready to call the moment a model provider is connected — you do not need to author anything yourself to see agentic workflows work end-to-end. They also serve as editable references when you start writing your own tools.
The MCP server does not expose all of them by default — a preset decides the starting subset, and per-tool include / exclude rules layer on top. That preference lives in <home>/spring-ai-playground/tool/save/default-tools-preference.json and is editable from two surfaces (the desktop launcher's Default MCP Tools card, and Tool Studio's Tool MCP Server Setting drawer — full breakdown in Tool Studio → Where preset choices live).
Two ways to use these tools¶
Expose and call¶
The simplest mode — pick a preset (or layer rules on top) and the built-in MCP server publishes that subset. The same tool inventory ends up reachable, but the two transports the server can run with serve different audiences:
- Streamable HTTP at
http://localhost:8282/mcp— always on. The in-app MCP Inspector (MCP Server tab) and the in-app Agentic Chat use this transport exclusively, and so do external Streamable HTTP MCP clients (Claude Code, Cursor, Claude Desktop viamcp-remote). - STDIO — opt-in, only useful when an external MCP client wants to host the process itself. Launch with the
mcp-stdioSpring profile (Docker-e SPRING_PROFILES_INCLUDE=mcp-stdio, orjava -jarwith the same env var); the client then spawns the playground as its child process and talks JSON-RPC over its stdin/stdout. The server's lifetime is tied to that client process — when the client exits, the server exits with it. This is how Claude Desktop / Claude Code can host the built-in server with no HTTP at all. The in-app surfaces are unaffected — they keep talking Streamable HTTP whether or not the STDIO profile is layered in.
Before exposing to an external client, the in-app MCP Inspector is the practical place to verify each tool's contract — run the tool, look at its schema, prompts, and resources, all isolated from chat.
No JS authoring is required for any of this mode — pick a preset, expose, call.
- → Tool Studio: Key Tool Studio Capabilities — Tool MCP Server Setting drawer overview
- → Tool Studio: Connect to the Built-in MCP Server — wiring external clients over Streamable HTTP
- → Getting Started: distribution channels and MCP transports — Docker container and fat-JAR launchers for STDIO mode
- → MCP Server: MCP Inspector — exercise tools, resources, prompts before exposing externally
- → Agentic Chat — call them from a model conversation
Author and compose¶
The deeper mode — each default tool's JS source is a working reference for the cross-bridged helpers (fetch, safety.fs.*, safety.parser.*, crypto.subtle, console.log). Open one in Tool Studio, use Copy to New Tool to fork it, tweak the action, hit Test & Publish. The moment Local Pass succeeds, your tweaked tool joins the same built-in MCP server — Agentic Chat and external clients see it without a restart.
- → Tool Studio: Built-in JavaScript Helpers — the full helper surface
- → Tool Studio: Local Pass — Test Before Publish — the publish gate
- → Tutorial 1: Author a Tool — first walkthrough
End-to-end flow¶
[ Default tool · Custom tool ]
│
▼
[ Author in Tool Studio ]
│
▼
[ Local Pass test ✅ ] ──── No pass, no run — the gate
│
▼
[ Built-in MCP server ]
│
├── Streamable HTTP · http://localhost:8282/mcp
│ server runs independently; clients connect by URL
│ │
│ ├──▶ [ MCP Inspector ] (in-app — verify the contract)
│ ├──▶ [ Agentic Chat ] (in-app)
│ └──▶ External HTTP clients — Claude Code · Cursor ·
│ Claude Desktop (via mcp-remote) · any Streamable HTTP MCP client
│
└── STDIO · process stdin/stdout JSON-RPC
client spawns the playground as its child process;
its lifetime is tied to the client — when the client exits, the server exits with it
(opt-in: mcp-stdio profile — Docker -e SPRING_PROFILES_INCLUDE=mcp-stdio,
or java -jar with the same env var)
│
└──▶ External STDIO clients — Claude Desktop · Claude Code
configured to spawn the process · any other STDIO MCP client
The two transports differ in who owns the server's lifetime: in Streamable HTTP mode the playground is a long-running daemon and clients come and go by URL; in STDIO mode the MCP client launches the playground as a child process and the server dies with the client. The in-app Inspector and Agentic Chat always reach the server over Streamable HTTP — STDIO is purely for external clients that want to host the process themselves. The same flow applies whether you expose a default tool unchanged or compose new tools from default-tool patterns, and the Inspector is where you exercise each tool against its schema before pointing an external client at it.
Why these are different from other MCP tools¶
Most MCP server implementations ship one native binary per OS (Python wheels, Node binaries, Go / Rust executables) and require the user to install a platform-matching build, often plus a toolchain (Python, Node, Cargo) to author new tools.
Spring AI Playground's tool runtime is OS-agnostic by design. One JVM artifact — distributed as a JAR, a Docker image, or an Electron-packaged desktop launcher — runs identically on macOS, Windows, and Linux. All 86 default tools are pure JavaScript executed through GraalVM Polyglot, and so is every tool you author. There is no per-OS build step, no native dependency, no toolchain on the user's machine.
Full mechanics — including how every cross-bridged helper rides on JVM stdlib so / vs \, TLS, parsers, and crypto behave identically across OSes — in Tool Studio → Cross-platform by design.
Composition recipes¶
The reference pages list what's available; composition recipes show how to chain them into a useful new tool. Three walk-throughs are in Tutorial 8: Default Tool Recipes:
- Filesystem pipeline —
listDir→grepFile→sliceFile→writeTextFile, ending in a custom tool that summarises a chunked log directory. - GitHub release → AI summary —
getGithubLatestRelease→openaiResponseGenerator, ending in a tool that posts release-notes digests. - City name → hourly forecast —
geocodeAddress→getOpenMeteoForecast, ending in a tool that answers "is it raining tomorrow in city?" without hard-coded coordinates.
Environment variables — short list¶
Some default tools depend on environment-backed secrets and stay inert until those are set. The full per-tool breakdown lives on each reference page; the most common are:
| Env var | Used by | Why |
|---|---|---|
OPENAI_API_KEY |
openaiResponseGenerator |
OpenAI Responses API |
GOOGLE_API_KEY + GOOGLE_PSE_ID |
googlePseSearch |
Google Programmable Search Engine |
SLACK_WEBHOOK_URL |
sendSlackMessage |
Incoming Webhook |
TOOL_STUDIO_FS_BASE |
All Filesystem tools | Per-app safety.fs root (defaults to ${user.home}) |
| Various Korean provider keys | KR network tools — Naver, Kakao, KMA, data.go.kr | Provider-specific (per-page) |
Secrets are masked from console.log output by substring replacement when the full resolved value appears, and they are not committed to the tool spec — they resolve at runtime from the JVM environment.
→ Tool Studio: Key Tool Studio Capabilities — Static Variables, secret masking, and how env-backed values reach the JS action.
Browse all 86 tools¶
Click a card to jump to its full reference (with the JS source pre-expanded) on the right sub-page — same UX as the Tool MCP Server Setting drawer in Tool Studio. Five reference pages organise the catalog by source bundle and concern: Examples · Utilities · Filesystem · Global · Korea.
Filter modes: pick a Preset for an exclusive view (just the tools in that preset, all other filters cleared); or combine a search keyword with one or more Tag / Category chips — search is AND, tag and category are OR (a card is shown when it matches any selected tag OR category and also matches the search keyword).
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 —
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 —
Builds a Google Calendar "Add Event" URL with prefilled fields.
Params title · start · end · details · location · timeZone
Env —
Free public weather lookup via wttr.in (no API key). Returns a small JSON summary: { location, tempC, humidity, windSpeed, windDirection }.
Params location
Env —
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
Calls OpenAI's Responses API. Requires OPENAI_API_KEY env var.
Params prompt · model
Env OPENAI_API_KEY
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
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 —
Computes b - a in the requested unit (days|hours|minutes|seconds|milliseconds). Returns a number which may be fractional.
Params a · b · unit
Env —
Percent-encodes a string for use in a URL component. Equivalent to encodeURIComponent.
Params text
Env —
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 —
Parses a date/time string (ISO 8601 or RFC 2822) and returns its components plus epochMillis.
Params text · timeZone
Env —
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 —
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 —
Sorts lines of text alphabetically. Supports reverse and case-insensitive options.
Params text · reverse · caseInsensitive
Env —
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 —
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 —
Formats a date (ISO string or epoch ms) using a pattern with tokens yyyy/MM/dd HHss SSS. Time zone aware.
Params text · pattern · timeZone
Env —
Returns summary statistics (count, sum, min, max, mean, median, stddev) for an array of numbers.
Params numbers
Env —
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 —
Replaces regex matches in the input with the given replacement string. Supports $1, $2 group back-references.
Params text · pattern · replacement · flags
Env —
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 —
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 —
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 —
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 —
Generates a cryptographically random UUID v4 string.
Params —
Env —
Computes the cryptographic hash of UTF-8 text. Algorithms: SHA-256 (default), SHA-384, SHA-512. Returns lowercase hex.
Params text · algorithm
Env —
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 —
Generates cryptographically secure random bytes. encoding: 'hex' (default), 'base64', or 'base64url'.
Params bytes · encoding
Env —
Generates a strong random password from selected character classes. Uses crypto.getRandomValues for unbiased selection.
Params length · includeLowercase · includeUppercase · includeDigits · includeSymbols
Env —
Decodes a JWT without verifying its signature. Returns the header and payload as JSON, plus signaturePresent.
Params token
Env —
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 —
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 —
Reads a UTF-8 text file from disk and returns its contents as a single string.
Params path
Env —
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 —
Returns size, last-modified timestamp, and a directory flag for a path inside the FS base. Uses safety.fs.stat().
Params path
Env —
Counts the lines in a UTF-8 text file. Uses safety.fs.lineCount().
Params path
Env —
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 —
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 —
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 —
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 —
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 —
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 —
Fetches public metadata for a GitHub repository (no authentication needed; subject to GitHub's 60 requests/hour anonymous rate limit).
Params owner · repo
Env —
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 —
Searches Hacker News stories via the public Algolia HN Search API (no auth needed).
Params query · hits · tag
Env —
Searches Stack Overflow questions via the public Stack Exchange API (anonymous, capped at 300 requests / IP / day).
Params query · pageSize · sort · tags
Env —
Fetches public profile information for a GitHub user or organisation (no auth — 60 req/h anonymous).
Params login
Env —
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 —
Lists releases on a public GitHub repository (no auth).
Params owner · repo · perPage
Env —
Fetches the latest non-draft, non-prerelease release of a public GitHub repository (no auth).
Params owner · repo
Env —
Fetches the raw text content of a file from a public GitHub repository (no auth).
Params owner · repo · path · ref
Env —
Searches public GitHub repositories by query (no auth — anonymous limit 10 requests/minute).
Params query · sort · perPage
Env —
Lists top contributors to a public GitHub repository (no auth).
Params owner · repo · perPage
Env —
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 —
Converts between fiat currencies using exchangerate.host (no key, no rate limit listed).
Params from · to · amount
Env —
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 —
Fetches country information from restcountries.com (no auth) by partial or full name.
Params name
Env —
Searches arXiv preprints via the public Atom-feed API (no auth). Results are parsed from XML.
Params query · max · sortBy
Env —
Returns public holidays for a given country and year via Nager.Date (no auth).
Params year · countryCode
Env —
Searches a public subreddit via Reddit's JSON API (no auth, but rate-limited and User-Agent required).
Params subreddit · query · limit · sort
Env —
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 —
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 —
Returns sunrise / sunset / twilight times for a given lat-lon and date via sunrise-sunset.org (no auth).
Params latitude · longitude · date · timezone
Env —
Fetches recent earthquakes from the USGS public catalog (no auth).
Params minMagnitude · lookbackHours · limit
Env —
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 —
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 —
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 —
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 —
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 —
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 —
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
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
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
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 —
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 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
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
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
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
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
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
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
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
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
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