blog-generator-mcp
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., "@blog-generator-mcpWrite a tutorial about React hooks"
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.
Blog Generator MCP
AI를 활용한 기술 블로그 자동 생성 MCP 서버입니다.
빠른 시작
1. 설치
npx blog-generator-mcp2. API 키 준비
Gemini API 키: Google AI Studio에서 발급
3. Claude Desktop 설정
~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"blog-generator": {
"command": "npx",
"args": ["-y", "blog-generator-mcp"],
"env": {
"GEMINI_API_KEY": "your-gemini-api-key",
"BLOG_SAVE_DIRECTORY": "./posts"
}
}
}
}환경변수 설명:
환경변수 | 필수 | 설명 |
| O | Gemini API 키 |
| X | 블로그 저장 경로 (기본: ./posts) |
Claude Desktop을 재시작하면 사용 준비 완료!
Related MCP server: @alog-world/mcp
사용법
기본 워크플로우
1. blog_start_draft → 초안 생성 시작
2. blog_get_status → 완료 확인
3. blog_apply_feedback → (선택) 피드백 반영
4. blog_start_review → 검수 시작
5. blog_save → 파일 저장Pro Mode 워크플로우 (v4.1)
환경에 따라 다른 방식으로 고품질 블로그 생성:
Claude Desktop/Code 환경:
Claude에게 직접 요청 → Claude가 코드 분석 + 블로그 작성 → blog_saveHTTP 모드 (서버 배포):
1. blog_start_draft_pro → Gemini 분석 → Claude API 작성
2. blog_get_status → 완료 확인
3. blog_apply_feedback_pro → (선택) 피드백 반영
4. blog_save → 파일 저장Pro Mode (v4.1)
Claude Desktop/Code 환경
Claude Desktop이나 Claude Code를 사용 중이라면 별도의 Pro Mode 도구가 필요 없습니다. 대화 중인 Claude에게 직접 요청하세요:
User: "이 코드로 블로그 써줘"
User: "<git diff 내용 붙여넣기>"
→ Claude가 직접 코드를 분석하고 블로그를 작성합니다.
→ blog_save로 저장하면 끝!장점:
API 키 불필요 (Gemini, Anthropic 둘 다)
대화 맥락을 활용한 자연스러운 글쓰기
실시간 피드백 반영
HTTP 모드 (서버 배포)
HTTP 서버로 배포하여 여러 사용자가 사용할 때는 Pro Mode 도구를 사용합니다.
아키텍처:
┌─────────────────────────────────────────────────────────────┐
│ blog_start_draft_pro │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Gemini Pro │ ──────> │ Claude API │ │
│ │ (Researcher) │ 분석결과 │ (Writer) │ │
│ │ │ │ │ │
│ │ - code_diff │ │ - 분석 기반 │ │
│ │ - dev_log 분석 │ │ - 서사적 글쓰기 │ │
│ │ - 아키텍처 해석 │ │ - 인사이트 도출 │ │
│ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘blog_start_draft_pro - Pro 초안 생성 (HTTP 모드 전용)
필수 파라미터:
{
"code_diff": "git diff 또는 변경된 코드"
}선택 파라미터:
파라미터 | 설명 | 기본값 |
| 개발자의 고민/메모/의사결정 과정 | - |
| 최우선 제약조건 (이 요청을 최우선으로 반영) | - |
| 글 스타일 |
|
| 언어 |
|
| 상세 작성 지침 | - |
| Gemini API 키 (환경변수로 대체 가능) | - |
| Anthropic API 키 (환경변수로 대체 가능) | - |
blog_apply_feedback_pro - Pro 피드백 반영 (HTTP 모드 전용)
파라미터:
{
"task_id": "Pro 작업 ID",
"feedback": "수정 요청 사항"
}HTTP 모드 환경 설정
HTTP 모드에서 Pro Mode를 사용하려면 Anthropic API 키가 필요합니다:
{
"mcpServers": {
"blog-generator": {
"command": "npx",
"args": ["-y", "blog-generator-mcp", "--http", "--port", "3000"],
"env": {
"GEMINI_API_KEY": "your-gemini-api-key",
"ANTHROPIC_API_KEY": "your-anthropic-api-key",
"BLOG_SAVE_DIRECTORY": "./posts"
}
}
}
}Pro Mode 사용 예시 (HTTP 모드)
1. blog_start_draft_pro
- code_diff: "<git diff 내용>"
- dev_log: "기존 세션 기반에서 JWT로 전환. 보안 강화가 목표..."
- request: "보안 관점에서 왜 이 방식을 선택했는지 강조"
2. blog_get_status (완료 확인)
3. blog_apply_feedback_pro (선택)
- feedback: "코드 예제에 주석을 더 추가해줘"
4. blog_save
- directory: "./posts"도구 상세 가이드
blog_start_draft - 초안 생성
필수 파라미터:
{
"input_type": "keyword",
"content": "React useEffect 훅 사용법",
"gemini_api_key": "YOUR_API_KEY"
}선택 파라미터:
파라미터 | 설명 | 기본값 |
| 글 스타일 |
|
| 언어 |
|
| Gemini 모델 |
|
| 상세 작성 지침 | - |
| 간단한 추가 요청 | - |
입력 유형 (input_type):
값 | 용도 | 예시 |
| 키워드로 글 생성 | "React hooks" |
| 코드 설명 글 | 코드 스니펫 |
| 메모를 글로 확장 | 불릿포인트 메모 |
| 개발일지 생성 | git diff 내용 |
글 스타일 (style):
값 | 설명 |
| 단계별 튜토리얼 |
| Today I Learned |
| 심층 분석 |
| 문제 해결 과정 |
사용 예시:
"React hooks에 대한 튜토리얼을 작성해줘"
→ blog_start_draft 호출:
- input_type: "keyword"
- content: "React hooks"
- style: "tutorial"
- gemini_api_key: "YOUR_KEY"blog_get_status - 상태 확인
파라미터:
{
"task_id": "작업 ID"
}응답 예시:
{
"task_id": "abc-123",
"status": "completed",
"progress": 100,
"result": {
"draft": "# React Hooks 완벽 가이드\n...",
"metadata": {
"title": "React Hooks 완벽 가이드",
"tags": ["React", "Hooks", "JavaScript"],
"estimatedReadTime": "10분"
}
}
}상태 값:
상태 | 설명 |
| 대기 중 |
| 진행 중 |
| 완료 |
| 실패 |
blog_apply_feedback - 피드백 반영
파라미터:
{
"task_id": "작업 ID",
"feedback": "코드 예제를 더 추가해주세요",
"gemini_api_key": "YOUR_KEY"
}사용 예시:
"코드 예제를 더 추가하고, 초보자도 이해할 수 있게 설명을 보충해줘"
→ blog_apply_feedback 호출:
- task_id: "이전 작업 ID"
- feedback: "코드 예제를 더 추가하고, 초보자도 이해할 수 있게 설명을 보충해주세요"blog_start_review - 검수
파라미터:
{
"task_id": "초안 작업 ID",
"focus": "all",
"gemini_api_key": "YOUR_KEY"
}검수 초점 (focus):
값 | 설명 |
| 기술적 정확성 |
| 가독성 |
| SEO 최적화 |
| 전체 검수 (기본값) |
blog_save - 파일 저장
파라미터:
{
"task_id": "작업 ID",
"directory": "./posts"
}결과:
{
"filepath": "./posts/2024-01-15-react-hooks-완벽-가이드.md"
}blog_deploy_github - GitHub 배포
파라미터:
{
"task_id": "작업 ID",
"repo": "username/blog",
"target_path": "_posts/2024-01-15-react-hooks.md",
"github_token": "YOUR_GITHUB_TOKEN"
}상세 지침 (instructions) 활용하기
instructions 파라미터 또는 instructions_file로 마크다운 파일 경로를 지정하여 AI가 따라야 할 상세한 작성 규칙을 지정할 수 있습니다.
파일로 관리하기
blog_start_draft 호출:
- input_type: "keyword"
- content: "Kubernetes 배포 전략"
- instructions_file: "./my-style-guide.md"둘 다 제공하면 병합됩니다:
- instructions_file: "./my-style-guide.md" // 기본 스타일 가이드
- instructions: "이번 글은 특히 보안에 집중해줘" // 추가 요청→ 파일 내용 + 파라미터 내용이 합쳐져서 적용됩니다.
예시: 회사 블로그 스타일 가이드
blog_start_draft 호출:
- input_type: "keyword"
- content: "Kubernetes 배포 전략"
- instructions: |
## 작성 스타일
- 경어체 사용 (~합니다, ~입니다)
- 문장은 짧고 명확하게
- 한 단락은 3-4문장 이내
## 필수 포함 섹션
1. 개요 (왜 이 주제가 중요한지)
2. 핵심 개념 설명
3. 실습 예제 (복사해서 바로 실행 가능)
4. 주의사항 및 팁
5. 마무리 및 다음 단계
## 코드 스타일
- 모든 코드 블록에 언어 명시
- 주석은 한국어로
- 실제 동작하는 완전한 예제 제공
## 타겟 독자
- 백엔드 개발 경력 1-3년차
- Docker 기본 지식 보유
- Kubernetes 입문자
## 금지 사항
- "쉽습니다", "간단합니다" 등의 표현 금지
- 불필요한 영어 표현 자제예시: TIL 스타일
instructions: |
## 형식
- 날짜와 제목으로 시작
- 배운 내용을 불릿포인트로 정리
- 실제 코드나 명령어 포함
## 톤
- 개인적이고 솔직한 톤
- 시행착오 과정도 포함
- 다음에 더 알아볼 것 메모모델 선택 가이드
모델 | 용도 | 특징 |
| 일반 용도 (기본값) | 빠른 응답, 비용 효율적 |
| 간단한 작업 | 가장 빠름 |
| 고품질 필요 시 | 복잡한 주제, 긴 글 |
| 최신 기능 | 최신 모델 |
추천:
일반 블로그 글:
gemini-1.5-flash기술 심층 분석:
gemini-1.5-pro짧은 TIL:
gemini-1.5-flash-8b
실전 예시
예시 1: 튜토리얼 작성
User: "Next.js App Router에 대한 튜토리얼을 작성해줘"
1. blog_start_draft
- input_type: "keyword"
- content: "Next.js App Router"
- style: "tutorial"
- model: "gemini-1.5-pro"
- gemini_api_key: "..."
2. blog_get_status (완료 확인)
3. blog_apply_feedback
- feedback: "서버 컴포넌트와 클라이언트 컴포넌트 차이를 더 자세히 설명해줘"
4. blog_start_review
- focus: "accuracy"
5. blog_save
- directory: "./content/posts"예시 2: 개발일지 자동 생성
User: "오늘 커밋 내용으로 개발일지 써줘"
1. blog_start_draft
- input_type: "git_push"
- content: "<git diff 또는 commit log>
- style: "til"
- gemini_api_key: "..."
2. blog_get_status → blog_save예시 3: 코드 설명 블로그
User: "이 코드를 설명하는 블로그 글을 작성해줘"
1. blog_start_draft
- input_type: "code"
- content: "<코드 내용>"
- style: "deep-dive"
- instructions: "코드의 동작 원리를 시각적으로 설명하고, 성능 관점에서 분석해줘"HTTP 서버 모드
여러 사용자가 공유하는 서버로 배포할 수 있습니다.
# HTTP 서버 시작
npx blog-generator-mcp --http --port 3000
# 헬스 체크
curl http://localhost:3000/health
# MCP 요청
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'문제 해결
"Gemini API 키가 필요합니다"
→ gemini_api_key 파라미터에 API 키를 전달했는지 확인
"작업을 찾을 수 없습니다"
→ task_id가 올바른지 확인. 서버 재시작 시 이전 작업은 유지됨
"모델을 찾을 수 없습니다"
→ 지원되는 모델명 확인: gemini-1.5-flash, gemini-1.5-pro 등
응답이 느림
→ gemini-1.5-flash 대신 gemini-1.5-flash-8b 사용
라이선스
MIT
Available Tools
10 toolsblog_apply_feedbackApply Feedback to DraftA
사용자 피드백을 초안에 반영합니다 (백그라운드 실행).
피드백 히스토리가 저장되어 이전 피드백들을 추적할 수 있습니다.
모델 선택 (model)
gemini-1.5-flash: 빠른 응답 (기본값)
gemini-1.5-pro: 고품질 피드백 반영
Args:
task_id: 피드백을 적용할 작업 ID
feedback: 수정 요청 사항
model: Gemini 모델 (기본: gemini-1.5-flash)
gemini_api_key: Gemini API 키 (없으면 GEMINI_API_KEY 환경변수 사용)
Returns:
task_id: 작업 ID
status: "pending"
message: 안내 메시지
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | 사용할 Gemini 모델 | gemini-1.5-flash |
| task_id | Yes | 피드백을 적용할 작업 ID | |
| feedback | Yes | 수정 요청 사항 | |
| gemini_api_key | No | Gemini API 키 (없으면 GEMINI_API_KEY 환경변수 사용) |
Output Schema
| Name | Required | Description |
|---|---|---|
| model | No | 사용된 AI 모델 |
| status | Yes | 작업 상태 |
| message | Yes | 안내 메시지 |
| task_id | Yes | 작업 추적용 고유 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses useful behavioral traits beyond the annotations: it runs asynchronously, returns a pending status, and saves feedback history. These details align with the annotations (readOnlyHint=false, openWorldHint=true) and add context for the agent without contradicting the structured metadata.
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?
The description is well-structured with clear sections for model selection, args, and returns. It front-loads the core purpose and keeps information focused; the parameter list slightly duplicates the schema but is not overly verbose.
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's moderate complexity (4 params, background execution), the description covers key aspects: return values, model options, API key handling, and side effects. The existence of an output schema further reduces the need for detailed return explanations, making this description sufficient for correct invocation.
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 schema already provides descriptions for all parameters (100% coverage), but the description adds value by explaining model selection trade-offs (flash vs pro) and the API key fallback behavior. This goes beyond the schema's simple parameter labels and descriptions.
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 clearly states that the tool applies user feedback to a draft and runs in the background. It distinguishes itself from sibling tools like blog_apply_review_feedback by focusing on 'user feedback' on drafts, though it does not explicitly differentiate from the pro variant.
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 provides context about background execution and feedback history but gives no explicit guidance on when to choose this tool over alternatives such as blog_apply_feedback_pro. No conditions, exclusions, or comparative recommendations are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_apply_feedback_proApply Feedback to Pro DraftA
[HTTP 모드 전용] Pro Mode로 생성된 블로그 초안에 피드백을 반영합니다.
⚠️ Claude Desktop/Code 사용자: 이 도구는 HTTP 모드에서만 필요합니다. Claude Desktop/Code 환경에서는 Claude에게 직접 수정을 요청하세요.
Args:
task_id: Pro 작업 ID (필수)
feedback: 수정 요청 사항 (필수)
anthropic_api_key: Anthropic API 키 (환경변수로 대체 가능)
Returns:
task_id: 작업 ID
status: 작업 상태
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | 피드백을 적용할 Pro 작업 ID | |
| feedback | Yes | 수정 요청 사항 | |
| anthropic_api_key | No | Anthropic API 키 (없으면 ANTHROPIC_API_KEY 환경변수 사용) |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | 작업 상태 |
| message | Yes | 안내 메시지 |
| task_id | Yes | 작업 추적용 고유 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=false, indicating a mutation. The description adds valuable context: HTTP-only requirement, anthropic_api_key fallback to environment variable, and the return fields (task_id, status). It does not contradict 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?
The description is reasonably concise, starting with the key constraint '[HTTP 모드 전용]', followed by a directed warning, and organized Args/Returns sections. It is structured and not overly verbose, though it could be slightly tighter given the schema already documents the parameters.
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?
The description covers purpose, usage limitations, parameters, and return values. With an output schema present and a simple 3-parameter tool, this is nearly complete. However, it does not specify what happens to the draft after feedback is applied (e.g., whether it updates in place or triggers further processing), which would enhance completeness.
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 the parameters are already fully documented (e.g., task_id '피드백을 적용할 Pro 작업 ID', feedback '수정 요청 사항', anthropic_api_key with env var fallback). The description's Args list repeats the same information without adding new semantic value.
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 clearly states 'Pro Mode로 생성된 블로그 초안에 피드백을 반영합니다' (applies feedback to blog drafts created in Pro Mode), which is a specific verb and resource. It also differentiates itself from the sibling tool blog_apply_feedback by the 'Pro' designation and Pro Mode mention.
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 explicitly states it is HTTP mode only, and warns Claude Desktop/Code users to use Claude directly instead, providing a clear alternative. It also ties usage to Pro-generated drafts, giving context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_apply_review_feedbackApply Review FeedbackA
검수 결과에 추가 피드백을 반영합니다 (백그라운드 실행).
모델 선택 (model)
gemini-1.5-flash: 빠른 응답 (기본값)
gemini-1.5-pro: 고품질 피드백 반영
Args:
task_id: 피드백을 적용할 검수 작업 ID
feedback: 추가 검수 요청 사항
model: Gemini 모델 (기본: gemini-1.5-flash)
gemini_api_key: Gemini API 키 (없으면 GEMINI_API_KEY 환경변수 사용)
Returns:
task_id: 작업 ID
status: "pending"
message: 안내 메시지
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | 사용할 Gemini 모델 | gemini-1.5-flash |
| task_id | Yes | 피드백을 적용할 검수 작업 ID | |
| feedback | Yes | 추가 검수 요청 사항 | |
| gemini_api_key | No | Gemini API 키 (없으면 GEMINI_API_KEY 환경변수 사용) |
Output Schema
| Name | Required | Description |
|---|---|---|
| model | No | 사용된 AI 모델 |
| status | Yes | 작업 상태 |
| message | Yes | 안내 메시지 |
| task_id | Yes | 작업 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it states the tool runs in the background, returns a status of 'pending', and references API key fallback to environment variable. These aspects are not captured in the annotations, which only provide basic hints (read-only, destructive, etc.).
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?
The description is well-structured with clear sections for purpose, model selection, arguments, and returns. It is not overly verbose and front-loads the primary action, though it repeats parameter information already present in the schema.
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?
The description covers the key contextual aspects: asynchronous execution, return status, model options, and API key handling. It is sufficiently complete given the output schema and annotations, though it does not mention error conditions or prerequisites beyond the API key.
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 describes all parameters with 100% coverage, so the baseline is 3. The description goes further by explaining the trade-offs between model choices (flash for speed, pro for quality) and clarifying the default, which adds practical semantics beyond the schema's enum list and default values.
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 clearly states it applies additional feedback to review results and runs in the background, using a specific verb and resource. However, it does not explicitly distinguish itself from the sibling tool 'blog_apply_feedback', which may serve a similar or overlapping purpose.
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 provides no guidance on when to use this tool versus alternatives. It only explains parameter options (e.g., model selection) but does not mention when to choose this tool over siblings like 'blog_apply_feedback' or 'blog_start_review'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_deploy_githubDeploy to GitHubAIdempotent
블로그 글을 GitHub 저장소에 배포합니다.
기존 작업 ID, 직접 콘텐츠 입력, 또는 로컬 파일 경로를 사용할 수 있습니다. Jekyll, Hugo 등의 정적 사이트 생성기를 사용하는 블로그에 직접 커밋합니다.
Args:
task_id: 배포할 작업 ID (선택)
content: 직접 배포할 마크다운 콘텐츠 (선택)
filepath: 배포할 로컬 파일 경로 (선택)
repo: GitHub 저장소 (owner/repo 형식, 필수)
branch: 배포할 브랜치 (기본: main)
target_path: 저장소 내 저장 경로 (필수)
commit_message: 커밋 메시지 (선택)
github_token: GitHub Personal Access Token (필수)
Returns:
url: 커밋 URL
deployed: 배포 성공 여부
message: 안내 메시지
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | GitHub 커밋 URL |
| message | Yes | 안내 메시지 |
| deployed | Yes | 배포 성공 여부 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only, not destructive, and idempotent. The description adds valuable context by stating it 'directly commits' to the repository, requires a GitHub token, and works with static site generators. This goes beyond the annotations and informs the agent of the write behavior and authentication requirement.
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?
The description is well-structured with a one-sentence summary, a list of parameters, and a return-value section. Every sentence adds meaningful information, and the format is easy to scan.
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?
The description covers the main input modes, required authentication, and return values, which is sufficient for a deployment tool. It does not mention edge cases like conflicting sources or precondition checks (e.g., repo existence), but the output schema exists and the description is still quite 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?
Although the input schema is empty, the description documents all eight parameters with their meanings, types, and optionality. It clarifies that task_id, content, and filepath are alternatives, repo and target_path are required, and branch defaults to main. This fully compensates for the empty schema.
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 uses a specific verb ('배포합니다' - deploys) and resource ('GitHub 저장소' - GitHub repository), clearly distinguishing this tool from sibling blog-management tools. It states exactly what it does: deploys blog posts to a GitHub repository via direct commits.
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 clearly implies when to use this tool (final deployment of blog content to GitHub) and provides context about supported input methods (task ID, direct content, filepath). However, it does not explicitly mention alternatives or exclusions, but the purpose is unambiguous enough that an agent can infer the correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_finalize_draftFinalize Blog DraftARead-onlyIdempotent
블로그 초안을 확정합니다.
완료된 작업의 최종 결과를 반환합니다. 이후 blog_save 또는 blog_deploy_github로 저장/배포할 수 있습니다.
Args:
task_id: 확정할 작업 ID
Returns:
draft: 최종 확정된 초안
metadata: { title, tags, estimatedReadTime }
message: 안내 메시지
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | 확정할 작업 ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| draft | Yes | 최종 확정된 블로그 초안 |
| message | Yes | 안내 메시지 |
| metadata | Yes | 블로그 메타데이터 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this by stating it returns the final result and that subsequent save/deploy tools are needed, making it clear this tool does not persist changes. This adds contextual value beyond the annotations without contradiction.
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?
The description is compact and well-structured: a one-line action statement, a brief note about next steps, and simple Args/Returns sections. Every sentence serves a purpose, and the key verb is front-loaded.
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 tool with one parameter, an output schema, and strong annotations, the description adequately covers the behavior and result. It identifies the completed-work requirement and the follow-up options, though it could be more explicit about prerequisites before finalizing.
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 input schema already provides 100% coverage for task_id with the description '확정할 작업 ID'. The Args section in the description repeats this exact information without adding any new meaning, so per the rubric the baseline score 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 opens with a specific verb+resource: 'Finalize blog draft' which clearly states the tool's function. It further explains it returns the final result of completed work, distinguishing it from sibling tools like blog_save and blog_deploy_github by noting those are subsequent steps.
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 provides clear context by stating that saving/deploying can be done later with blog_save or blog_deploy_github, implying this is the step before persistence. However, it does not explicitly say when to use this tool over alternatives like blog_start_review or blog_apply_feedback, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_get_statusGet Task StatusARead-onlyIdempotent
작업 상태를 조회합니다.
Args:
task_id: 조회할 작업 ID
Returns:
task_id: 작업 ID
status: pending | in_progress | completed | failed
progress: 진행률 (0-100)
result: 완료 시 결과 (draft, metadata 등)
error: 실패 시 오류 메시지
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | 조회할 작업 ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | 실패 시 오류 메시지 |
| result | No | 완료 시 결과 |
| status | Yes | 작업 상태: pending, in_progress, completed, failed |
| task_id | Yes | 작업 ID |
| progress | Yes | 진행률 (0-100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, covering safety. The description adds behavioral context by exposing the status values (pending, in_progress, completed, failed), which imply asynchronous task processing. This is useful beyond the annotations, though the return field list is likely duplicated in 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?
The description is well-structured and front-loaded with the primary purpose. However, the Args and Returns sections largely duplicate the input and output schemas, which reduces the efficiency. It is still concise enough for a simple tool, but some content could be trimmed without loss.
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 simple status-polling tool with a single parameter and an existing output schema, the description provides sufficient detail on the returned fields, including status and progress. It is slightly incomplete in that it does not mention the asynchronous nature explicitly, but the status values imply it. Overall, it is complete enough for an agent to invoke the tool correctly.
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 input schema fully documents the single parameter (task_id) with the same description as in the Args section. Since schema coverage is 100%, the description adds no additional semantic value beyond what the schema already provides, aligning with the baseline score of 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 clearly states the tool's function: to query task status ("작업 상태를 조회합니다"). This is a specific verb and resource, and it distinctly differentiates from sibling tools like blog_start_draft, blog_apply_feedback, and blog_finalize_draft, which all perform actions rather than status queries.
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 does not explicitly state when to use this tool or provide alternatives. The context of sibling tools implies it is meant for checking the status of asynchronous operations (e.g., after starting a draft), but this is only implied, not directly communicated. There is no guidance on when not to use it or how it fits into the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_saveSave Blog PostAIdempotent
블로그 글을 로컬 마크다운 파일로 저장합니다.
기존 작업 ID를 사용하거나 직접 콘텐츠를 입력할 수 있습니다. 파일명이 제공되지 않으면 글 제목과 날짜를 기반으로 자동 생성합니다.
Args:
task_id: 저장할 작업 ID (선택)
content: 직접 저장할 마크다운 콘텐츠 (선택)
filename: 파일명 (선택, 없으면 자동 생성)
directory: 저장 디렉토리 경로 (없으면 BLOG_SAVE_DIRECTORY 환경변수 또는 ./posts)
Returns:
filepath: 저장된 파일의 전체 경로
message: 안내 메시지
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | 안내 메시지 |
| filepath | Yes | 저장된 파일의 전체 경로 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, idempotent, non-destructive operation. The description adds useful concrete behavior: local file storage, automatic filename generation from title/date, and directory fallback to BLOG_SAVE_DIRECTORY or ./posts. It does not mention overwrite behavior, but the idempotent hint reduces the need for that detail.
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?
The description is a well-structured, front-loaded docstring: a one-sentence summary, a brief usage note, bullet-style Args, and a Returns block. Every sentence earns its place and there is no redundant content.
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?
The tool is simple, and the description covers the main workflow, directory defaults, and return values. However, it leaves ambiguity about whether task_id and content are mutually exclusive or if one is required, and the empty input schema makes the actual accepted parameters uncertain.
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 input schema declares zero properties, but the description compensates by documenting all four parameters (task_id, content, filename, directory) with concise explanations and defaults. This adds substantial meaning beyond the empty schema and is essential for correct invocation.
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 opens with 'Saves a blog post as a local markdown file,' a specific verb+resource pair. It also clarifies that the tool supports existing task IDs or direct content, clearly distinguishing it from siblings like blog_deploy_github and blog_get_status.
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 gives context about how to use the tool ('use existing task_id or directly enter content') and the default directory behavior, but it does not explicitly state when to prefer this over alternatives such as blog_finalize_draft or blog_deploy_github. Usage is implied rather than directly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_start_draftStart Blog Draft GenerationA
블로그 초안 생성을 시작합니다 (백그라운드 실행).
입력 유형 (input_type)
keyword: 키워드/주제로 글 생성
code: 코드 스니펫을 설명하는 글 생성
memo: 메모/노트를 완성된 글로 확장
git_push: git 변경사항으로 개발일지 생성
notion: Notion 페이지 URL을 입력하면 내용을 자동으로 가져와서 블로그 글 생성 (content에 Notion URL 입력, notion_api_key 필요)
글 스타일 (style)
tutorial: 단계별 튜토리얼 (기본값)
til: Today I Learned 형식
deep-dive: 심층 기술 분석
troubleshooting: 문제 해결 과정
모델 선택 (model)
gemini-1.5-flash: 빠른 응답, 일반 용도 (기본값)
gemini-1.5-flash-8b: 더 빠른 응답, 간단한 작업
gemini-1.5-pro: 고품질, 복잡한 작업
gemini-2.0-flash: 최신 모델
상세 지침 (instructions / instructions_file)
skill.md 스타일로 상세한 작성 지침을 제공할 수 있습니다:
글의 톤과 문체
반드시 포함할 섹션
타겟 독자층
예시 스타일 참조
금지 표현
코드 스타일 가이드 등을 상세히 기술하면 모델이 지침을 따릅니다.
instructions_file로 마크다운 파일 경로를 지정하면 파일에서 지침을 읽어옵니다. 둘 다 제공하면 파일 내용 + 파라미터 내용이 병합됩니다.
Args:
input_type: 입력 유형
content: 블로그 글 생성에 사용할 입력 내용
style: 글 스타일 (기본: tutorial)
language: 출력 언어 ko/en (기본: ko)
model: Gemini 모델 (기본: gemini-1.5-flash)
instructions: 상세 작성 지침 (선택)
instructions_file: 상세 작성 지침 마크다운 파일 경로 (선택)
custom_prompt: 간단한 추가 요청 (선택)
gemini_api_key: Gemini API 키 (없으면 GEMINI_API_KEY 환경변수 사용)
notion_api_key: Notion API 키 (input_type이 notion일 때 필요, 없으면 NOTION_API_KEY 환경변수 사용)
web_search: 웹 검색 활용 여부 (기본: false). true로 설정하면 최신 정보, 통계, 참고 자료를 웹에서 검색하여 포함
Returns:
task_id: 작업 추적용 ID
status: "pending"
message: 안내 메시지
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | 사용할 Gemini 모델: gemini-1.5-flash(기본), gemini-1.5-flash-8b, gemini-1.5-pro, gemini-2.0-flash | gemini-1.5-flash |
| style | No | 블로그 글 스타일 | tutorial |
| content | Yes | 블로그 글 생성에 사용할 입력 내용 | |
| language | No | 출력 언어 | ko |
| input_type | Yes | 입력 유형: keyword, code, memo, git_push, notion | |
| web_search | No | 웹 검색을 활용하여 최신 정보와 참고 자료를 포함 (기본: false) | |
| instructions | No | 상세 작성 지침 (skill.md 스타일). 글의 톤, 구조, 포함할 내용, 제외할 내용, 타겟 독자, 예시 스타일 등을 상세히 기술 | |
| custom_prompt | No | 간단한 추가 요청 사항 (instructions보다 짧은 요청에 사용) | |
| gemini_api_key | No | Gemini API 키 (없으면 GEMINI_API_KEY 환경변수 사용) | |
| notion_api_key | No | Notion API 키 (input_type이 notion일 때 필요, 없으면 NOTION_API_KEY 환경변수 사용) | |
| instructions_file | No | 상세 작성 지침이 담긴 마크다운 파일 경로. instructions와 함께 사용하면 파일 내용 + 파라미터 내용이 병합됨 |
Output Schema
| Name | Required | Description |
|---|---|---|
| model | No | 사용된 AI 모델 |
| status | Yes | 작업 상태 |
| message | Yes | 안내 메시지 |
| task_id | Yes | 작업 추적용 고유 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint false, openWorldHint true), the description reveals that generation runs in the background, returns a task_id with status 'pending', and uses external APIs (Gemini, Notion). It also explains instructions_file merging behavior and web_search capability, providing rich behavioral context.
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?
The description is long but well-structured with clear sections for input_type, style, model, and instructions. It front-loads the primary purpose and provides necessary details for all 11 parameters without redundancy, though it could be slightly tighter.
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 complex tool with 11 parameters, background execution, external API dependencies, and an output schema, the description covers input types, styles, models, instructions, API keys, web_search, and return values. It also addresses prerequisites and file merging behavior, making it highly 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?
The description explains each input_type variant (keyword, code, memo, git_push, notion) with concrete use cases, elaborates on style options, and gives model selection guidance (e.g., flash for speed, pro for quality). This goes well beyond the schema's generic enum descriptions.
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 clearly states the action: '블로그 초안 생성을 시작합니다' (starts blog draft generation) and mentions background execution. It distinguishes itself from sibling tools by focusing on initiating draft creation, and the title aligns with the description.
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 provides detailed guidance on how to configure input_type, style, model, and instructions, and notes when notion_api_key is needed. However, it does not explicitly mention when to use this tool versus alternatives like blog_start_draft_pro, or state exclusions/conditions for not using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_start_draft_proStart Pro Blog Draft GenerationA
[HTTP 모드 전용] Claude Opus(분석 + 작성) 파이프라인으로 고품질 블로그 생성을 시작합니다.
⚠️ Claude Desktop/Code 사용자: 이 도구는 HTTP 모드에서만 필요합니다. Claude Desktop/Code 환경에서는 Claude에게 직접 "이 코드로 블로그 써줘"라고 요청하세요. Claude가 직접 코드를 분석하고 블로그를 작성합니다.
작동 방식 (HTTP 모드)
Claude Opus가 코드를 분석하여 인사이트 추출
Claude Opus가 분석 결과를 바탕으로 블로그 작성
blog_get_status로 완료 확인
Args:
code_diff: Git diff 또는 변경된 코드 (필수)
dev_log: 개발자의 고민/메모/의사결정 과정 (선택)
request: 최우선 제약조건 (선택)
style: 글 스타일 (기본: deep-dive)
language: 언어 (기본: ko)
instructions: 상세 작성 지침 (선택)
instructions_file: 상세 작성 지침 마크다운 파일 경로 (선택, instructions와 병합 가능)
anthropic_api_key: Anthropic API 키 (환경변수로 대체 가능)
web_search: 웹 검색 활용 여부 (기본: true). 최신 정보, 이미지, 참고 자료를 웹에서 검색하여 포함
Returns:
task_id: 작업 추적용 ID
status: 작업 상태
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | 블로그 글 스타일 | deep-dive |
| dev_log | No | 개발자의 고민/메모/의사결정 과정 | |
| request | No | 최우선 제약조건 - 이 요청사항을 최우선으로 반영 | |
| language | No | 출력 언어 | ko |
| code_diff | Yes | Git diff 또는 변경된 코드 | |
| web_search | No | 웹 검색을 활용하여 최신 정보와 참고 자료를 포함 (기본: false) | |
| instructions | No | 상세 작성 지침 | |
| anthropic_api_key | No | Anthropic API 키 (없으면 ANTHROPIC_API_KEY 환경변수 사용) | |
| instructions_file | No | 상세 작성 지침이 담긴 마크다운 파일 경로. instructions와 함께 사용하면 파일 내용 + 파라미터 내용이 병합됨 |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | 작업 상태 |
| message | Yes | 안내 메시지 |
| task_id | Yes | 작업 추적용 고유 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is not read-only and may have open-world effects. The description adds context about the pipeline steps, but it incorrectly states web_search defaults to true while the schema says false, misrepresenting actual behavior. This is a transparency flaw despite no direct annotation contradiction.
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?
The description is well-structured with headers and steps, but it duplicates the full argument list from the schema and includes a long warning block. It earns its place by providing mode-specific context, but could be tighter by removing redundant parameter details.
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 complexity of a multi-step pipeline, the description covers the workflow, mode constraints, parameter roles, and return values, and even references blog_get_status for follow-up. The only notable gap is the incorrect web_search default, which slightly reduces completeness.
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%, so baseline is 3, but the description actively misleads by claiming web_search default is true when the schema default is false. It also simply repeats the schema's parameter descriptions without adding meaningful new information, so it fails to add value and introduces confusion.
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 clearly states it starts high-quality blog generation using a Claude Opus pipeline, and explicitly distinguishes itself as HTTP-mode-only, warning Desktop/Code users to use a different approach. This differentiates it from siblings like blog_start_draft and blog_get_status.
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 provides explicit when-to-use (HTTP mode) and when-not-to-use guidance (Claude Desktop/Code users should ask Claude directly), and even names blog_get_status for completion checking. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_start_reviewStart Blog ReviewA
블로그 글 검수를 시작합니다 (백그라운드 실행).
기존 작업 ID를 사용하거나 직접 초안을 입력할 수 있습니다.
검수 초점 (focus)
accuracy: 기술적 정확성
readability: 가독성
seo: SEO 최적화
all: 전체 검수 (기본값)
모델 선택 (model)
gemini-1.5-flash: 빠른 검수 (기본값)
gemini-1.5-pro: 심층 검수
상세 검수 지침 (instructions / instructions_file)
검수 기준을 상세히 지정할 수 있습니다:
회사/팀 스타일 가이드
용어 사용 규칙
코드 컨벤션
타겟 독자 수준
금지 표현 등을 명시하면 해당 기준으로 검수합니다.
instructions_file로 마크다운 파일 경로를 지정하면 파일에서 지침을 읽어옵니다. 둘 다 제공하면 파일 내용 + 파라미터 내용이 병합됩니다.
Args:
task_id: 기존 작업 ID (선택)
draft: 직접 입력할 초안 내용 (선택)
focus: 검수 초점 (기본: all)
model: Gemini 모델 (기본: gemini-1.5-flash)
instructions: 상세 검수 지침 (선택)
instructions_file: 상세 검수 지침 마크다운 파일 경로 (선택)
custom_prompt: 간단한 추가 검수 요청 (선택)
gemini_api_key: Gemini API 키 (없으면 GEMINI_API_KEY 환경변수 사용)
Returns:
task_id: 검수 작업 ID
status: "pending"
message: 안내 메시지
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| model | No | 사용된 AI 모델 |
| status | Yes | 작업 상태 |
| message | Yes | 안내 메시지 |
| task_id | Yes | 작업 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses background execution, asynchronous return behavior (task_id, status pending), and the merge logic for instructions and instructions_file. It also mentions the Gemini API key requirement, which aligns with the openWorldHint annotation. No contradictions found.
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?
The description is well-structured with sections and bullet points, but it repeats some parameter information (focus/model) in both the header sections and the Args list, creating minor redundancy.
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?
The description covers purpose, parameters, return values, background execution, and API key authentication. It provides a complete picture for an agent, especially given the absence of schema-defined parameters.
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?
Despite the input schema being empty, the description thoroughly documents each parameter with defaults and interactions. It explains the merging of instructions and instructions_file, fully compensating for the lack of schema-defined parameters.
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 clearly states that it starts a blog review in the background, using a specific verb and resource. It distinguishes itself from sibling tools like 'blog_start_draft' by focusing on the review action.
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 provides clear context on when to use this tool (for reviewing a draft or existing task) and hints at a workflow with prior drafting. However, it does not explicitly name alternative tools or exclusions, so it falls short of the highest tier.
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.
10 tool updates
v4.1.0- First observed
blog_apply_feedback - First observed
blog_apply_feedback_pro - First observed
blog_apply_review_feedback - First observed
blog_deploy_github - First observed
blog_finalize_draft - First observed
blog_get_status - First observed
blog_save - First observed
blog_start_draft - First observed
blog_start_draft_pro - First observed
blog_start_review
TDQS
Scored across 10 tools
Most tools have clearly distinct roles: generation, status tracking, feedback, review, saving, and deployment. The main ambiguity is between standard and 'pro' variants (start_draft vs start_draft_pro, apply_feedback vs apply_feedback_pro), but they are explicitly separated by mode and input requirements.
All tools share the 'blog_' prefix and mostly follow a verb_noun pattern (start_draft, apply_feedback, get_status). Minor deviations like blog_save and blog_deploy_github omit the object or use a platform target, but the pattern remains predictable.
With 10 tools, the server is well-scoped for its purpose. Each tool maps to a distinct stage in the blog lifecycle, and the count is appropriate for a specialized generator.
The tool surface covers the full workflow: create draft, check status, apply feedback, finalize, review, apply review feedback, save locally, and deploy to GitHub. No critical operations are missing for the stated purpose.
Maintenance
Related MCP Connectors
An MCP server that integrates with Discord to provide AI-powered features.
WordPress MCP server: generate SEO posts, AI images, autoblog & WooCommerce on your self-hosted site
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseAqualityBmaintenanceAn MCP server that generates high-quality blog cover images using Google Gemini AI and automatically uploads them to Qiniu Cloud storage. It provides automated WebP conversion and compression to deliver optimized CDN URLs for generated images.35 npmMIT
- AlicenseAqualityDmaintenanceMCP server for Alog, an AI × Human blog platform. Enables AI agents to post logs, create and publish articles, search content, and interact socially on alog.world.1916 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for managing Ghost blogs from AI coding editors. Create, edit, publish, and sync blog posts directly from tools like Claude Code or Cursor.13 npm1MIT
- AlicenseAqualityDmaintenanceMCP server that enables AI assistants to automatically write and publish blog posts to CSDN with support for categories, tags, and drafts.42MIT