writemoa
Allows importing recent public posts from a Naver blog (up to 30 posts, skipping already imported posts) so the server can analyze the user's writing style and build a style guide.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@writemoa내 네이버 블로그에서 최근 글 10편 가져와서 내 문체 배워 줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
내글모아 (writemoa)
내가 쓴 글을 분석해, AI가 블로그나 글을 내 문체로 쓰게 돕는 무료 MCP 서버
만든 곳: 노드모아 (nodemoa.com) — 작은 회사와 현장을 위한 앱을 만듭니다. 무료 · MIT 라이선스 · 넣은 글은 내 컴퓨터에 저장
AI에게 블로그 글을 맡기면 맞는 말인데 「내 글 같지」가 않습니다. 말끝도, 문장 길이도, 줄 바꾸는 버릇도 다르기 때문입니다. 내글모아는 내가 이미 쓴 글에서 그 버릇을 숫자와 예문으로 정리한 문체 안내서를 만들고, AI가 쓴 초안을 내 글과 견주어 무엇이 다른지 짚어 줍니다.
MCP가 뭔가요? AI 프로그램(Claude 등)에 도구를 붙이는 표준 방식입니다. 내글모아를 붙이면 AI가 대화 중에 「내 글 넣기 · 문체 안내서 읽기 · 초안 점검」을 스스로 부릅니다. 내 컴퓨터에서 도는 도구라 Claude 데스크톱 앱 · Claude Code 처럼 컴퓨터에 설치하는 프로그램에서 씁니다. claude.ai 웹 · 휴대폰 앱에서는 쓸 수 없습니다.
이렇게 씁니다
AI에게 평소 말로 시키면 됩니다. 아래는 이 저장소의 예시 글 세 편(examples/)으로 실제로 돌린 결과입니다.
1. 내 글을 넣습니다(처음 한 번).
🙋 내 네이버 블로그 blog.naver.com/내아이디 에서 최근 글 10편 가져와서 내 문체 배워 줘
네이버 블로그가 아니면 글을 붙여 넣고 「이 글 내 글모음에 넣어 줘」 라고 하면 됩니다. 3편이 모이면 분석은 저절로 됩니다.
글 3편을 분석했습니다.
- 말투: 합니다체 89% · 해요체 11%
- 문장 평균 31.7자 · 글 평균 223자(공백 뺌) · 짧은 줄 0%
- 버릇(1,000자에 몇 번): 물음표 ? 4.5번, 쉼표 , 4.5번
- 종류: 블로그(정보형) 3편 ✓2. 쓸 내용과 사실을 주고 맡깁니다.
🙋 프린터 잉크 오래 쓰는 법을 내 문체로 블로그 글 써 줘. 사실: 초안 모드로 인쇄하면 잉크가 덜 듦, 일주일에 한 번은 인쇄해야 헤드가 안 막힘
AI가 내 문체 안내서를 읽고 초안을 쓴 뒤, 스스로 점검합니다. 처음 쓴 초안(「~에 대해 알아보겠습니다」, 굵은 소제목, 느낌표가 들어간 흔한 AI 글)을 점검하면 이렇게 나옵니다.
비교 기준: 내 글 전체
초안: 181자(공백 뺌), 문장 7개 · 평균 28.6자, 말투 합니다체 86% · 해요체 14%
고칠 점:
- 줄 길이: 초안 평균 38.7자 · 내 글 57.9자 → 조금 더 길게 쓰세요.
- 줄바꿈: 짧은 줄이 초안 33% · 내 글 0% → 줄을 덜 나누고 이어 쓰세요.
- 느낌표 !: 내 글에서는 거의 안 쓰는데 초안에 2번 → 빼세요.
- 마크다운(**굵게** · ## 제목): 내 글에서는 거의 안 쓰는데 초안에 2번 → 빼세요.
- AI 투 말: 알아보겠습니다(1), 결론적으로(1), 도움이 되셨으면(1) — 내 글에서는 드문 말입니다. 내 말로 바꾸세요.AI는 짚은 곳을 고쳐 한두 번 더 점검하고, 고칠 점이 거의 없어지면 최종 글을 보여 줍니다.
3. 종류가 정해진 글은 종류를 붙입니다.
🙋 같은 내용으로 사무실 공지 써 줘
공지 · 업무 메일 · 보도자료처럼 형식이 정해진 글은 그 종류의 기본(공지는 합니다체 · 일시 · 문의처 …)을 먼저 지키고, 거기에 내 버릇을 입힙니다.
Related MCP server: write-like-me-mcp
처음 쓰는 분 — 설치부터 첫 글까지
컴퓨터에 프로그램을 두 개 설치하고, 설정 파일에 몇 줄 붙여 넣으면 끝납니다. 10분쯤 걸립니다.
① Claude 데스크톱 앱 설치 — https://claude.ai/download 에서 받아 설치하고 로그인합니다. (claude.ai 웹사이트나 휴대폰 앱에서는 내글모아를 쓸 수 없습니다.)
② uv 설치 — 내글모아를 실행해 주는 작은 도구입니다.
맥: 「터미널」 앱을 열고 아래를 붙여 넣은 뒤 Enter
curl -LsSf https://astral.sh/uv/install.sh | sh윈도우: 시작 메뉴에서 「PowerShell」을 열고 아래를 붙여 넣은 뒤 Enter
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
끝나면 같은 창에서 아래를 쳐서 나오는 경로를 적어 둡니다(③에서 씁니다).
맥:
which uvx→ 예:/Users/내이름/.local/bin/uvx윈도우:
where.exe uvx→ 예:C:\Users\내이름\.local\bin\uvx.exe
③ Claude에 연결
Claude 데스크톱 앱에서 설정 → 개발자 → 설정 편집을 누르면
claude_desktop_config.json파일이 열립니다.파일이 비어 있으면 아래를 통째로 붙여 넣고,
"command"자리에 ②에서 적어 둔 경로를 넣습니다(윈도우는\를\\로 두 번).{ "mcpServers": { "writemoa": { "command": "/Users/내이름/.local/bin/uvx", "args": ["--from", "https://github.com/nodemoa/writemoa/releases/download/v0.3.0/writemoa-0.3.0-py3-none-any.whl", "writemoa"] } } }이미 다른 내용이 있으면
"mcpServers": { … }안에"writemoa": { … }한 덩어리만 쉼표로 이어 넣습니다.저장한 뒤 Claude를 완전히 종료했다가 다시 켭니다(맥: 메뉴 막대의 Claude → 종료, 윈도우: 작업 표시줄 오른쪽 아이콘 → 종료). 창만 닫으면 적용되지 않습니다.
④ 확인 — 대화창 아래 도구 단추를 눌러 「writemoa」가 보이면 연결된 것입니다.
⑤ 첫 마디 — 「내 네이버 블로그 blog.naver.com/내아이디 에서 글 10편 가져와서 내 문체 배워 줘」. 처음 도구를 쓸 때 「이 도구를 써도 될까요?」 하는 창이 뜨면 항상 허용을 누르면 다음부터 묻지 않습니다.
익숙한 분
Claude Code:
claude mcp add writemoa -- uvx --from https://github.com/nodemoa/writemoa/releases/download/v0.3.0/writemoa-0.3.0-py3-none-any.whl writemoa그 밖의 MCP 프로그램(Cursor 등): 명령
uvx, 인자--from <위 휠 주소> writemoa새 판: 주소의
0.3.0두 곳을 Releases 의 새 판 번호로 바꿉니다.저장 위치:
~/.writemoa/<문체 묶음>/(WRITEMOA_HOME으로 바꿈). 글은samples/0001.txt꼴, 안내서는guide.md·guide-<종류>.md라 직접 열어 봐도 됩니다.문체 묶음(style): 회사 블로그와 개인 블로그처럼 사람 · 용도가 다르면 「회사용 문체로 넣어 줘」 처럼 나눕니다. 글 종류(공지 · 메일 …)는 묶음이 아니라 kind 로 나눕니다.
ChatGPT는 지금 인터넷 주소가 있는 서버형 MCP만 연결할 수 있어 아직 쓸 수 없습니다.
도구 목록
도구 | 하는 일 |
| 내가 쓴 글 한 편 넣기(100자 이상, 종류는 선택) |
| 내 네이버 블로그 최근 공개 글 가져오기(최대 30편, 이미 있는 글은 건너뜀) |
| 넣은 글 목록(번호 · 종류 · 제목 · 글자 수) |
| 넣은 글 한 편 보기 |
| 넣은 글 지우기 |
| 글 종류 바꾸기 |
| 글 종류 열 가지 |
| 내 문체 요약 보기 |
| 글 쓰기 전에 읽는 문체 안내서(종류별) |
| 초안을 내 글과 견주어 고칠 점 알려 주기(제목은 따로 받아 본문 수치에서 뺌) |
| 문체 묶음 목록(회사용 · 개인용처럼 나눈 경우) |
| 내글모아 · 노드모아 소개 |
프롬프트 write_in_my_style(주제 · 종류 · 사실 · 문체 묶음)도 들어 있습니다.
잘 쓰는 법 — 이것만은 지키세요
내 글만, 3편 이상. 남의 글을 넣으면 사칭 · 표절이 됩니다(내글모아는 블로그 주인이 본인인지 알 수 없습니다). 5~10편이면 충분하고, 최근 글일수록 지금 내 문체에 가깝습니다.
종류가 섞이면 넣을 때 종류를 말해 주세요. 블로그 글 사이에 공지 · 업무 메일이 섞이면 「이건 공지야」 라고 알려 주는 것이 가장 정확합니다. 말하지 않으면 확실할 때만 짐작하고, 아니면 「종류 미정」으로 둡니다.
사실은 직접 주세요. 가격 · 날짜 · 제품 이름 · 출처는 내가 준 것만 쓰도록 되어 있습니다. 안 주면 AI가 비워 두고 묻습니다.
점검은 한두 번이면 충분합니다. 숫자를 억지로 맞추다 보면 글이 어색해집니다. 마지막에는 꼭 직접 소리 내어 읽어 보세요.
옛 글을 그대로 옮기지 마세요. 점검이 옛 글과 똑같은 문장을 찾아 줍니다. 같은 문장이 많으면 검색에서 중복 글로 보일 수 있습니다(늘 쓰는 인사 · 맺음말은 괜찮습니다).
네이버 비공개 · 이웃 공개 글은 못 가져옵니다. 그런 글은 복사해서 붙여 넣으세요.
새 대화에서도 그대로입니다. 넣은 글과 분석은 내 컴퓨터에 남아 있어, 다음에는 「내 문체로 써 줘」 만 하면 됩니다.
그냥 AI에게 내 글 몇 편 보여 주면 되지 않나요?
그것도 됩니다. 다만 그렇게 하면 이런 일이 자주 생깁니다.
그냥 보여 줄 때 | 내글모아를 쓸 때 |
말투가 한두 문단 지나면 「~합니다」 같은 AI 말투로 돌아감 | 다 쓴 뒤 |
「다양한 · 효과적으로 · 알아보겠습니다」 같은 AI 티 나는 말이 섞임 | 내 글에 없는 AI 투 말 · 과장된 홍보 말을 찾아 줌 |
보여 준 글의 문장을 그대로 가져다 씀 | 옛 글과 똑같은 문장을 찾아 줌(같은 문장이 많으면 검색에서 중복 글로 보일 수 있음) |
Claude 프로젝트 · 스타일에 넣어 두면 그 안에서는 되지만, 쓰는 AI 프로그램마다 따로 넣어야 함 | 한 번 넣어 두면 연결한 프로그램 어디서나 씀 · 네이버 블로그에서 바로 가져옴 |
블로그 · 공지 · 업무 메일을 한데 섞어 배움 | 글 종류별로 따로 배우고, 종류마다 지켜야 할 기본(공지의 문의처 등)도 점검 |
무엇을 재나요
내 글 3편 이상(많을수록 정확)에서:
말투 — 해요체 · 합니다체 · ~다 · 반말 · 음슴체(~했음) · 개조식(~함 · ~됨) 비율, 그리고 ~잖아요 · ~더라고요 · ~거든요 같은 끝말
글 모양 — 문장 길이 · 줄 길이 · 한 문장을 여러 줄로 나눠 쓰는지 · 문단 수 · 글 길이
버릇 — 느낌표 · 물음표 · 말줄임 · 물결 · ㅋㅋ · ㅎㅎ · 이모지 · 해시태그 · 쉼표를 1,000자에 몇 번 쓰는지(가격의 쉼표, 「10시~6시」의 물결은 빼고 셈)
낱말 — 자주 쓰는 부사 · 이음말(막상 · 사실 · 그래서 …), 의성어 · 의태어(쏙 · 톡톡 · 보송보송), 독자를 부르는 말(여러분 · 이웃님), 「저 · 제가」, 돈 표기(3만 원 / 30,000원)
처음과 끝 — 제목 · 첫 줄 · 끝 줄. 여러 글에 되풀이되는 인사는 「늘 쓰는 첫 줄」로 따로 알려 줍니다
한국 블로그는 한 문장을 여러 줄로 나눠 쓰는 경우가 많아, 내글모아는 줄을 이어 문장을 다시 만든 뒤에 말끝을 봅니다.
글 종류
같은 사람도 블로그와 공지, 업무 메일의 문체가 다릅니다. 그래서 글마다 종류를 두고, 같은 종류 글이 2편 이상이면 그 종류만의 안내서를 따로 만듭니다.
아이디 | 종류 | 안내서에 붙는 기본 | 점검: 꼭 있어야 하는 것 |
| 블로그(정보형) | 검색 낱말을 넣은 제목, 공감 → 소제목 → 정리, 네이버에서는 마크다운을 쓰지 않음 | — |
| 블로그(후기 · 리뷰형) | 사실 먼저, 불편 → 써 보니 → 장단점 → 누구에게, 대가를 받았으면 「광고 · 협찬」을 제목이나 첫 부분에(공정위 추천 · 보증 심사지침) | 가격(또는 무료) |
| 에세이 · 칼럼 | 경험 → 생각 → 여운, 소제목보다 문단 흐름 | — (해시태그는 짚음) |
| 논문 · 연구 보고서 | 학술 평서체, 주장마다 출처, 용어 정의, 감정 표현 · 구어 금지 | 근거 · 출처(저자, 연도) |
| 업무 문서(기획서 · 업무 보고 · 회의록) | 개조식, 결론 먼저, 날짜 · 담당 · 기한 · 수치 | 날짜 · 기한 |
| 공지 · 안내문 | 합니다체, 일시 · 장소 · 대상 · 내용 · 문의처 | 날짜 · 시간, 문의처 |
| 업무 이메일 · 메시지 | 인사 → 용건 → 내용 → 요청 · 기한 → 맺음 | 받는 사람 · 인사, 맺음말 |
| SNS 짧은 글 | 짧게, 첫 줄에서 눈길, 광고 표시 | — (15줄 넘으면 짚음) |
| 강의 · 설명글 | 질문으로 열고 단계별로, 예시 · 비유, 끝에 정리 · 퀴즈 | 예시 · 비유 |
| 보도자료 · 홍보문 | 배포 날짜, 역피라미드, 3인칭과 관계자 인용, 회사 소개 · 문의처 | 문의처 |
종류는 이렇게 정합니다.
사용자가 알려 주면(「이건 공지야」) 그대로 씁니다. 가장 정확합니다.
알려 주지 않으면 말투 비율 · 개조식과 목록 줄 · 출처 표시 · 해시태그와 이모지 · 받는 사람과 맺음말 · 종류별 낱말(1,000자당)로 짐작합니다. 1등이 2등보다 확실히 높을 때만 종류를 정하고, 아니면 「종류 미정」으로 둡니다(미정인 글도 전체 문체에는 들어갑니다). 종류를 잘못 정하면 엉뚱한 글과 견주게 되므로, 틀린 종류보다 미정을 택하도록 맞췄습니다. 새로 지은 시험 글 98편(두 묶음)에서 확실하다고 정한 45편 가운데 42편(93%)이 맞았고, 나머지 53편은 미정으로 남았습니다.
점검은 이렇게 견줍니다.
종류를 안 주면 → 내 글 전체와 견줍니다.
그 종류 내 글이 2편 이상 → 그 종류 글과 견줍니다(전부 봄).
블로그 · 후기 · SNS인데 그 종류 글이 모자라면 → 내 블로그 같은 글과 말투 · 줄바꿈 · 낱말 · 문장부호를 견줍니다(글 길이 · 문장 길이는 종류마다 달라서 뺌).
그 밖의 종류(에세이 · 강의 · 공지 · 이메일 · 논문 · 업무 문서 · 보도자료)인데 그 종류 글이 모자라면 → 그 종류의 기본을 먼저 따르고, 내가 안 쓰는 버릇(웃음 · 이모지 · AI 투 말 …)만 짚습니다.
공지 · 이메일 · 논문 · 업무 문서 · 보도자료는 정해진 말투도 점검합니다(해요체로 쓴 공지 → 「합니다체로 씁니다」).
내 글은 어디로 가나요
넣은 글과 분석 결과는 내 컴퓨터의
~/.writemoa/폴더에 저장합니다(WRITEMOA_HOME으로 바꿀 수 있음). 내글모아가 따로 어딘가로 보내지는 않습니다.다만 글을 넣고, 안내서를 읽고, 초안을 점검하는 동안 그 내용(넣은 글 · 안내서의 예문 · 초안)은 지금 쓰는 AI 서비스(Claude 등)로 전달됩니다. AI가 읽어야 쓸 수 있기 때문이고, 그 서비스의 개인정보 정책이 함께 적용됩니다.
네이버 블로그 가져오기는 공개 글을 읽기만 합니다.
글을 지우면 분석도 그 글을 빼고 다시 합니다. 글이 3편 아래로 줄면 옛 안내서도 지웁니다.
한계
형태소 분석기 없이 규칙으로 읽습니다. 그래서 명사로 끝나는 말을 반말로 보기도 합니다(「오늘 저녁은 연어.」). 수치는 「대략 이런 버릇」으로 보면 됩니다.
종류 짐작은 틀릴 수 있습니다. 확실하지 않으면 미정으로 두니, 중요한 글은 종류를 알려 주세요.
점검은 말투 · 길이 · 문장부호 · 낱말 같은 겉모습을 봅니다. 내용이 맞는지, 흐름이 자연스러운지는 직접 읽어 보고 판단해 주세요.
만든 곳 — 노드모아
노드모아 (nodemoa.com) 는 작은 회사와 현장을 위한 앱을 만듭니다.
하는 일 | |
컴퓨터 · 네트워크 기초 강좌 | |
컴퓨터 원격 상담 · 진단 · 수리 · 포맷 | |
우리 아이(반려동물) 사진 · 영상 모음 | |
현장 업무 관리 · 견적서 · 내역서 · 미수금 | |
채팅 · 메일 · 전자결재 · 출퇴근 | |
요청 접수 · 자산 · 비품 · 점검 |
내글모아가 도움이 되셨다면 GitHub 별(★)로 알려 주세요. 다른 분들이 찾는 데 큰 도움이 됩니다.
라이선스
MIT — 상업용을 포함해 자유롭게 쓰고 고치고 나눠도 됩니다. 다시 나눌 때는 저작권 표시(© 노드모아)와 MIT 허락 문구(LICENSE 파일)를 함께 남겨 주세요.
English
writemoa is a free MCP server that learns your Korean writing style from your own posts and helps AI write in your voice. It measures Korean sentence endings and speech levels, sentence/line length, line-break habits, punctuation, onomatopoeia and favorite words, builds a style guide for the AI, and checks drafts against your writing — flagging tone drift, AI-sounding or hype phrases, and sentences copied from your old posts. It keeps separate styles for ten kinds of writing (blog, review, essay, paper, work document, notice, email, SNS, lecture, press release) with the basic conventions of each.
Your writing is stored on your computer (~/.writemoa); while you write, the texts are passed to the AI service you use. Made by Nodemoa. MIT licensed.
Available Tools
12 toolsabout_writemoaCRead-only
내글모아와 만든 곳(노드모아) 소개.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered structurally. The description adds no behavioral context beyond that — nothing about what the 'introduction' contains, whether it is static, or why an agent would call it. It also does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding; front-loading is adequate since there is only one claim to make. It is concise, though arguably too terse to be informative rather than efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and zero parameters, the description carries little structural burden, and the tool's complexity is minimal. However, it still fails to say what the about-content covers or who the intended audience/purpose is, leaving the agent to guess what it gains by calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify and the baseline of 4 applies. Parameter semantics are inherently complete for a no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description ('Introduction to the place where WriteMoa was made (NodeMoa)') conveys that this tool returns background/about information, but it largely restates the name 'about_writemoa' rather than specifying what content is returned. It does not differentiate itself from sibling tools such as list_styles or get_my_style_guide, though those are clearly unrelated in intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus any alternative, no mention of prerequisites, and no indication of what an agent should do with the result. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_my_writingA
사용자가 직접 쓴 글 한 편을 넣는다. 종류를 비우면 짐작하고, 확실하지 않으면 「종류 미정」 으로 둔다(전체 문체에는 늘 들어감).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 글 종류 아이디나 이름(list_writing_kinds). 예: blog-info, 후기, 공지, 이메일, 논문. 모르면 비워 두세요. | |
| text | Yes | 사용자가 직접 쓴 글 본문(100자 이상). 남의 글은 넣지 않습니다. | |
| style | No | 문체 묶음 이름. 보통은 비워 두세요(「기본」). 회사용 · 개인 블로그용처럼 따로 둘 때만 씁니다. 글 종류(블로그 · 공지 …)는 style 이 아니라 kind 로 나눕니다. | 기본 |
| title | No | 글 제목(없으면 비움) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds one genuine behavioral fact not in the annotations or schema: an empty 'kind' triggers inference, falling back to a '종류 미정' bucket that is always folded into the overall style. It does not cover failure modes, deduplication, or what the write returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the one non-obvious default rule. No filler, though the parenthetical about the overall style is slightly compressed and could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and all four parameters are fully documented in the schema. The description supplies the remaining non-obvious rule (kind inference fallback), leaving only minor gaps like duplicate handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains kind, style, and text thoroughly (including pointing at list_writing_kinds and the kind-vs-style distinction). The description only restates the kind default behavior, so it adds little beyond the structured field — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('사용자가 직접 쓴 글 한 편을 넣는다' — adds one self-written piece), which clearly separates it from read_my_writing/list_my_writings/remove_my_writing siblings. It stops short of explicitly naming any sibling, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful in-the-moment guidance about the 'kind' field ('비우면 짐작하고, 확실하지 않으면 「종류 미정」') but never states when this tool should be chosen over alternatives such as import_my_naver_blog or set_writing_kind. Usage context is implied by the domain rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_my_styleAIdempotent
내 문체 요약을 본다(분석은 글을 넣고 뺄 때 저절로 되니 따로 부르지 않아도 됨).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | 문체 묶음 이름. 보통은 비워 두세요(「기본」). 회사용 · 개인 블로그용처럼 따로 둘 때만 씁니다. 글 종류(블로그 · 공지 …)는 style 이 아니라 kind 로 나눕니다. | 기본 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare openWorldHint=false and idempotentHint=true, so the agent already knows this is a bounded, repeatable operation. The description adds genuinely new behavior: analysis is auto-triggered on add/remove of writing. It does not state the operation is read-only, but with an output schema present, return-format disclosure is unnecessary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the primary action front-loaded and the caveat about auto-analysis parenthetically attached. Nothing is redundant, though the parenthetical slightly muddies the main statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, idempotent tool with a documented schema and an existing output schema, the description covers the essentials: what it returns and the fact that analysis happens elsewhere. The only gap is lack of explicit differentiation from sibling style tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional parameter with 100% schema description coverage, and the schema already explains the '기본' default, when to leave it blank, and the style-vs-kind distinction in detail. The description adds nothing about the parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ('내 문체 요약을 본다' – view my style summary) and importantly reconciles the misleading tool name by clarifying that the analysis itself is automatic, so this tool only retrieves the summary. It does not, however, differentiate itself from close siblings such as get_my_style_guide or list_styles, leaving the agent to guess which summary/guide tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is a partial when-not-to-use signal ('분석은 … 저절로 되니 따로 부르지 않아도 됨'), telling the agent it need not trigger analysis separately. However, no alternative tool is named and no positive condition ('call this when you want to display the user's style summary') is stated, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_draftAIdempotent
쓴 초안을 내 글과 견주어 고칠 점(말투 · 길이 · 줄바꿈 · 문장부호 · AI 티 · 그 종류에 빠진 것 · 옛 글과 똑같은 문장)을 알려 준다.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 글 종류 아이디나 이름(list_writing_kinds). 예: blog-info, 후기, 공지, 이메일, 논문. 모르면 비워 두세요. | |
| text | Yes | 점검할 초안 본문(제목은 title 에 따로) | |
| style | No | 문체 묶음 이름. 보통은 비워 두세요(「기본」). 회사용 · 개인 블로그용처럼 따로 둘 때만 씁니다. 글 종류(블로그 · 공지 …)는 style 이 아니라 kind 로 나눕니다. | 기본 |
| title | No | 초안 제목(본문에서 빼고 보려고 따로 받음) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare only openWorldHint=false and idempotentHint=true; there is no readOnlyHint, so the description carries the rest. It implies a non-mutating analysis by saying it 'tells' the user what to fix, and enumerates the analysis dimensions, but says nothing about permissions, whether the draft is stored, or performance. Useful but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core action (compare draft to my writing) before the long parenthetical checklist of dimensions. Efficient and well-ordered, though the parenthetical enumeration is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return formatting needn't be explained, and the schema fully documents the four parameters. The description explains what the analysis covers, making it complete enough for an agent to call the tool correctly; only sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all four parameters are documented in the schema (kind, text, style, title). The description only obliquely touches parameters via '그 종류에 빠진 것' (what's missing for that kind), which loosely relates to the kind parameter but adds no new syntax or constraints. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (알려 준다, 'reports') and resource (a written draft compared against the user's own writing), and even enumerates the dimensions checked (tone, length, line breaks, punctuation, AI-ness, missing elements for the kind, duplicate old sentences). This clearly distinguishes it from siblings like analyze_my_style, though that contrast is not spelled out explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied – you run it on a draft to get revision guidance – but there is no explicit when-to-use/when-not, and no routing against the closely related analyze_my_style or get_my_style_guide. An agent can infer the context but gets no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_style_guideAIdempotent
글을 쓰기 전에 읽는 내 문체 안내서. kind 를 주면 그 종류 안내서 — 그 종류 내 글이 2편이 안 되면 내 공통 버릇 + 그 종류의 기본.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 글 종류 아이디나 이름(list_writing_kinds). 예: blog-info, 후기, 공지, 이메일, 논문. 모르면 비워 두세요. | |
| style | No | 문체 묶음 이름. 보통은 비워 두세요(「기본」). 회사용 · 개인 블로그용처럼 따로 둘 때만 씁니다. 글 종류(블로그 · 공지 …)는 style 이 아니라 kind 로 나눕니다. | 기본 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare idempotentHint and openWorldHint=false, so they convey little about output. The description adds real behavioral content: the fallback rule that when fewer than 2 writings of a kind exist, it returns common habits plus the kind's basics. This conditional behavior is not in the annotations or schema and directly shapes the agent's expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, front-loading the core purpose before the conditional fallback detail. Every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover idempotency. The description supplies purpose, timing, and the important fallback branch, leaving only minor gaps such as how results relate to analyze_my_style.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both kind and style are already documented (including the note that kind is an id/name and style is normally left empty). The description clarifies that supplying kind selects the per-kind guide, adding marginal meaning over the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reading one's own style guide (문체 안내서), and specifies the branching behavior when a kind is supplied. It is clearly distinguishable from list/analyze siblings by being a retrieval-of-a-curated-guide tool. It stops short of a full 5 because it never explicitly names which sibling it complements or replaces (e.g. analyze_my_style).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening phrase '글을 쓰기 전에 읽는' establishes a clear usage moment (before writing), which is genuine context. However there are no explicit when-not conditions and no named alternatives (check_draft, analyze_my_style), so the routing decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_writingsBRead-only
넣어 둔 내 글 목록(번호 · 종류 · 제목 · 글자 수).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | 문체 묶음 이름. 보통은 비워 두세요(「기본」). 회사용 · 개인 블로그용처럼 따로 둘 때만 씁니다. 글 종류(블로그 · 공지 …)는 style 이 아니라 kind 로 나눕니다. | 기본 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe-read profile is covered. The description adds only that the result is a scoped list of the user's own writings, which is modest value; it discloses nothing about ordering, pagination, or emptiness behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource front-loaded and zero filler. It is appropriately sized, though it is terse enough that it borders on under-specification rather than being a model of informative brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and annotations cover the safety profile. With one fully-documented optional parameter, the description carries enough to call the tool correctly, missing only sibling routing guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'style' parameter is documented thoroughly in the schema, including the style-vs-kind distinction and the '기본' default. The description adds no parameter meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource (list my stored writings) and even enumerates the returned fields (number, kind, title, character count). It distinguishes itself implicitly from read_my_writing and add/remove_my_writing through the 'list' verb, but does not explicitly name or contrast with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives like read_my_writing for a single item or list_writing_kinds. The style/kind distinction lives in the schema, not in usage guidance, so an agent gets no routing help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_stylesBRead-only
만들어 둔 문체 묶음 목록(회사용 · 개인 블로그용처럼 나눠 둔 경우).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only the concept of grouped style bundles, but no additional behavioral context such as ordering, pagination, or what the listing contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that front-loads the purpose. It is appropriately sized for a simple list operation, though it omits any structural detail beyond the parenthetical example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema, and read-only annotations, the description is near complete. The only notable gap is the lack of when-to-use guidance relative to sibling list operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the description has nothing to compensate for and the schema is fully documented. Baseline 4 applies for a no-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('list' + 'styles'), and the parenthetical clarifies that styles are grouped into bundles/categories. It is distinguishable from siblings like list_writing_kinds, though it doesn't explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as get_my_style_guide or list_writing_kinds. No exclusions, prerequisites, or contexts are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_writing_kindsARead-only
글 종류 목록 — 같은 사람도 블로그 · 공지 · 이메일 · 논문의 문체가 달라 종류별로 따로 배운다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds conceptual context about why kinds are tracked but says nothing extra behaviorally (e.g. that this is a fixed/derived list, or auth needs), which is acceptable given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource first, then the reason the kinds axis exists. Efficient, though the explanatory clause is more thematic than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and with no parameters there is little else to specify. The description is adequate for a simple read-only enumerator, missing only the sibling tie-breaker against list_styles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document; the baseline of 4 applies. The description correctly implies a no-argument listing operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it lists writing kinds (글 종류 목록) and clarifies the concept by naming concrete kinds (blog, announcement, email, paper). This implicitly separates 'kinds' from the sibling list_styles, though the distinction is never stated outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The rationale ('same person's style differs per kind, so it learns separately') implies when kind-level granularity matters, but there is no explicit when-to-use instruction and no mention of the adjacent list_styles tool that an agent could easily confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_my_writingBRead-only
넣어 둔 글 한 편의 본문을 본다.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | 문체 묶음 이름. 보통은 비워 두세요(「기본」). 회사용 · 개인 블로그용처럼 따로 둘 때만 씁니다. 글 종류(블로그 · 공지 …)는 style 이 아니라 kind 로 나눕니다. | 기본 |
| writing_id | Yes | 글 번호(list_my_writings 에 나오는 숫자, 예: 3 또는 0003) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true and openWorldHint=false already tell the agent this is a safe, closed-world read, so the description's burden is light. The word "본문" (body text) usefully signals that it returns content rather than metadata, but nothing is said about behavior on a nonexistent or wrong-owner id, and the return shape is left to the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the scope-defining word (본문, 한 편) is front and center. It is arguably too terse rather than padded, so efficiency is not the issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter coverage, and safety annotations already present, most of the agent's needs are covered by structured fields. The description nonetheless omits retrieval prerequisites (id must exist / come from listing) and any error expectation, leaving it just adequate for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a thorough style explanation and the note that writing_id is the number from list_my_writings, so the schema does the heavy lifting. The description contributes no additional parameter meaning, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"넣어 둔 글 한 편의 본문을 본다" names a concrete verb (본다/read) and a concrete resource scope (a single stored writing's body), which implicitly separates it from list_my_writings (listing) and check_draft (draft review). It stops short of explicitly naming any sibling, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative is stated. The only hint that writing_id comes from list_my_writings lives in the schema, not the description, so routing guidance is absent from the text itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_my_writingADestructiveIdempotent
넣어 둔 글 한 편을 지운다(내 컴퓨터의 내글모아 폴더에서). 분석도 그 글을 빼고 다시 한다.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | 문체 묶음 이름. 보통은 비워 두세요(「기본」). 회사용 · 개인 블로그용처럼 따로 둘 때만 씁니다. 글 종류(블로그 · 공지 …)는 style 이 아니라 kind 로 나눕니다. | 기본 |
| writing_id | Yes | 글 번호(list_my_writings 에 나오는 숫자, 예: 3 또는 0003) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description earns credit for the additional non-obvious behavior: deletion happens on the local disk folder and the analysis is re-run excluding the removed writing — a cascade side effect an agent could not read off the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the destructive action and location, followed by the re-analysis consequence. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover safety and idempotency, so the description only needs the disk-location scope and the re-analysis side effect — both present. The missing piece is failure/prerequisite handling, but the essentials are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the writing_id description even points at list_my_writings for discovery, so the schema carries the parameter burden. The description adds nothing beyond the schema about writing_id or style, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (deletes one writing) and scopes it to a concrete location (the 내글모아 folder on the user's computer), which separates it from read/write siblings like add_my_writing and read_my_writing. It does not explicitly name a sibling it replaces, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g. that the writing_id must already exist, or what happens if it doesn't), and no alternatives mentioned among the many siblings. The agent must infer usage entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_writing_kindC
넣어 둔 글의 종류를 바꾼다.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | 바꿀 종류(list_writing_kinds). 「미정」 이면 종류를 비움 | |
| style | No | 문체 묶음 이름. 보통은 비워 두세요(「기본」). 회사용 · 개인 블로그용처럼 따로 둘 때만 씁니다. 글 종류(블로그 · 공지 …)는 style 이 아니라 kind 로 나눕니다. | 기본 |
| writing_id | Yes | 글 번호(list_my_writings 에 나오는 숫자, 예: 3 또는 0003) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description only restates the mutation implied by the name (바꾼다) and adds no context about reversibility, permissions, or effect on existing data, which is minimal value over the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and resource and free of filler. It is efficient, though its extreme brevity leaves clear gaps that conciseness alone cannot offset.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a mutation tool whose description is essentially a name restatement, missing usage context leaves it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so kind, style, and writing_id are all documented in the schema with usage notes (e.g., the style/kind distinction, 「미정」 clearing the kind). The description adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (바꾼다 = changes) and a specific resource (넣어 둔 글의 종류 = the kind of a stored writing), so an agent can distinguish it from read/list/remove siblings. It does not explicitly name or contrast a sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, prerequisite, or alternative guidance in the description. The only routing hint (use list_writing_kinds for kinds, 「미정」 to clear) lives in the parameter schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.1.0- First observed
about_writemoa - First observed
add_my_writing - First observed
analyze_my_style - First observed
check_draft - First observed
get_my_style_guide - First observed
import_my_naver_blog - First observed
list_my_writings - First observed
list_styles - First observed
list_writing_kinds - First observed
read_my_writing - First observed
remove_my_writing - First observed
set_writing_kind
TDQS
Scored across 12 tools
Most tools have distinct action-resource pairs, but list_styles vs list_writing_kinds and get_my_style_guide vs analyze_my_style have conceptual overlap that may cause hesitation. Descriptions largely resolve the boundaries, so only minor ambiguity remains.
Names mostly follow a readable verb_noun snake_case pattern, and singular/plural usage for read/list is consistent. However, the 'my' qualifier is applied unevenly across similar tools, and a few names like about_writemoa break the action pattern.
Twelve tools is well-scoped for a personal writing-style manager covering import, add, list, read, remove, analyze, draft checking, and guidance. Each tool appears to earn its place without excessive surface area.
The surface covers the main writing lifecycle: add/import, list, read, remove, set kind, analyze, and check drafts. Minor gaps remain, such as no tool to edit an existing writing's content/title and no CRUD for style bundles despite list_styles.
Maintenance
Related MCP Connectors
A personal RAG database you build from chat, so AI creates work that sounds like you.
Korean business record validation and workflow safety gates for AI agents.
Build a voice from your own texts, measure whether a text still sounds like you, then write in it.
AI web novel co-writer: series, characters, episodes, and quality evaluation. Korean-first.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables secure local proofreading of Korean official documents (.hwpx/.hwp) using 3-layer AI correction for spelling, grammar, and official document style. Provides 50 administrative document templates for generating standardized official correspondence without cloud dependencies or API keys.23MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to write in your personal style by learning from your local documents. It provides statistical style context for natural language rewriting, all without any data leaving your machine.3MIT

Solar Human Proofreaderofficial
FlicenseNot gradedqualityBmaintenanceEnables users to have Korean manuscripts proofread for readability while preserving facts, quotes, and the author's voice. It also provides readability scoring, original-versus-edited comparison, and style-preserving rewriting suggestions.2-- AlicenseNot gradedqualityBmaintenanceEnables automated agents and writers to check Norwegian and English prose before sending, returning concrete style findings, revision hints, and verdicts instead of authorship claims, with a no-judgment band, positive quality checks, a private local mode, and phrase-bank memory.MIT