diff --git a/src/gateway/chat/build-tools.ts b/src/gateway/chat/build-tools.ts index ea6795c..08bd5c7 100644 --- a/src/gateway/chat/build-tools.ts +++ b/src/gateway/chat/build-tools.ts @@ -828,7 +828,7 @@ export function createBuildTools(isOrchestrationSkillEnabled: () => boolean) { parameters: { type: 'object', properties: { - query: { type: 'string', description: 'Optional keyword/topic filter (e.g. "economy", "South America"). Omit for general top headlines. IMPORTANT: this is matched literally against article text, not translated — for a broad "top news for this country/region" request with no specific topic, do NOT pass the user\'s original-language request text as query (e.g. a Korean phrase will match zero articles in a country whose news is written in English/Polish/etc). Omit query in that case and rely on country/category alone. Real incident 2026-08-10: query="태풍 돌핀" (Korean, specific topic) with country omitted returned "(no articles found)" for a story that had 6+ Korean outlets covering it that same day — the query text was Korean but the search pool defaulted to a mostly-English index with no country/language filter to scope it. If your query text is non-English, ALWAYS also pass country (e.g. "kr" for Korean) so it searches that language\'s sources — a bare non-English query with no country/language set is a near-guaranteed empty result even for major breaking news.' }, + query: { type: 'string', description: 'Optional keyword/topic filter (e.g. "economy", "South America"). Omit for general top headlines. IMPORTANT: matched literally against article text, not translated — for a broad "top news for this country/region" request with no specific topic, do NOT pass the user\'s original-language request text as query (e.g. a Korean phrase will match zero articles in a country whose news is written in English/Polish/etc). Omit query in that case and rely on country/category alone. If your query text is non-English, ALWAYS also pass country (e.g. "kr" for Korean) so it searches that language\'s sources. SECOND pitfall, verified 2026-08-09/10 by calling the live API directly: even WITH country set, combining a generic category word with a specific proper noun in one query — e.g. query="태풍 돌핀" (typhoon + the storm\'s name) — returned ZERO results for a story 10+ Korean outlets were actively covering that same day, because the literal text matched was "태풍 \'돌핀\'" (quote marks around the name) in real headlines, not the exact contiguous phrase "태풍 돌핀". query="돌핀" alone (just the proper noun, no category word) correctly returned 5 relevant articles; query="태풍" alone (just the category word) also worked (12 results, mostly about the same storm during typhoon season). When a specific named entity/event exists, query with JUST that name — do not prefix or combine it with a generic category word in the same string.' }, country: { type: 'string', description: 'Optional ISO 3166-1 alpha-2 country code, e.g. "kr" (Korea), "us", "br" (Brazil), "jp". Comma-separated list for multiple countries, MAX 5 (e.g. "de,fr,gb,it,es"); extras beyond 5 are dropped, not an error. There is NO code for continents/regions ("eu"/"europe" will error with "country does not exist") — for a regional request (e.g. "Eastern Europe"), pass up to 5 country codes for that region instead (e.g. "pl,cz,hu,ro,sk" for Eastern Europe). Omit country entirely for worldwide.' }, language: { type: 'string', description: 'Optional ISO 639-1 language code, e.g. "ko", "en". IGNORED whenever country is also set — only pass language when country is omitted.' }, category: { type: 'string', description: '"business"|"entertainment"|"environment"|"food"|"health"|"politics"|"science"|"sports"|"technology"|"top"|"tourism"|"world". "world" is IGNORED when country is also set — for a specific country\'s news, omit category or use "top"/"politics"/etc. instead.' },