Bareun MCP cookbook: what to do after you connect
Once you have connected the Bareun MCP server to an AI tool, what can you ask it to do? This document shows use cases with responses we actually got by asking. There are no made-up examples.
Connecting takes one address
{
"mcpServers": {
"bareun": {
"url": "https://api.bareun.ai:443/mcp",
"headers": { "api-key": "YOUR_API_KEY" }
}
}
}
For how to register it in each tool, see Registering in AI tools. You can get an API key for free at bareun.ai.
Three places where AI falls short in Korean
AI language models handle Korean well, but there are three things they structurally cannot do. Every Bareun MCP use case is about filling one of these three.
| What it can't do | Why | Tool that fills the gap |
|---|---|---|
| Break characters into jamo | A model handles characters whole, so it cannot check final-consonant or vowel conditions | search_dict |
| Cite the basis for a fix | It says "I fixed it because it sounded awkward," but it makes up which rule applies | correct_grammar |
| Tell apart different meanings of the same characters | It only guesses from the surrounding context and cannot attach a dictionary sense number | analyze_syntax (with_sense) |
Use case 1: Rhyme dictionary, finding words that go with the one you have
When you write lyrics, poems, or ad copy, you need "words that rhyme with 사랑 (love)". This is a typical thing AI cannot do on its own. If you ask a model for "200 nouns ending in ㅏㅇ", it gets a few right and then starts making words up. It has no way to take the characters apart to see what the final consonant is.
A rhyme is when the vowel and final consonant of the last syllable are the same. For "사랑" that is (ㅏ, ㅇ), and as a search_dict
pattern it is {/ㅏ/ㅇ}. A ? in front stands for any single character.
Try saying this to your agent
- "Find two-character nouns in Urimalsaem that rhyme with '사랑'"
- "I want to write lyrics that end in '바람', so gather words I can pair with it"
- "Pull every pet name ending in '-둥이' and sort them by feel"
The tighter the rhyme, the fewer the candidates. It works well to use three levels.
Two-character words whose last syllable has the same vowel and final consonant. This is the widest net.
{ "name": "search_dict",
"arguments": { "pattern": "?{/ㅏ/ㅇ}", "pos": ["명사"], "std_only": true } }
Actual response: 2,451 matches in total. Narrowed to the words with the most meanings:
사장, 사상, 고장, 대장, 구장, 도장, 반상, 대상, 관장, 단장,
가장, 경상, 대방, 부장, 개장, 경장, 계장, 고상, 구상, 기장 …
Matching the vowel of the earlier syllable too makes the rhyme stick much better. The earlier syllable is fixed to the vowel ㅏ with no final consonant (-).
{ "name": "search_dict",
"arguments": { "pattern": "{/ㅏ/-}{/ㅏ/ㅇ}", "pos": ["명사"], "std_only": true } }
Actual response: it shrinks sharply to 92 matches in total.
사장, 사상, 가장, 가상, 사랑, 사망, 사방, 가방, 자장, 마장,
사창, 하상, 가망, 사당, 차장, 바탕, 자망, 자상, 차상, 파장 …
Use this when you want to stretch a phrase out.
{ "name": "search_dict",
"arguments": { "pattern": "??{/ㅏ/ㅇ}", "pos": ["명사"], "std_only": true } }
Actual response: 5,666 matches in total. Words like 각설탕, 거울상, 그물망, and 겨드랑 come up.
Results are in Korean alphabetical order, so rare words come first
Dictionary search results are in Korean alphabetical order (가나다순), so if you take them as they are, unfamiliar words like "가앙, 각강, 간낭" show up first.
If you sort by the response's senseCount (number of meanings), most first, the usable words rise to the top.
Just add "pick mainly common words" when you talk to the agent.
The word you entered also shows up in the results (사랑 in the rich rhyme above). Just ask for it to be removed.
If there are very many candidates, the list is cut off at the front of the alphabetical order. The response's truncated field tells you
that, and totalMatched gives the exact total even when truncated. In that case,
narrow the conditions (match the earlier vowel too, or specify the number of characters).
Loosening the final consonant
If you insist on exactly the same final consonant, you run out of candidates. ㅇ, ㄴ, and ㅁ are all nasal sounds, so swapping them still sounds close to the ear. You can match several jamo at once with square brackets.
{ "name": "search_dict",
"arguments": { "pattern": "*{/ㅏ/[ㅇㄴㅁ]}", "pos": ["명사"], "std_only": true } }
Picking out only the one-character words from the actual response gives this.
간, 감, 강, 깐, 깡, 난, 남, 낭, 단, 담, 당, 딴, 땀, 땅,
란, 랑, 만, 맘, 망, 반, 밤, 방, 빵, 산, 삼, 상, 쌈, 쌍 …
The search collects all the candidates, and the model chooses which fit.
Use case 2: Correction, answering what was fixed and why with rule citations
When you ask AI to fix your spelling, it rewrites the whole sentence. The style changes, and if you ask about a fixed spot, it answers with something like "It sounded awkward." If you ask for the rule, it makes up a plausible-looking number.
correct_grammar points only at the spots it fixed and attaches the Hangul orthography (Hangul Matchumbeop) article as the basis.
Cleaning up speech recognition and subtitle scripts
Scripts transcribed from meeting recordings and auto-generated subtitles come with the word spacing completely collapsed.
Actual call and response
{ "name": "correct_grammar",
"arguments": { "text": "회의록초안을공유드립니다내일까지검토부탁드리겠습니다" } }
Original: 회의록초안을공유드립니다내일까지검토부탁드리겠습니다
Corrected: 회의록 초안을 공유드립니다. 내일까지 검토 부탁드리겠습니다.
| Fixed spot | Result | Type |
|---|---|---|
| Whole sentence | 회의록 초안을 공유드립니다 내일까지 검토 부탁드리겠습니다 | Word spacing |
| 공유드립니다 | 공유드립니다**.** | Punctuation |
| 부탁드리겠습니다 | 부탁드리겠습니다**.** | Punctuation |
The basis that came with it:
- 문장의 각 단어는 띄어 씀을 원칙으로 한다. (한글맞춤법, 제1장 총칙, 제2항) (Each word in a sentence is written separately in principle. Hangul Orthography, Chapter 1 General Rules, Article 2)
- 종결 어미를 사용한 서술, 명령, 청유 등을 나타내는 문장의 끝에 마침표를 사용합니다. (한글맞춤법, 제6장 그 밖의 것, 부록, 문장 부호, 마침표, 물음표) (Use a period at the end of a sentence that expresses a statement, command, or suggestion with a sentence-final ending. Hangul Orthography, Chapter 6 Other Matters, Appendix, Punctuation, Period and Question Mark)
While restoring the word spacing, it also found the sentence boundary and inserted a period. A transcribed script has no punctuation at all, so this part takes a lot of manual work.
Reviewing a script written by AI
Writing a first draft with AI and having a person polish it has become common. But Korean written by AI still has word spacing errors. If you have the same model review it, it is lenient with its own output and lets them pass.
Actual call and response
{ "name": "correct_grammar",
"arguments": { "text": "이 기능은 사용자로 하여금 보다 나은 경험을 제공할수 있도록 도와줍니다." } }
Corrected: 이 기능은 사용자로 하여금 보다 나은 경험을 제공할 수 있도록 도와줍니다.
· 제공할수 → 제공할 수 (word spacing)
Basis: 문장의 각 단어는 띄어 씀을 원칙으로 한다. (한글맞춤법, 제1장 총칙, 제2항) (Each word in a sentence is written separately in principle. Hangul Orthography, Chapter 1 General Rules, Article 2)
It fixed only one spot and did not touch a single character of the rest of the sentence. This matters in editing work where you have to preserve the style of the manuscript.
Try saying this to your agent
- "Check the spelling of this draft of the meeting minutes, and tell me which rule applies to each fix"
- "Review the text you just wrote with Bareun and put only the places to fix in a table"
- "Correct the subtitle file sentences one line at a time and show them next to the originals"
Use case 3: Homonyms, so search and classification don't go wrong
When you search or classify internal documents with AI, different meanings of the same characters get mixed in.
Search for "배 export results" and ships, pears, and bellies all come up together. All three have the part of speech NNG, so
morphological analysis alone cannot tell them apart.
If you turn on with_sense in analyze_syntax, each morpheme gets a dictionary sense number (superscript number) and a definition.
Actual call and response
{ "name": "analyze_syntax",
"arguments": { "text": "회사 앞 다리 근처에서 다리를 다쳤다.", "with_sense": true } }
| Morpheme | Sense number | Probability | Definition |
|---|---|---|---|
| 다리 | __005 | 0.45 | 물을 건너거나 … 건너다닐 수 있도록 만든 시설물 (a structure built so that people can cross water: a bridge) |
| 다리 | __001 | 0.91 | 사람이나 동물의 몸통 아래 붙어 있는 신체의 부분 (the part of the body attached below the torso of a person or animal: a leg) |
It separated the same characters in the same sentence into different meanings. The first is 다리 (bridge, 橋), and the second is 다리 (leg, 脚).
This lets you index documents by meaning, not by characters. A document indexed as "다리 (bridge)" will not show up in searches about injuries.
Try saying this to your agent
- "In these documents, sort out by sentence which meaning '배' is used in"
- "In the meeting minutes, mark whether '대리' is a job grade or the act of acting on someone's behalf"
- "I'm building a search index, so extract each noun with its dictionary sense number attached"
This is a beta feature: look at the probability too
Sense disambiguation is beta and is sometimes wrong. The probability in the response (probability) tells you how reliable it is.
In fact, if you analyze "이번 사업의 눈은 눈이 내리기 전에 끝내는 것이다" (The key point of this project is to finish before it snows), it attaches the body-part 눈 (eye) to the first 눈 (key point) with a probability of 0.25. A low value is the signal that "it was not confident."
As a practical rule, use it as is at 0.9 or above, and have a person check below 0.5. The limits are covered in the Homonym sense disambiguation API.
Use case 4: YouTube creators, from subtitles to hashtags
To upload one video, you clean up subtitles, decide on a title, and write a description and hashtags. AI helps well with writing the script, but tasks that need Korean fixed at the character level are blocked exactly as in the three cases above. Let's follow along in editing order.
1) Cleaning up auto-generated subtitles
YouTube auto-generated subtitles transcribe speech as is, so the word spacing collapses and there is no punctuation.
You need to fix only the word spacing while leaving the speaking style (-요, -는데요) as it is, but if you leave it to AI,
it rewrites the sentence and the speaker's style disappears.
Actual call and response
{ "name": "correct_grammar",
"arguments": { "text": "오늘은요 제가 진짜 오랜만에 카메라를들고 나왔는데요 날씨가너무좋아서" } }
Corrected: 오늘은요 제가 진짜 오랜만에 카메라를 들고나왔는데요 날씨가 너무 좋아서
It left the speaking style as it was, such as "오늘은요" and "나왔는데요", and only separated the parts that were stuck together.
One of the bases that came with it is this.
- 보조용언이 결합된 모양과 비슷하지만, 사전에 등재된 용언은 붙여 쓴다. (한글맞춤법, 제5장 띄어쓰기, 제2절 고유 명사 및 전문 용어, 제43항) (Forms that resemble an auxiliary predicate combination but are predicates registered in the dictionary are written together. Hangul Orthography, Chapter 5 Word Spacing, Section 2 Proper Nouns and Technical Terms, Article 43)
This is why it joined "들고 나왔는데요" into "들고나왔는데요". You can confirm from the basis that word spacing correction does not always separate, and joins words too when the rules say so.
Fixed channel phrases also often come stuck together.
Original: 구독과좋아요 알림설정까지 부탁드리겠습니다
Corrected: 구독과 좋아요 알림 설정까지 부탁드리겠습니다.
Try saying this to your agent
- "Correct only the dialogue in this subtitle file and leave the timecodes alone"
- "Keep the speaking style and fix only the word spacing"
- "Show the fixed spots in a table next to the originals"
2) Pulling hashtags from the script
If you pick tags for the video description by hand, you miss some. If you run morphological analysis on the script and count only nouns, the things mentioned most rise to the top.
Actual response
This is the result of analyzing a script about a Seongsu-dong cafe tour (6 sentences) and counting only common nouns and proper nouns.
#카페(5) #성수동(3) #투어(2) #티라미수(2) #서울(1) #상권(1)
#디저트(1) #커피(1) #베이글(1) #맛집(1) #웨이팅(1)
"성수동" is caught as a proper noun, so a location tag comes out automatically. Words like 오늘, 요즘, and 정도
are also caught as nouns, so use only the ones that appear two or more times, or follow up with the agent: "Pick only the ones
related to the video's topic."
3) Naming segments and channels
Series segment names are more memorable if they share the same shape. Gathering words that end in "-지기" gives candidates like these.
{ "name": "search_dict",
"arguments": { "pattern": "지기", "anchor": "suffix", "pos": ["명사"], "std_only": true } }
Actual response: 204 matches in total. Words like 등대지기, 창고지기, and 문지기 share the thread of "someone who keeps or guards something," and that is visible at a glance.
You can also check whether the name you want to coin is already an existing word. If the meanings overlap, it gets mixed up with unrelated results in search.
{ "name": "search_dict",
"arguments": { "pattern": "온다감", "anchor": "word", "count_only": true } }
The actual response is 0 matches. It is a new word that is not in Urimalsaem, so it will not collide with an existing word.
Try saying this to your agent
- "Gather words ending in '-지기' and make candidate segment names"
- "Check whether this channel name is an existing word in the dictionary"
- "I want my video title to rhyme, so find two-character words that sound like '먹방'"
How to read the results
These are values the agent can quote directly when it shows the basis for its answer.
| Tool | Field | What it is for |
|---|---|---|
search_dict | totalMatched | Total number of matches. This number is accurate even if the list is truncated |
search_dict | senseCount | Number of meanings. The higher it is, the more common the word, so it makes a good sort key |
search_dict | scanned | Number of dictionary entries scanned. The basis for "a full search of Urimalsaem" |
correct_grammar | revisedBlocks | Fixed spots and their types. Use it to build a comparison table with the original |
correct_grammar | helps[].ruleArticle | Hangul orthography article. Quote it directly as the basis for copyediting |
analyze_syntax | sense.probability | Sense selection probability. If it is low, a person should check |
Further reading
- MCP server overview and tool list — Full inputs and options for the six tools
- Using phoneme search — More use cases for jamo search (research on irregular conjugation, initial-consonant quizzes, dictionary auditing)
- Homonym sense disambiguation API — Accuracy and limits of sense disambiguation
Frequently asked questions
Q. How is this different from just asking the AI?
A. There are three differences. First, tasks that require breaking characters into jamo, such as rhymes and final consonant conditions, are structurally impossible for the model. Second, the model makes up the rule articles that justify a correction, but Bareun attaches the actual Hangul orthography article. Third, it attaches a dictionary sense number to different meanings of the same characters.
Q. There are too many candidates when I look for a rhyme.
A. The tighter the condition, the fewer the results. Matching only the last syllable gives 2,451 matches, but matching the earlier syllable's vowel too
cuts it to 92. Conversely, if you run out of candidates, loosen the final consonant by grouping similar sounds, like [ㅇㄴㅁ].
Q. Where are the rule articles in the correction result?
A. They are in the response's helps. Each fixed spot links through helpId to the rule that was applied,
and each rule contains an explanation (comment), an article (ruleArticle), and examples (examples).
Q. The sense disambiguation was wrong.
A. It is a beta feature and is sometimes wrong. Look at the probability in the response too. If the probability is below 0.5, the model was not confident, so it is better to have a person check.
Q. If I fix YouTube subtitles, won't the speaking style change too?
A. No. correct_grammar fixes only the places where spelling or word spacing is off.
It leaves speaking styles such as "오늘은요" and "나왔는데요" alone and only separates the parts that were stuck together. That is the difference from having AI
rewrite the whole thing.
Q. Does the AI pick these tools on its own?
A. Generally, yes. It picks correct_grammar for spelling and word spacing requests, and search_dict for final consonant or ending-sound
conditions. To be sure, say something like "correct it with Bareun" or "look it up in Urimalsaem."