Skip to main content
Glama

thea_find

Read-only

Browse by conditions when you have no name. Questions like 'camping YouTubers who posted a new video recently' or 'hotels in 서귀포' cannot be answered by thea_search. Each filter multiplies: more filters, narrower list; subject alone is broad. Subject codes (Korean/English, with aliases): https://thealibrary.org/static/subjects.json. Rules:

  1. If the question names an area, always pass inside. Without it the results are nationwide.

  2. subject 920 (restaurants) also returns companies that run restaurants. Add category=장소 to get shops only.

  3. For choosing questions ('best places', 'a good hotel') add sort=rating.

  4. For news or recent periods ('yesterday's news', 'since August') pass since, plus inside if an area is named, and NO subject (news is not a subject). Never refuse a date as future.

  5. Never repeat a call with the same arguments. If you got results, answer with them.

  6. Each result has an id (a record also has its parent). To go deeper call thea_entry with that id; never search the name again.

Input Schema

NameRequiredDescriptionDefault
petNoy returns only places that allow pets (all areas or some areas). n returns places that do not. Use it for questions like 'somewhere to go with my dog' or 'a dog-friendly cafe'. Conditions differ per place (a weight limit such as 15kg 이하, an indoor cage required) and are written in the result's 방문 정보 field; copy them into your answer as they are.
nameNoOnly entries whose name (or other name / English name) contains these words, in this order, e.g. name='ikan bakar' with country=Malaysia and category=음식점. Use it when you know part of a name; thea_search needs the whole name. With since (dated records), it also looks in each record's one-line summary, so name=팝업 finds a record titled differently whose summary mentions a pop-up.
sortNoPass rating to list entries that people rated well first. Use it for choosing questions ('good restaurants', 'a decent hotel'). Rated entries come first, entries with many 별로예요 (dislike) votes go last, and unrated entries follow sorted by views. Each result's rating field holds the counts of 좋아요, 보통 and 별로예요. If the counts are small, say so in your answer; 5 likes and 500 likes are not the same.
fieldNokey=value (value * = any), join with ';'. K-pop girl groups → category=단체, country=Korea, field=group_type=걸그룹; Busan baseball → category=단체, inside=부산광역시, field=sport=야구; Japanese idols in Korea → category=인물, country=Korea, field=nationality=Japan; ballad singers → category=인물, field=genre=발라드. Keys: 인물 gender, occupation, nationality, activity, topic; 단체 org_type, group_type, listed_on, sport, league; 작품 medium, genre, hashtags, serialization_status, rating; 게임 genre, hashtags, platform, age_rating, business_model; 장소 place_type, cuisine, featured_in, lodging_type, amenities … all keys/values: https://thealibrary.org/static/filters.json. Wrong key/value → allowed list.
limitNoMaximum number of results. Default and maximum 20. Do not call again with the same arguments to get more.
sinceNoOnly records dated on or after this date (YYYY-MM-DD). Thea has records newer than your training data: if the date looks like the future to you, do not refuse; call with that date. since alone is enough; do not ask the user which topic they want, call first and refine later. Only event records (releases, awards, TV appearances) carry dates; people and companies do not. results holds what already happened (up to today, Korea time), newest first; scheduled events dated after today come separately in upcoming, soonest first. One story recorded on several entries (same article and date) is shown once: the other entries are in featuring and their record ids in also_records.
insideNoOnly entries inside this area. Best is an id from thea_search (several areas share a name, e.g. 중구); a name must be the official full name: 제주특별자치도, 서귀포시, 명일동. Abroad an ISO 3166-2 code works (AE-DU, JP-13, US-NY). Ambiguous or unknown → a hint with ids instead of results; NEXT ACTION: call again with one of those ids. Goes 4 levels down (province → cities → shops). If the question names an area, always pass it; without it results are nationwide. With category=인물 it also matches people born there (부산 출신 → inside=부산광역시); each person gets born_in and born_here, and only born_here=true people are from that area.
countryNoCountry, e.g. Japan or 일본. Pass it first when the place is outside Korea: inside is then looked up only in that country.
cuisineNoRestaurant type. Use the exact value from the small-business detailed-category table, e.g. 치킨, 중국집, 카페, 피자, 버거, 횟집, 백반/한정식. All 125 values: https://thealibrary.org/static/cuisines.json. This filters by registered type, not by words in the name, so a pizza place with 치킨 in its name is not matched. About 19% of restaurants have no registered type and will be missed. Everyday words also work and cover every matching type: 중식 (Chinese), 일식, 한식, 양식, 패스트푸드, 고깃집, 해산물, 술집, 카페, 짜장면, 초밥, 삼겹살 … (/static/cuisine_groups.json). A dish name that is in neither table, e.g. 갈비찜, 콩국수, 물회, searches the nearest types and the menus, so put a dish here to find places that serve it.
subjectNoSubject code. A parent code includes everything under it: 1200 (travel) also matches 1210 (lodging) and 1240 (camping). Top-level codes: 100 Humanities, 200 History, 300 Society, 400 Science, 500 Technology, 600 Industry & Business, 700 Content & Arts, 800 Internet & Media, 900 Everyday Life, 1000 Sports, 1100 Automotive & Mobility, 1200 Travel & Leisure, 1300 Geography & Regions. Full table: https://thealibrary.org/static/subjects.json. Do not pass a subject for news or what-happened questions (use since alone): news is not a subject.
categoryNoWhat kind of thing. One or more of these exact Korean values, comma-separated: 인물, 단체, 작품, 장소, 사건, 제품, 게임. Any other value (restaurant, 음식점, cafe) is not a category: restaurants, lodging and cafes are subject codes, restaurant types are cuisine. Combined with subject it narrows the list a lot.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / cuisine / description
      Previous value: -"Restaurant type. Use the exact value from the small-business detailed-category table, e.g. 치킨, 중국집, 카페, 피자, 버거, 횟집, 백반/한정식. All 125 values: https://thealibrary.org/static/cuisines.json. This filters by registered type, not by words in the name, so a pizza place with 치킨 in its name is not matched. About 19% of restaurants have no registered type and will be missed. Everyday words also work and cover every matching type: 중식 (Chinese), 일식, 한식, 양식, 패스트푸드, 고깃집, 해산물, 술집, 카페, 짜장면, 초밥, 삼겹살 … (/static/cuisine_groups.json). A dish name that is in neither table, e.g. 갈비찜, 콩국수, 물회, searches the nearest types and the restaurants' menus (signature and full menu), so put a dish here to find places that serve it; the hint says how they matched."New value: +"Restaurant type. Use the exact value from the small-business detailed-category table, e.g. 치킨, 중국집, 카페, 피자, 버거, 횟집, 백반/한정식. All 125 values: https://thealibrary.org/static/cuisines.json. This filters by registered type, not by words in the name, so a pizza place with 치킨 in its name is not matched. About 19% of restaurants have no registered type and will be missed. Everyday words also work and cover every matching type: 중식 (Chinese), 일식, 한식, 양식, 패스트푸드, 고깃집, 해산물, 술집, 카페, 짜장면, 초밥, 삼겹살 … (/static/cuisine_groups.json). A dish name that is in neither table, e.g. 갈비찜, 콩국수, 물회, searches the nearest types and the menus, so put a dish here to find places that serve it."
    • changedInput schema / properties / inside / description
      Previous value: -"Only entries located inside this area. The most accurate value is an id returned by thea_search, because several areas can share a name (e.g. 중구). If you pass a name, use the official full name exactly: 제주특별자치도, 서귀포시, 명일동. Abroad, an ISO 3166-2 code also works (AE-DU Dubai, JP-13 Tokyo, US-NY). If the name is ambiguous or unknown you get a hint and ids instead of results; NEXT ACTION: call thea_find again with one of those ids. Containment is followed 4 levels down, so a province includes its cities and counties and the shops inside them. If the question names an area, always pass inside; without it the results are nationwide. With category=인물, inside also matches people born there (부산 출신 → inside=부산광역시, category=인물); each person gets born_in and born_here, and only born_here=true people are from that area."New value: +"Only entries inside this area. Best is an id from thea_search (several areas share a name, e.g. 중구); a name must be the official full name: 제주특별자치도, 서귀포시, 명일동. Abroad an ISO 3166-2 code works (AE-DU, JP-13, US-NY). Ambiguous or unknown → a hint with ids instead of results; NEXT ACTION: call again with one of those ids. Goes 4 levels down (province → cities → shops). If the question names an area, always pass it; without it results are nationwide. With category=인물 it also matches people born there (부산 출신 → inside=부산광역시); each person gets born_in and born_here, and only born_here=true people are from that area."
    • changedInput schema / properties / subject / description
      Previous value: -"Subject code. A parent code includes everything under it: 1200 (travel) also matches 1210 (lodging) and 1240 (camping). Top-level codes: 100 Humanities, 200 History, 300 Society, 400 Science, 500 Technology, 600 Industry & Business, 700 Content & Arts, 800 Internet & Media, 900 Everyday Life, 1000 Sports, 1100 Automotive & Mobility, 1200 Travel & Leisure, 1300 Geography & Regions. Full table: https://thealibrary.org/static/subjects.json."New value: +"Subject code. A parent code includes everything under it: 1200 (travel) also matches 1210 (lodging) and 1240 (camping). Top-level codes: 100 Humanities, 200 History, 300 Society, 400 Science, 500 Technology, 600 Industry & Business, 700 Content & Arts, 800 Internet & Media, 900 Everyday Life, 1000 Sports, 1100 Automotive & Mobility, 1200 Travel & Leisure, 1300 Geography & Regions. Full table: https://thealibrary.org/static/subjects.json. Do not pass a subject for news or what-happened questions (use since alone): news is not a subject."
  2. Changed1 schema field changed
    • changedInput schema / properties / name / description
      Previous value: -"Only entries whose name (or other name / English name) contains these words, in this order, e.g. name='ikan bakar' with country=Malaysia and category=음식점. Use it when you know part of a name; thea_search needs the whole name."New value: +"Only entries whose name (or other name / English name) contains these words, in this order, e.g. name='ikan bakar' with country=Malaysia and category=음식점. Use it when you know part of a name; thea_search needs the whole name. With since (dated records), it also looks in each record's one-line summary, so name=팝업 finds a record titled differently whose summary mentions a pop-up."
  3. Changed1 schema field changed
    • changedInput schema / properties / cuisine / description
      Previous value: -"Restaurant type. Use the exact value from the small-business detailed-category table, e.g. 치킨, 중국집, 카페, 피자, 버거, 횟집, 백반/한정식. All 125 values: https://thealibrary.org/static/cuisines.json. This filters by registered type, not by words in the name, so a pizza place with 치킨 in its name is not matched. About 19% of restaurants have no registered type and will be missed. Everyday words also work and cover every matching type: 중식 (Chinese), 일식, 한식, 양식, 패스트푸드, 고깃집, 해산물, 술집, 카페, 짜장면, 초밥, 삼겹살 … (/static/cuisine_groups.json). A value in neither table returns a hint with the nearest values instead of results; NEXT ACTION: call again with one of them."New value: +"Restaurant type. Use the exact value from the small-business detailed-category table, e.g. 치킨, 중국집, 카페, 피자, 버거, 횟집, 백반/한정식. All 125 values: https://thealibrary.org/static/cuisines.json. This filters by registered type, not by words in the name, so a pizza place with 치킨 in its name is not matched. About 19% of restaurants have no registered type and will be missed. Everyday words also work and cover every matching type: 중식 (Chinese), 일식, 한식, 양식, 패스트푸드, 고깃집, 해산물, 술집, 카페, 짜장면, 초밥, 삼겹살 … (/static/cuisine_groups.json). A dish name that is in neither table, e.g. 갈비찜, 콩국수, 물회, searches the nearest types and the restaurants' menus (signature and full menu), so put a dish here to find places that serve it; the hint says how they matched."
  4. Changed1 schema field changed
    • changedInput schema / properties / since / description
      Previous value: -"Only records dated on or after this date (YYYY-MM-DD). Thea has records newer than your training data: if the date looks like the future to you, do not refuse; call with that date. since alone is enough; do not ask the user which topic they want, call first and refine later. Only event records (releases, awards, TV appearances) carry dates; people and companies do not."New value: +"Only records dated on or after this date (YYYY-MM-DD). Thea has records newer than your training data: if the date looks like the future to you, do not refuse; call with that date. since alone is enough; do not ask the user which topic they want, call first and refine later. Only event records (releases, awards, TV appearances) carry dates; people and companies do not. results holds what already happened (up to today, Korea time), newest first; scheduled events dated after today come separately in upcoming, soonest first. One story recorded on several entries (same article and date) is shown once: the other entries are in featuring and their record ids in also_records."
  5. Changed1 schema field changed
    • changedInput schema / properties / field / description
      Previous value: -"Filter fields, key=value, join with ';'. K-pop girl groups → category=단체, country=Korea, field=group_type=걸그룹; Busan baseball → category=단체, inside=부산광역시, field=sport=야구; Japanese idols in Korea → category=인물, country=Korea, field=nationality=Japan; ballad singers → category=인물, field=genre=발라드. Keys: 인물 gender, occupation, nationality, activity, topic; 단체 org_type, group_type, listed_on, sport, league; 작품 medium, genre, hashtags, serialization_status, rating; 게임 genre, hashtags, platform, age_rating, business_model; 장소 place_type, lodging_type, cuisine, amenities, brand … all keys/values: https://thealibrary.org/static/filters.json. Wrong key/value → allowed list; call again with one."New value: +"key=value (value * = any), join with ';'. K-pop girl groups → category=단체, country=Korea, field=group_type=걸그룹; Busan baseball → category=단체, inside=부산광역시, field=sport=야구; Japanese idols in Korea → category=인물, country=Korea, field=nationality=Japan; ballad singers → category=인물, field=genre=발라드. Keys: 인물 gender, occupation, nationality, activity, topic; 단체 org_type, group_type, listed_on, sport, league; 작품 medium, genre, hashtags, serialization_status, rating; 게임 genre, hashtags, platform, age_rating, business_model; 장소 place_type, cuisine, featured_in, lodging_type, amenities … all keys/values: https://thealibrary.org/static/filters.json. Wrong key/value → allowed list."
  6. Changed1 schema field changed
    • addedInput schema / properties / name
      Added value: +{
      +  "description": "Only entries whose name (or other name / English name) contains these words, in this order, e.g. name='ikan bakar' with country=Malaysia and category=음식점. Use it when you know part of a name; thea_search needs the whole name.",
      +  "type": "string"
      +}
  7. Changed1 schema field changed
    • changedInput schema / properties / inside / description
      Previous value: -"Only entries located inside this area. The most accurate value is an id returned by thea_search, because several areas can share a name (e.g. 중구). If you pass a name, use the official full name exactly: 제주특별자치도, 서귀포시, 명일동. Abroad, an ISO 3166-2 code also works (AE-DU Dubai, JP-13 Tokyo, US-NY). If the name is ambiguous or unknown you get a hint and ids instead of results; NEXT ACTION: call thea_find again with one of those ids. Containment is followed 4 levels down, so a province includes its cities and counties and the shops inside them. If the question names an area, always pass inside; without it the results are nationwide."New value: +"Only entries located inside this area. The most accurate value is an id returned by thea_search, because several areas can share a name (e.g. 중구). If you pass a name, use the official full name exactly: 제주특별자치도, 서귀포시, 명일동. Abroad, an ISO 3166-2 code also works (AE-DU Dubai, JP-13 Tokyo, US-NY). If the name is ambiguous or unknown you get a hint and ids instead of results; NEXT ACTION: call thea_find again with one of those ids. Containment is followed 4 levels down, so a province includes its cities and counties and the shops inside them. If the question names an area, always pass inside; without it the results are nationwide. With category=인물, inside also matches people born there (부산 출신 → inside=부산광역시, category=인물); each person gets born_in and born_here, and only born_here=true people are from that area."
  8. Changed1 schema field changed
    • changedInput schema / properties / field / description
      Previous value: -"Filter fields, key=value, join with ';'. K-pop girl groups → category=단체, country=Korea, field=group_type=걸그룹; Busan baseball → category=단체, inside=부산광역시, field=sport=야구; Japanese idols in Korea → category=인물, country=Korea, field=nationality=Japan; ballad singers → category=인물, field=genre=발라드. Keys: 인물 gender, occupation, nationality, activity, topic; 단체 org_type, group_type, listed_on, sport, league; 작품 medium, genre, hashtags, serialization_status, rating; 게임 genre, hashtags, platform, age_rating, business_model; 장소 place_type, lodging_type, cuisine, amenities, pet … all keys/values: https://thealibrary.org/static/filters.json. Wrong key/value → allowed list; call again with one."New value: +"Filter fields, key=value, join with ';'. K-pop girl groups → category=단체, country=Korea, field=group_type=걸그룹; Busan baseball → category=단체, inside=부산광역시, field=sport=야구; Japanese idols in Korea → category=인물, country=Korea, field=nationality=Japan; ballad singers → category=인물, field=genre=발라드. Keys: 인물 gender, occupation, nationality, activity, topic; 단체 org_type, group_type, listed_on, sport, league; 작품 medium, genre, hashtags, serialization_status, rating; 게임 genre, hashtags, platform, age_rating, business_model; 장소 place_type, lodging_type, cuisine, amenities, brand … all keys/values: https://thealibrary.org/static/filters.json. Wrong key/value → allowed list; call again with one."
  9. Changed1 schema field changed
    • changedInput schema / properties / field / description
      Previous value: -"Filter fields, key=value, several joined with ';'. Korean girl groups → category=단체, country=Korea, field=group_type=걸그룹; Busan baseball team → category=단체, inside=부산광역시, field=sport=야구; ballad singers → category=인물, field=genre=발라드 (their albums' genre). Keys: 인물 gender, occupation, activity, topic, hashtags; 단체 org_type, group_type, listed_on, sport, league; 작품 medium, genre, hashtags, serialization_status, rating; 게임 genre, hashtags, platform, age_rating, business_model; 장소 place_type, lodging_type, cuisine, amenities, pet … all keys and values: https://thealibrary.org/static/filters.json. A wrong key or value returns the allowed list; NEXT ACTION: call again with one of them."New value: +"Filter fields, key=value, join with ';'. K-pop girl groups → category=단체, country=Korea, field=group_type=걸그룹; Busan baseball → category=단체, inside=부산광역시, field=sport=야구; Japanese idols in Korea → category=인물, country=Korea, field=nationality=Japan; ballad singers → category=인물, field=genre=발라드. Keys: 인물 gender, occupation, nationality, activity, topic; 단체 org_type, group_type, listed_on, sport, league; 작품 medium, genre, hashtags, serialization_status, rating; 게임 genre, hashtags, platform, age_rating, business_model; 장소 place_type, lodging_type, cuisine, amenities, pet … all keys/values: https://thealibrary.org/static/filters.json. Wrong key/value → allowed list; call again with one."
  10. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description supplies the operationally important traits: hard cap of 20 results with no pagination, results/upcoming/featuring/also_records partitioning, deduplication of the same article across entries, ambiguous-area responses that return hint ids rather than results, and a stated ~19% miss rate for restaurants without a registered cuisine type. These are failure modes an agent cannot infer from 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.

Conciseness4/5

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

Purpose is front-loaded in the first sentence and the rules are short, numbered, and each carries a distinct decision. A few lines are duplicated from structured fields ('Never repeat a call with the same arguments' also appears under limit; subjects.json is linked twice), costing a little efficiency but not readability.

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, zero-required, no-output-schema tool, the description covers the decision path: which filters to combine, what happens on ambiguous areas, what the result buckets mean, and where to go next (thea_entry with an id). Nothing needed 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.

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 earns an increment by adding cross-parameter semantics the schema does not state, notably rule 2 (subject 920 returns restaurant-operating companies unless category=장소) and rule 4 (since + inside and deliberately no subject for news). Some content is redundant with the per-parameter schema text, e.g. the inside 'pass it when an area is named' rule and the subjects.json URL, so it stops short of a full 5.

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?

Opens with a specific verb+resource and an explicit scope: 'Browse by conditions when you have no name,' immediately contrasting with thea_search by name. The two example questions ('camping YouTubers who posted a new video recently', 'hotels in 서귀포') make the resource domain concrete.

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?

The six numbered rules give explicit when/when-not guidance: rule 1 forces inside for area questions, rule 2 handles the subject 920 restaurant-company overlap by pointing at category=장소, rule 4 forbids subject for news and says since alone suffices, rule 6 routes deep dives to thea_entry instead of re-searching. Sibling alternatives (thea_search for full names, thea_entry for records) are named with the exact condition that selects each.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources