Kakao Moment MCP
Provides tools for managing and reporting on Kakao Moment advertising campaigns, including account info, budget, campaign lists, ad groups, creatives, and performance reports.
Click on "Install 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., "@Kakao Moment MCP어제 캠페인별 성과 요약해줘"
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.
Kakao Moment MCP
Claude / Cursor / Cline 등 AI 에이전트에서 자연어로 카카오모먼트 광고를 운영합니다.
💬 "어제 캠페인별 성과 요약해줘" · "오늘 일예산 얼마나 썼어?" · "최근 7일 ROAS 좋은 광고그룹 5개"
↑ 이런 문장을 AI 에 그대로 던지면 카카오모먼트 API 를 알아서 호출해 답합니다.
🎯 동작 방식
flowchart LR
U([👤 광고 운영자]) -- "자연어 질문" --> A[🤖 AI 에이전트<br/>Claude · Cursor · Cline · Claude Code]
A -- "MCP 도구 호출" --> S[⚙️ kakao-moment-mcp<br/>로컬 실행]
S -- "OAuth Bearer + adAccountId" --> K[(☁️ Kakao Moment API)]
K -- "JSON" --> S
S -- "summary 한국어 + 정규화 응답" --> A
A -- "한국어 답변" --> U자격증명·토큰은 사용자 홈 디렉토리 (~/.kakao-moment-mcp/) 에만 저장됩니다. 레포·로그·서버 어디로도 나가지 않습니다.
✨ Phase 1 — 조회/리포트 도구 7개
도구 | 한 줄 설명 | 대표 질문 |
| 광고계정 정보·상태·잔액부족 여부 | "광고계정 잘 돌아가?" |
| 비즈머니 잔액 + 최근 7일 추이 + 잔여일 추정 | "비즈머니 며칠치 남았어?" |
| 오늘 누적 소진·시간당 페이스·마감 예상 소진율 | "오늘 일예산 얼마나 썼어?" |
| 캠페인 목록(이름·상태·일예산·타입) | "켜져 있는 캠페인만" |
| 광고그룹(입찰가·일예산·집행기간·디바이스) | "그룹 입찰가 얼마야?" |
| 소재(포맷·심사상태·미리보기·랜딩URL) | "반려된 소재 있어?" |
| 기간/단위별 성과(노출·클릭·비용·전환·CTR·CPC·ROAS) | "어제 캠페인별 성과" |
🚧 Phase 2 (ON/OFF) · Phase 3 (예산/입찰 조정) · Phase 4 (소재 관리) 는 안정성 검증 후 추가됩니다. Write 도구는 항상
dry_run+ 변경 상한선이 강제됩니다.
📦 설치
🖱️ 옵션 A — 딸깍 하면 끝
본인 OS 의 인스톨러 파일을 다운로드해 더블클릭 하세요. 터미널이 자동으로 열리며 모든 과정을 안내합니다.
OS | 파일 | 비고 |
🍎 macOS | 첫 실행 시 Gatekeeper 차단되면 우클릭 → 열기 | |
🪟 Windows | SmartScreen 경고 시 추가 정보 → 실행 | |
🐧 Linux |
|
인스톨러가 하는 일: uv 자동 설치 →
kakao-moment-mcp-setup마법사 실행 (자격증명·OAuth·클라이언트 등록).
⌨️ 옵션 B — 명령어 (개발자 친화) — OS 별 탭
본인 OS 탭을 클릭하면 두 줄 복붙으로 끝입니다.
# 1) uv 설치 (둘 중 하나)
brew install uv
# 또는
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2) 한 줄 setup
uvx --from kakao-moment-mcp kakao-moment-mcp-setup# 1) uv 설치
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 새 PowerShell 창을 다시 여세요 (PATH 갱신 필요)
# 2) 한 줄 setup
uvx --from kakao-moment-mcp kakao-moment-mcp-setup# 1) uv 설치
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2) 한 줄 setup
uvx --from kakao-moment-mcp kakao-moment-mcp-setupℹ️ Linux 에는 Claude Desktop 앱이 없습니다. Claude Code(CLI) · Cursor · Cline(VSCode 확장) 에서는 모두 동작합니다.
setup 마법사가 자동으로 하는 일
카카오 자격증명 입력 →
~/.kakao-moment-mcp/.env저장 (chmod 0600)브라우저 OAuth 인증 → 토큰 저장 (chmod 0600)
설치된 MCP 클라이언트를 감지해서 자동 등록 (기존 설정 보존 +
.bak백업):클라이언트
등록 방식
Claude Desktop
claude_desktop_config.json병합Claude Code
claude mcp add자동 실행Cursor
~/.cursor/mcp.json병합Cline (VSCode)
cline_mcp_settings.json병합
→ 사용하는 클라이언트를 재시작 하면 kakao-moment 도구 7개가 보입니다.
문제 생기면 한 줄로 진단
uvx --from kakao-moment-mcp kakao-moment-mcp-doctorenv / 토큰 / 로그 디렉토리 / 클라이언트 등록 상태를 ✅/❌ 로 체크리스트 출력. 로그는 ~/.kakao-moment-mcp/logs/server.jsonl (자정 회전, 7일 보관).
✅ 여기까지 끝났으면 설치 완료입니다. 바로 💬 사용 예시 로 넘어가세요.
🖥️ MCP 클라이언트별 등록 (수동) — 옵션, 건너뛰어도 됨
⚠️ 이 섹션은 선택입니다. 위의
kakao-moment-mcp-setup마법사가 이미 자동으로 다 등록했습니다. 다음 경우에만 보세요:
마법사를 건너뛰고 직접 JSON 으로 등록하고 싶다
마법사가 지원하지 않는 새로운 MCP 클라이언트를 쓴다
자동 등록이 실패해서 수동으로 처리해야 한다
설정 파일 위치:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
mcpServers 키 아래에 다음을 추가:
{
"mcpServers": {
"kakao-moment": {
"command": "uvx",
"args": ["kakao-moment-mcp"]
}
}
}저장 후 Claude Desktop 을 완전 종료 후 재시작 하면 좌하단 🔌 아이콘에 도구 7개가 보입니다.
claude mcp add kakao-moment -- uvx kakao-moment-mcp또는 PyPI 배포 전이라 로컬 체크아웃으로 붙이려면:
claude mcp add kakao-moment \
-- uv --directory /path/to/kakao-moment-mcp run kakao-moment-mcp~/.cursor/mcp.json (Windows: %USERPROFILE%\.cursor\mcp.json) 에 다음을 추가:
{
"mcpServers": {
"kakao-moment": {
"command": "uvx",
"args": ["kakao-moment-mcp"]
}
}
}Cursor 재시작 → MCP 서버 패널에서 도구 확인.
VSCode 확장 설정 파일:
macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonWindows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonLinux:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
같은 mcpServers JSON 구조를 추가하면 됩니다.
💬 사용 예시 (자연어 → 도구)
AI 채팅창에 그대로 입력해 보세요. 도구 선택은 AI 가 알아서 합니다.
자연어 질문 | 호출되는 도구 |
"광고계정 상태 어때?" |
|
"비즈머니 얼마 남았어?" / "며칠치 남았어?" |
|
"오늘 일예산 얼마나 썼어?" / "지금 페이스 어때?" |
|
"ON 상태인 캠페인만 보여줘" |
|
"캠페인 X 의 광고그룹 보여줘" |
|
"광고그룹 Y 의 소재 / 반려된 소재 있어?" |
|
"어제 캠페인별 성과 요약" |
|
"최근 7일 ROAS 좋은 광고그룹 5개" |
|
"지난주 대비 이번주 성과 변화" |
|
각 도구는 한국어 summary 1줄을 함께 반환하므로 AI 답변이 자연스럽습니다.
🩺 트러블슈팅
증상 | 원인 / 해결 |
|
|
인증 후 "리다이렉트 URI 불일치" | 카카오 디벨로퍼스 → Redirect URI 에 |
AI 에서 도구가 안 보임 | 클라이언트 완전 종료 후 재시작. config JSON 문법 검증 |
| 토큰 만료. |
| 카카오 디벨로퍼스에서 동의항목 + 광고계정 권한 활성화 |
| 자동 backoff 재시도 됨. 호출 빈도 줄이거나 잠시 대기 |
비즈머니 잔액이 | 광고계정이 잔액부족 상태( |
추가 진단:
# 활성 동의항목 확인
uv run kakao-moment-mcp-test scopes
# 모든 조회 도구 핑 테스트
uv run kakao-moment-mcp-test smoke
# 진단 + 라이브 API 호출
uvx --from kakao-moment-mcp kakao-moment-mcp-doctor --live🔐 보안
.env/tokens.json은~/.kakao-moment-mcp/하위에 0600 권한으로 저장. 레포 외부.모든 로그는 stderr + 파일 (
logs/server.jsonl). stdout 은 MCP 프로토콜 전용이라 절대 로그 흐르지 않음.호출 로그에는 시크릿이 기록되지 않습니다 (method/path/status/duration/
request_id만).시크릿 노출 의심 시: 카카오 디벨로퍼스 → Client Secret 재발급 →
kakao-moment-mcp-authorize재실행.
자세한 정책은 SECURITY.md.
🔧 고급 (접이식)
setup 마법사 대신 직접 .env 를 만들고 싶다면:
mkdir -p ~/.kakao-moment-mcp
cat > ~/.kakao-moment-mcp/.env <<'EOF'
KAKAO_REST_API_KEY=발급받은_REST_API_KEY
KAKAO_CLIENT_SECRET=발급받은_CLIENT_SECRET
KAKAO_REDIRECT_URI=http://localhost:8765/callback
KAKAO_AD_ACCOUNT_ID=광고계정_ID
EOF
chmod 600 ~/.kakao-moment-mcp/.env단계 | 작업 |
① 앱 생성 | |
② 비즈앱 전환 | 앱 → 비즈니스 → 비즈앱 전환 |
③ 비즈니스 정보 심사 | 사업자 정보 등록 후 심사 |
④ 카카오모먼트 API 권한 신청 | 앱 → 카카오모먼트 → 사용 권한 신청 |
⑤ 동의항목 활성화 | 앱 → 카카오 로그인 → 동의항목 |
⑥ Redirect URI 등록 |
|
⑦ Client Secret 활성화 | 앱 → 보안 → Client Secret |
⑧ REST API 키 확인 | 앱 → 앱 키 → REST API 키 복사 |
uv run kakao-moment-mcp-test list # 도구 목록
uv run kakao-moment-mcp-test call get_today_status
uv run kakao-moment-mcp-test call list_campaigns --arg status_filter=ON
uv run kakao-moment-mcp-test call get_performance_report \
--json '{"target":"campaign","date_from":"2026-05-10","date_to":"2026-05-10"}'
uv run kakao-moment-mcp-test smoke # 7개 도구 한 번에변수 | 기본값 | 설명 |
| (필수) | 카카오 디벨로퍼스 앱 REST API 키 |
| (필수) | 앱 Client Secret |
| (필수) | 광고계정 ID (숫자) |
|
| OAuth 콜백 |
| (비움) | 카카오 콘솔의 활성 동의항목 자동 사용 |
|
| DEBUG / INFO / WARNING / ERROR |
|
| 파일 로그 경로 |
🗺️ 로드맵
v0.1 (현재) — Phase 1: 조회/리포트 도구 7개
v0.2 — Phase 2: ON/OFF 제어 + Dry-run + 변경 로그
v0.3 — Phase 3: 일예산/입찰 조정 + 변경 상한선 (±50%)
v0.4 — Phase 4: 소재 생성/수정/삭제
v0.5+ — DXT (Desktop Extension) 패키징, 멀티 계정 지원
🤝 기여 / 라이선스
기여 가이드: CONTRIBUTING.md
보안 정책: SECURITY.md
변경 이력: CHANGELOG.md
라이선스: MIT
Available Tools
7 toolsget_ad_account_infoA
카카오모먼트 광고계정 정보(이름, 상태, 사업자, 잔액부족 여부 등)를 조회합니다.
이런 질문에 사용하세요: • "광고계정 상태 어때?" / "광고계정 정보 보여줘" • "지금 광고계정 잘 돌아가고 있어?" • "광고계정에 문제 있어?" / "잔액부족 상태야?" • "내 광고계정 ID/이름 뭐였지?"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It correctly suggests a read-only operation ('조회합니다') without mentioning side effects. For a simple parameterless tool, this is sufficient, though additional details like authentication or rate limits could improve transparency.
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 concise: a single sentence stating the purpose followed by a list of example questions. Every sentence serves a purpose, and the structure is front-loaded with the main action. No wasted words.
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 parameterless tool with no output schema, the description covers the core functionality and the kind of information retrieved (name, status, business info, etc.). It does not detail the return format, but given the tool's simplicity, this is adequate. Slightly higher could be achieved by explicitly stating it returns a single object.
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 has no parameters (0 params, 100% coverage trivially). According to guidelines, 0 params gives a baseline of 4. The description does not need to add param info since none exist.
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 retrieves Kakao Moment ad account info (name, status, business info, balance shortage) and provides example user queries. It is specific and distinguishes from siblings like get_bizmoney (balance) or get_performance_report (performance).
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 example questions (e.g., 'How is the ad account status?', 'Any balance shortage?') that directly indicate when to use the tool. However, it does not explicitly mention when not to use it or provide alternatives, though the context of sibling tools implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bizmoneyA
비즈머니 잔액 + 최근 7일 소진 추이 + 현재 페이스 기준 잔여 일수 예상.
이런 질문에 사용하세요: • "비즈머니 얼마 남았어?" / "잔액 얼마야?" / "광고비 얼마 남았어?" • "이대로 가면 며칠 더 쓸 수 있어?" / "비즈머니 며칠치 남았어?" • "최근 일주일 광고비 얼마 썼어?" • "비즈머니 충전해야 해?" / "잔액 부족하지 않아?"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral aspects. It states the outputs but does not mention whether the operation is read-only, any authentication requirements, or data freshness. The description is functional but lacks depth in disclosing non-obvious behaviors.
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 exceptionally concise: two lines summarizing the core value followed by a compact list of example queries. Every sentence and example is purposeful, with no redundancy or filler.
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 lack of output schema and parameters, the description adequately covers the tool's purpose and typical questions. It does not specify output format or units, but for a simple query tool, the provided information is sufficient for an agent to understand and invoke it 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 has zero parameters with 100% coverage, meaning no additional documentation is needed. According to guidance, 0 parameters warrants a baseline of 4. The description adds no parameter info, but none is required.
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 provides three specific outputs: bizmoney balance, recent 7-day consumption trend, and remaining days estimate based on current pace. This distinguishes it from sibling tools like get_performance_report or get_today_status, which focus on different aspects of ad account data.
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 includes a list of example questions that map directly to common use cases, such as checking balance or estimating remaining days. While it does not explicitly state when not to use the tool, the examples provide strong contextual guidance for the AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_reportA
기간별 성과 리포트(노출·클릭·비용·전환·CTR·CPC·ROAS).
이런 질문에 사용하세요 (예시 → 인자): • "어제 성과 요약해줘" → target="account", date_from/date_to=어제 • "어제 캠페인별 성과" → target="campaign", date_from/date_to=어제 • "지난주 광고그룹별 성과" → target="adgroup", date_from/date_to=지난주 월~일 • "최근 7일 ROAS 좋은 광고그룹" → target="adgroup", 최근 7일 • "캠페인 X 의 어제 성과" → target="campaign", target_id="X", 어제 • "어제 클릭률 낮은 소재" → target="creative", date_from/date_to=어제 • "지난주 대비 이번주 성과 변화" → 두 번 호출 후 비교 • "오늘 시간대별 페이스" → 단발이면 get_today_status 가 더 적합. • "디바이스별 / 지면별 성과" → breakdown="device" / "placement"
Args: target: account | campaign | adgroup | creative date_from: YYYY-MM-DD (오늘 = today.isoformat()) date_to: YYYY-MM-DD target_id: campaign/adgroup/creative 일 때 특정 ID (선택). 전체 대상이면 비움. breakdown: day | hour | device | placement (선택)
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| date_from | Yes | ||
| date_to | Yes | ||
| target_id | No | ||
| breakdown | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided; the description does not explicitly state whether the tool is read-only or has side effects. It implies a safe query operation but lacks explicit behavioral guarantees.
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 bullet points and examples, but is relatively long. It could be slightly more concise without losing clarity.
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 complexity (5 parameters, no output schema), the description covers parameter details, usage context, and output metrics comprehensively.
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 has 0% description coverage, but the description fully compensates by detailing each parameter with valid values, date formats, and optional breakdowns, including examples.
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 purpose: generating performance reports by period with key metrics (impressions, clicks, cost, conversions, CTR, CPC, ROAS). It distinguishes from siblings like get_today_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 provides explicit usage examples mapping natural language queries to parameter values, and specifies when not to use it (e.g., for real-time pace, get_today_status is more suitable).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_today_statusA
오늘 광고계정 상태: 누적 소진·시간당 페이스·마감 예상 소진율·노출/클릭·잔액.
이런 질문에 사용하세요: • "오늘 일예산 얼마나 썼어?" / "오늘 소진액 얼마야?" • "지금 페이스 어때?" / "이대로 가면 오늘 얼마 쓸 것 같아?" • "오늘 광고 잘 돌고 있어?" / "오늘 노출/클릭 어때?" • "오늘 마감 예상 소진율" / "현재 시간당 평균 얼마야?" ⚠️ 어제/지난주 같은 과거 기간은 get_performance_report 로.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It implies a read-only query, but does not explicitly state whether it is destructive, required permissions, or rate limits. The description adds minimal behavioral context beyond the return values.
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 summary line, bulleted example questions, and a warning. It is concise but could be slightly trimmed; however, it remains efficient and 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?
Given no parameters and no output schema, the description comprehensively explains the tool's return values (metrics listed) and usage context (questions and boundaries). It is complete for a simple status 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?
There are no parameters; schema coverage is 100%. The description correctly does not add parameter info, which is appropriate given zero parameters. Baseline for 0 params is 4.
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 returns today's ad account status with specific metrics (cumulative spend, hourly pace, etc.) and distinguishes itself from get_performance_report for past periods. The purpose is specific and 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?
The description provides explicit example questions for when to use the tool and includes a warning with a direct reference to a sibling tool for past periods. This gives clear guidance on appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_adgroupsA
특정 캠페인 내 광고그룹 목록(입찰가·일예산·집행기간·디바이스) 조회.
이런 질문에 사용하세요: • "캠페인 X 의 광고그룹 보여줘" / "X 안에 어떤 그룹 있어?" • "광고그룹 입찰가 얼마야?" / "그룹 일예산 얼마로 잡혀있어?" • "그룹 집행기간 언제까지야?" ⚠️ 광고그룹 ID 만 알고 캠페인 ID 모르면, 먼저 list_campaigns 로 캠페인을 찾으세요.
Args: campaign_id: 특정 캠페인의 광고그룹만 조회 (필수에 가까움) with_details: True(기본) 면 광고그룹별 detail 로 입찰가/일예산/기간 보강.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | No | ||
| with_details | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that with_details=True (default) adds bid/budget/period details, implying a read operation. However, it does not explicitly state that the tool is idempotent or non-destructive, though the context strongly suggests it.
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 summary line, usage examples, a warning, and parameter explanations. It is slightly long but every sentence adds value; no 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?
Given two parameters, no output schema, and no annotations, the description covers purpose, parameters, and usage guidance adequately. It could be more explicit about the return format (e.g., array of objects), but the with_details parameter implies the structure. Overall fairly complete for a list 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 0%, but the description explains both parameters: campaign_id is 'close to required' for filtering by campaign, and with_details (default true) reinforces details per ad group. This adds significant meaning beyond the schema types and defaults.
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 lists ad groups within a specific campaign with details like bid, daily budget, execution period, and device. It provides example questions that illustrate its purpose, and distinguishes from sibling list_campaigns by focusing on ad groups.
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?
Explicit usage guidance is given with example questions (e.g., 'show ad groups of campaign X') and a clear warning: if only ad group ID is known, first use list_campaigns to find the campaign. This directly helps the agent decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsA
전체 캠페인 목록(이름·상태·일예산·캠페인 타입) 조회.
이런 질문에 사용하세요: • "캠페인 목록 보여줘" / "어떤 캠페인 돌고 있어?" • "지금 켜져 있는 캠페인만 알려줘" → status_filter="ON" • "꺼져 있는 캠페인" / "OFF 상태 캠페인" → status_filter="OFF" • "캠페인 ID 뭐였지?" / "캠페인 일예산 얼마야?"
Args: status_filter: ON / OFF / DELETED 등의 상태 필터 (선택) with_details: True(기본) 면 캠페인별 detail 을 함께 조회해 일예산/타입을 채움. 캠페인이 많아 느릴 때 False 로 끄세요.
| Name | Required | Description | Default |
|---|---|---|---|
| status_filter | No | ||
| with_details | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It mentions performance implications (with_details False when slow), but does not explicitly state that the operation is read-only or safe. The description adds some behavioral context but misses the opportunity to fully assure agents about safety.
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 front-loaded with a purpose statement and structured with example queries and an Args section. It is concise overall, though the example list could be slightly trimmed. Every sentence adds value.
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 list tool with no output schema, the description sufficiently explains the return fields (name, status, daily budget, type) and provides filtering and performance guidance. The sibling tools are distinct, so no cross-referencing is needed. The description is complete for its context.
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?
With 0% schema description coverage, the description fully compensates by explaining the status_filter values with concrete examples and defining the with_details boolean's effect and performance trade-off. This is far beyond what the schema provides.
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 starts with a clear Korean sentence stating the tool retrieves a full campaign list with specific fields (name, status, daily budget, type). The subsequent example queries reinforce the exact purpose. Although sibling tools are different, the description's clarity eliminates ambiguity.
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 example queries and explains when to use the status_filter and with_details parameters, including advice on turning off with_details for performance. However, it does not explicitly compare to sibling tools or state when not to use this tool, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_creativesA
특정 광고그룹의 소재 목록(포맷·심사상태·미리보기·랜딩URL·제목/설명) 조회.
이런 질문에 사용하세요: • "광고그룹 X 의 소재 보여줘" / "어떤 소재가 돌고 있어?" • "소재 심사상태 어떻게 돼?" / "반려된 소재 있어?" • "소재 미리보기 / 이미지 URL 줘" • "소재 랜딩 페이지 어디로 가?" ⚠️ 소재의 성과(클릭률/소진)는 get_performance_report(target="creative") 로 별도 조회.
Args: adgroup_id: 특정 광고그룹의 소재만 조회 (필수에 가까움) with_details: True(기본) 면 소재별 detail 로 포맷/심사상태/이미지 보강.
| Name | Required | Description | Default |
|---|---|---|---|
| adgroup_id | No | ||
| with_details | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses return fields (format, review status, preview, landing URL, title/description) and the effect of the with_details parameter. It does not mention pagination or rate limits, but adds sufficient transparency for a read-like tool.
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 front-loaded with the main purpose and well-structured with bullet-point examples and parameter explanations. It is appropriately sized for two parameters, though slightly verbose with example questions.
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 sibling tools and no output schema, the description covers query intent, return fields, and parameter usage. It lacks explicit mention of result format (e.g., list), but overall is sufficient for an agent to invoke 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?
Schema coverage is 0%, but the description explains adgroup_id as nearly required for filtering to a specific ad group, and with_details as enriching per-creative detail. This adds meaning beyond the schema types and defaults.
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 specifies the tool lists creatives of a specific ad group, detailing return fields (format, review status, preview, landing URL, title/description). It distinguishes from siblings like get_performance_report by stating separate use for performance metrics.
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 explicit example questions for usage and warns that performance data should be retrieved via get_performance_report, offering a clear alternative. This shows when and when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: account info, balance, period performance, today's status, listing campaigns, ad groups, and creatives. No two tools overlap in functionality; even the performance tools are separated by time scope.
All tools follow a consistent 'verb_noun' pattern with 'get_' for singular queries and 'list_' for multiple items. The naming is predictable and intuitive.
With 7 tools, the server is well-scoped for querying Kakao Moment advertising data. Each tool addresses a key aspect, and the count is neither too sparse nor overwhelming.
The tool surface is entirely read-only—it provides queries for info, balance, performance, and listings, but lacks any create, update, or delete operations for campaigns, ad groups, or creatives. This limits its utility for full campaign management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI ad ops from chat: create ad banners and run campaigns on Meta, Google, Naver, Kakao and TikTok.
Conversational access to advertising performance data, creative analysis, and campaign insights
Conversational access to advertising performance data, creative analysis, and campaign insights
Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jun7680/kakao-moment-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server