시작하기
imsend MCP를 사용하면 OpenClaw, Claude, ChatGPT 등 AI 에이전트에서
자연어 명령만으로 문자·이메일을 즉시 발송할 수 있습니다.
AI 에이전트가 외부 서비스를 직접 호출할 수 있게 해주는 표준 프로토콜입니다. imsend MCP를 연동하면 에이전트가 imsend의 발송 기능을 도구(Tool)로 사용할 수 있습니다.
무엇을 할 수 있나요?
빠른 시작
API 키를 발급받고 에이전트에 연동하는 데 5분이면 충분합니다.
가입 즉시 웰컴 포인트가 지급됩니다.
API 키 발급
imsend 계정이 있으면 즉시 발급받을 수 있습니다. 소셜 로그인(카카오/네이버/구글)을 지원합니다.
- imsend.kr에 로그인
- 왼쪽 사이드바 → AI 에이전트 섹션 → MCP API 키
- MCP API 키 발급받기 버튼 클릭
- 발급된 64자리 키를 복사
OpenClaw 연동
OpenClaw는 imsend MCP를 네이티브로 지원합니다. mcporter를 통해 연동합니다.
1. mcporter CLI로 등록
mcporter config add imsend-mcp https://mcp.imsend.kr/mcp --auth bearer
# 프롬프트에서 API 키 입력
2. 설정 파일로 등록
~/.mcporter/mcporter.json에 직접 추가:
{
"servers": {
"imsend-mcp": {
"url": "https://mcp.imsend.kr/mcp",
"auth": {
"type": "bearer",
"token": "여기에_API_키_입력"
}
}
}
}
3. 사용 예시
사용자: "01012345678로 '내일 오전 10시 미팅 안내드립니다' 문자 보내줘"
서진: ✅ SMS 발송 완료 (잔액: 4,990원)
사용자: "고객 리스트에 있는 50명한테 공지 문자 보내줘"
서진: ✅ LMS 50건 대량 발송 완료 (차감: 1,500원)
사용자: "잔여 포인트 얼마야?"
서진: 현재 잔액: 3,490원입니다.
Claude Desktop 연동
Claude Desktop의 설정 파일에 MCP 서버를 추가합니다.
설정 파일 경로: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"imsend-mcp": {
"url": "https://mcp.imsend.kr/mcp",
"headers": {
"Authorization": "Bearer 여기에_API_키_입력"
}
}
}
}
설정 파일 경로: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"imsend-mcp": {
"url": "https://mcp.imsend.kr/mcp",
"headers": {
"Authorization": "Bearer 여기에_API_키_입력"
}
}
}
}
Claude.ai 웹 연동 (OAuth 2.0)
Claude.ai 웹에서는 OAuth 2.0 Authorization Code Flow (PKCE)를 통해 연동합니다. API 키를 직접 입력하지 않고, imsend 계정으로 로그인하여 안전하게 인증합니다.
imsend.kr → AI 에이전트 → MCP API 키에서 확인하세요.
1. Claude.ai 커넥터 추가
- claude.ai 접속 → 좌측 하단 설정(톱니바퀴)
- Integrations 탭 → Add Integration 클릭
- 아래 정보 입력:
| 항목 | 입력값 |
|---|---|
| Integration URL | https://mcp.imsend.kr/mcp |
| Client ID | MCP API 키 페이지의 Key ID (imcp_로 시작) |
| Client Secret | MCP API 키 페이지의 Key Secret |
2. imsend 계정으로 로그인 (최초 1회)
- Integration 추가 후 Connect 버튼 클릭
- imsend 로그인 페이지로 이동 — 카카오 / 네이버 / 구글 소셜 로그인 또는 일반 로그인
- 로그인 완료 시 자동으로 Claude.ai로 복귀, 연동 완료
3. OAuth 엔드포인트 (개발자 참고)
자체 앱에서 OAuth 2.0 흐름을 직접 구현하는 경우 아래 엔드포인트를 사용합니다. Discovery 메타데이터는 아래 .well-known URL에서 조회할 수 있습니다.
- https://mcp.imsend.kr/.well-known/openid-configuration
- https://mcp.imsend.kr/.well-known/oauth-authorization-server
- https://mcp.imsend.kr/.well-known/oauth-protected-resource
{
"issuer": "https://mcp.imsend.kr",
"authorization_endpoint": "https://mcp.imsend.kr/oauth/authorize",
"token_endpoint": "https://mcp.imsend.kr/oauth/token",
"token_endpoint_auth_methods_supported": ["client_secret_post"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"code_challenge_methods_supported": ["S256", "plain"],
"scopes_supported": ["sms", "email"]
}
4. Authorization Request
GET https://mcp.imsend.kr/oauth/authorize
?response_type=code
&client_id={Key_ID}
&redirect_uri={redirect_uri}
&state={random_state}
&code_challenge={pkce_challenge}
&code_challenge_method=S256
&scope=sms+email
5. Token Exchange
POST https://mcp.imsend.kr/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code={authorization_code}
&client_id={Key_ID}
&client_secret={Key_Secret}
&redirect_uri={redirect_uri}
&code_verifier={pkce_verifier}
응답으로 받은 access_token을 Bearer 토큰으로 사용합니다. access_token의 유효기간(expires_in)은 90일(7,776,000초)이며, 토큰 교환 시 함께 발급되는 refresh_token으로 갱신할 수 있습니다.
6. Token Refresh
POST https://mcp.imsend.kr/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token
&refresh_token={refresh_token}
&client_id={Key_ID}
&client_secret={Key_Secret}
grant_type=refresh_token 으로 요청하면 새 access_token을 반환합니다.
ChatGPT 연동
ChatGPT의 MCP 연동은 Actions 또는 Connectors를 통해 설정합니다.
인증 방식: Bearer Token
토큰: 발급받은 API 키
- ChatGPT 설정 → Connectors 또는 Custom Actions
- MCP 서버 URL 입력: https://mcp.imsend.kr/mcp
- 인증 타입: Bearer Token 선택
- API 키 입력 후 저장
Cursor / VS Code 연동
.cursor/mcp.json 또는 .vscode/mcp.json에 추가합니다.
{
"servers": {
"imsend-mcp": {
"type": "http",
"url": "https://mcp.imsend.kr/mcp",
"headers": {
"Authorization": "Bearer 여기에_API_키_입력"
}
}
}
}
도구(Tool) 목록
imsend MCP가 제공하는 도구 목록입니다. AI 에이전트가 자동으로 적절한 도구를 선택하여 호출합니다.
guide — 온보딩/사용법 안내 ★ 먼저 호출
처음 사용 시 가장 먼저 호출하는 도구입니다. 도구 목록, 요금, 발송 흐름을 주제별로 안내합니다.
{
"topic": "all" // all | sms | email | mms | alimtalk | image | pricing | report (기본: all)
}
💰 무료
send_sms — 단문 문자 발송
90자 이내의 단문 문자(SMS)를 발송합니다.
{
"receiver": "01012345678", // 수신번호
"message": "안녕하세요, 내일 오전 10시 미팅입니다." // 최대 90자
}
💰 단가: 17원/건
send_lms — 장문 문자 발송
2,000자 이내의 장문 문자(LMS)를 발송합니다.
{
"receiver": "01012345678",
"message": "안녕하세요.\n\n이번 행사 안내를 드립니다.\n..." // 최대 2000자
}
💰 단가: 40원/건
send_bulk — 대량 문자 발송
여러 수신자에게 동일한 문자를 한 번에 발송합니다.
{
"receivers": ["01012345678", "01087654321", "01099998888"],
"message": "공지 내용입니다.",
"type": "SMS" // "SMS" 또는 "LMS"
}
💰 단가: 타입에 따라 건당 동일 요금
send_mms — MMS 이미지 문자 발송
서버에 업로드된 이미지 경로(imagePath)로 MMS를 발송합니다. 이미지는 JPG/PNG/GIF 형식, 최대 2MB까지 지원합니다. 먼저 get_upload_url 또는 send_mms_upload로 이미지를 업로드해 savedPath를 받은 뒤 호출합니다.
| 파라미터 | 필수 | 설명 |
|---|---|---|
receiver | ✅ | 수신번호 (예: 01012345678) |
message | ✅ | 문자 내용 (최대 2000자) |
imagePath | ✅ | 업로드로 받은 savedPath (서버 업로드 경로) |
imageUrl | – | 업로드로 받은 imageUrl (로그용, 선택) |
{
"receiver": "01012345678",
"message": "이미지와 함께 발송하는 MMS입니다.",
"imagePath": "/opt/imsend/uploads/mms/1700000000_photo.jpg"
}
💰 단가: 90원/건
send_mms_now(receiver, message, imageBody)를 사용하세요 — 업로드+발송을 1번 호출로 처리합니다.
①
get_image_upload_url + send_mms_from_url — ★ 모든 환경 권장 (Claude웹·ChatGPT웹·모바일, Base64 없음)
② send_mms_from_url(imageUrl) — 공개 이미지 URL 있을 때 바로 발송
③ send_mms_upload (Base64) — ⚠️ 구버전, 4만 토큰 소모, 컨텍스트 초과 위험
send_mms_now — Base64 MMS 통합 발송
Base64 이미지를 1번 호출로 업로드+발송합니다. 파일 없이 즉시 보낼 때 사용하며, Claude.ai 본문에서 안정적입니다(GPT 환경은 truncation 주의). 서버에서 자동 640px 리사이즈 + JPG 변환합니다.
{
"receiver": "01012345678",
"message": "이미지 보내드립니다.",
"imageBody": "Base64인코딩값", // JPG/PNG/GIF, 최대 2MB
"imageName": "photo.jpg" // 선택 (기본: image.jpg)
}
💰 단가: 90원/건
send_mms_upload — Base64 이미지 업로드 구버전
Base64 이미지를 서버에 업로드하고 savedPath/imageUrl을 반환합니다. 반환된 savedPath를 send_mms의 imagePath로 사용합니다. ⚠️ GPT 환경에서 truncation이 발생할 수 있어 send_mms_now 또는 업로드 세션 방식을 권장합니다.
{
"imageBody": "Base64인코딩값", // JPG/PNG/GIF, 최대 2MB
"imageName": "photo.jpg" // 선택 (기본: image.jpg)
}
💰 무료 (발송은 send_mms 단가 적용)
get_upload_url — Pre-signed 업로드 URL 발급
MMS 이미지 또는 이메일 본문 이미지를 업로드할 URL을 발급합니다. AI가 curl/requests로 직접 binary 업로드하므로 Base64 방식보다 빠르고 대용량에 적합합니다.
| 파라미터 | 필수 | 설명 |
|---|---|---|
type | ✅ | mms (MMS 이미지, 최대 2MB) 또는 email (이메일 본문 이미지, 최대 5MB) |
fileName | – | 파일명 (기본: image.jpg) |
📱 MMS 이미지 업로드 (3단계)
# 1단계: 업로드 URL 발급 (send_mms 도구 사용)
get_upload_url(type="mms", fileName="photo.jpg")
# → uploadUrl, savedPath 반환
# 2단계: AI가 직접 이미지 PUT 업로드 (bash)
curl -X PUT "https://mcp.imsend.kr/mcp/upload/{token}" \
--data-binary @photo.jpg \
-H "Content-Type: application/octet-stream"
# 또는 Python
# import requests
# requests.put(uploadUrl, data=open('photo.jpg','rb'), headers={'Content-Type':'application/octet-stream'})
# 3단계: MMS 발송
send_mms(receiver="01012345678", message="이미지 발송", imagePath="{savedPath}")
📧 이메일 본문 이미지 업로드 (3단계)
# 1단계: 업로드 URL 발급
get_upload_url(type="email", fileName="banner.png")
# → uploadUrl, savedPath, imageUrl 반환
# 2단계: 이미지 PUT 업로드
curl -X PUT "https://mcp.imsend.kr/mcp/upload/{token}" \
--data-binary @banner.png \
-H "Content-Type: application/octet-stream"
# 3단계: 이메일 발송 (imageUrl을 본문에 삽입)
send_email(to="user@example.com", subject="...", content="<img src='https://imsend.kr/uploads/email/...'>")
🔄 환경별 권장 업로드 방식
| 환경 | 권장 방식 | 흐름 |
|---|---|---|
| 공개 URL 있을 때 모든 환경 |
send_mms_from_url ★ |
imageUrl 바로 전달 → 즉시 발송 |
| Claude.ai 웹 bash_tool 활성 시 |
get_upload_url → curl PUT |
get_upload_url → bash_tool curl PUT → send_mms(imagePath) |
| ChatGPT 웹 Python container |
get_image_upload_url → Python POST ★ |
get_image_upload_url → Python requests.post(multipart) → send_mms_from_url(imageUrl) |
| 브라우저 업로드 모든 환경 (링크 클릭) |
get_image_upload_url → 브라우저 |
get_image_upload_url → 링크 클릭 업로드 → check_upload_status → send_mms_from_url |
| Base64 (구버전) ⚠ GPT에서 잘림 발생 |
send_mms_upload ⚠ |
Claude.ai 소용량만 가능. GPT 사용 시 fileSize:75 오류 발생 — 사용 금지 |
💰 무료 (발송 시 해당 도구 단가 적용)
get_image_upload_url — 이미지 업로드 페이지 URL 발급 ★ 권장
사용자가 브라우저에서 직접 이미지를 올릴 수 있는 전용 업로드 페이지를 발급합니다. Base64 변환 없이 MMS/이메일 이미지를 처리하는 권장 방식입니다. Claude웹·ChatGPT웹·모바일 모든 환경에서 동작합니다.
파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
type | ✅ | mms (최대 2MB) 또는 email (최대 5MB) |
반환값
{
"uploadPageUrl": "https://mcp.imsend.kr/mcp/image-upload/{token}",
"token": "{token}",
"expiresIn": "15분",
"instruction": "아래 URL을 사용자에게 안내하세요. 업로드 완료 후 check_upload_status를 호출하세요.",
"nextStep": "check_upload_status(token)"
}
전체 흐름 (MMS 예시)
# 1단계: 업로드 링크 발급
get_image_upload_url(type="mms")
→ uploadPageUrl: "https://mcp.imsend.kr/mcp/image-upload/abc123"
# 2단계: 사용자에게 안내
"이미지를 여기서 업로드해주세요 (15분 유효):
https://mcp.imsend.kr/mcp/image-upload/abc123"
# 3단계: 사용자가 링크 클릭 → 파일 선택 → 업로드
# 4단계: 업로드 완료 확인
check_upload_status(token="abc123")
→ { done: true, imageUrl: "https://imsend.kr/uploads/mms/xxx.jpg" }
# 5단계: MMS 발송
send_mms_from_url(receiver="01012345678", message="이미지 발송", imageUrl="https://imsend.kr/uploads/mms/xxx.jpg")
🤖 ChatGPT 환경 (Python container)
# 1단계: get_image_upload_url(type="mms") 로 token 발급
# 2단계: ChatGPT Python container에서 실행
import requests
files = {"file": open("/mnt/data/photo.jpg", "rb")}
r = requests.post(
"https://mcp.imsend.kr/mcp/image-upload/{token}", # token 교체
files=files
)
result = r.json()
# result: {"success": true, "imageUrl": "https://imsend.kr/uploads/mms/xxx.jpg"}
# 3단계: MCP 도구 호출
# send_mms_from_url(receiver="01012345678", message="발송내용", imageUrl=result["imageUrl"])
requests.post(multipart)를 사용하면 Base64 잘림 없이 안정적으로 업로드됩니다.
check_upload_status — 업로드 완료 확인
get_image_upload_url 발급 후 사용자가 이미지를 업로드했는지 확인합니다. 완료 시 imageUrl을 반환합니다.
파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
token | ✅ | get_image_upload_url로 발급받은 토큰 |
반환값 예시
// 완료 시
{ "done": true, "imageUrl": "https://imsend.kr/uploads/mms/xxx.jpg", "fileName": "photo.jpg", "fileSize": 512000 }
// 대기 중
{ "done": false, "message": "아직 업로드 중입니다. 잠시 후 다시 확인하세요." }
// 만료
{ "done": false, "expired": true, "message": "토큰이 만료됐거나 존재하지 않습니다." }
send_mms_from_url — URL로 MMS 발송 ★ 권장
이미지 URL로 MMS를 발송합니다. check_upload_status에서 받은 imageUrl 또는 공개 이미지 URL을 사용합니다. Base64 없음.
파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
receiver | ✅ | 수신번호 (예: 01012345678) |
message | ✅ | 문자 내용 (최대 2000자) |
imageUrl | ✅ | 이미지 URL (imsend.kr/uploads/... 또는 공개 URL) |
campaignId | – | 캠페인 ID (선택) |
send_mms_from_url(
receiver="01012345678",
message="이미지 보내드립니다.",
imageUrl="https://imsend.kr/uploads/mms/1234567890_photo.jpg"
)
send_email — 이메일 발송
HTML을 지원하는 이메일을 발송합니다. 파일 첨부도 지원합니다.
| 파라미터 | 필수 | 설명 |
|---|---|---|
to | ✅ | 수신 이메일 주소 |
subject | ✅ | 이메일 제목 (최대 200자) |
content | ✅ | 이메일 본문 (HTML 가능) |
attachments | – | 첨부파일 목록 [{fileName, fileBody(Base64)}] 최대 5개, 파일당 10MB / PDF·DOC·XLS·PPT·HWP·ZIP·이미지 |
// 기본 발송
{
"to": "user@example.com",
"subject": "이메일 제목",
"content": "<h1>안녕하세요</h1><p>이메일 내용입니다.</p>"
}
// 파일 첨부 발송
{
"to": "user@example.com",
"subject": "첨부파일 포함 이메일",
"content": "<p>파일을 첨부했습니다.</p>",
"attachments": [
{ "fileName": "report.pdf", "fileBody": "JVBERi0xLjQ..." }
]
}
💰 단가: 1.5원/건
send_email_now — 이메일 통합 발송 (본문 이미지 1-step) ★ 권장
Base64 이미지 1번 전달로 본문 자동 삽입 후 이메일을 발송합니다. content에 {{IMAGE_URL}} 플레이스홀더를 두면 그 위치에, 없으면 본문 하단에 자동 삽입됩니다. 이미지 없이 텍스트만 보내도 됩니다.
| 파라미터 | 필수 | 설명 |
|---|---|---|
to | ✅ | 수신 이메일 주소 |
subject | ✅ | 이메일 제목 (최대 200자) |
content | ✅ | 본문 HTML (이미지 위치에 {{IMAGE_URL}} 사용 가능) |
imageBody | – | Base64 이미지 (JPG/PNG/GIF/WEBP, 최대 5MB) |
imageName | – | 이미지 파일명 (기본: image.jpg) |
fromEmail | – | 발신 이메일 (기본: info@imsend.kr) |
fromName | – | 발신자명 (기본: I'mSend) |
{
"to": "user@example.com",
"subject": "이미지 포함 이메일",
"content": "<p>본문입니다.</p>{{IMAGE_URL}}",
"imageBody": "Base64값",
"imageName": "banner.jpg"
}
💰 단가: 1.5원/건
create_mms_upload_session — MMS 자동발송 세션 ★★ 전 환경 1순위
MMS 이미지 발송을 위한 자동발송 세션을 생성합니다. 업로드 링크를 사용자에게 안내하면, 사용자가 이미지를 업로드하는 즉시 서버가 자동으로 MMS를 발송하고 페이지에서 결과를 표시합니다. AI 폴링 불필요 · Claude/GPT/모바일 통일
파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
receiver | ✅ | 수신번호 (예: 01012345678) |
message | ✅ | 문자 내용 (최대 2000자) |
전체 흐름
# 1단계: AI가 세션 생성
create_mms_upload_session(receiver="01012345678", message="이미지 보내드립니다")
→ { sessionId, uploadPageUrl, expiresIn: "15분" }
# 2단계: AI가 사용자에게 링크 안내
"이미지를 여기서 업로드해주세요: [링크]"
# 3단계: 사용자가 링크 클릭 → 이미지 선택 → 업로드
→ 서버: PNG/WEBP → JPG 640px 자동 변환
→ 서버: MMS 자동 발송
→ 페이지: "✅ 문자 전송이 완료되었습니다!" 표시 → 자동 닫힘(PC) / 닫기 버튼(모바일)
# 4단계 (선택): AI가 결과 확인
get_mms_upload_session_status(sessionId)
→ { uploaded: true, sendStatus: "DELIVERED", mseq: 12345 }
💰 단가: 90원/건
create_image_upload_session — curl 자동화 업로드 세션 ★ bash 자동화
Claude Desktop 등 bash 실행 환경에서 로컬 파일을 curl -F로 업로드하기 위한 세션을 생성합니다. 응답의 curl 명령으로 업로드한 뒤 send_mms_from_session으로 발송합니다(사람/브라우저 개입 불필요).
// 파라미터
{ "receiver": "01012345678", "message": "이미지 보내드립니다." }
// 응답
{ "session_id": "...", "upload_url": "...", "curl": "curl -F \"file=@/path/to/image.jpg\" \"...\"", "expires_in": 900 }
💰 무료 (발송은 MMS 90원/건 적용)
send_mms_from_session — 세션으로 MMS 발송
create_image_upload_session의 session_id로 업로드된 이미지를 MMS 발송합니다. 중복 호출해도 1회만 발송됩니다(idempotent). wait/wait_timeout_sec로 발송 결과까지 대기할 수 있습니다.
{
"session_id": "...", // create_image_upload_session의 session_id
"wait": true, // 선택, true면 60초 대기(별칭)
"wait_timeout_sec": 60 // 선택, 0=즉시반환 (1~110, 초과 시 110 클램프)
}
💰 단가: 90원/건
get_mms_upload_session_status — 세션 발송 결과 조회
create_mms_upload_session 이후 업로드/발송 상태를 폴링합니다. uploaded, sendStatus, mseq를 반환합니다.
{ "sessionId": "..." } // create_mms_upload_session으로 발급받은 sessionId
💰 무료
send_alimtalk — 카카오 알림톡 발송
카카오톡을 통해 알림톡을 발송합니다. 카카오톡 미수신 시 LMS로 자동 대체 발송됩니다.
수신자가 카카오톡을 사용하지 않거나 알림톡 수신이 불가한 경우, LMS로 자동 전환되어 발송됩니다. 기본값은
failover: true이며, 발송 결과에 대체 여부가 표시됩니다.
| 파라미터 | 필수 | 설명 |
|---|---|---|
receiver | ✅ | 수신번호 (예: 01012345678) |
template_code | ✅ | 승인된 템플릿 코드 (아래 목록 참조) |
variables | – | 치환 변수 객체 (예: {"서비스명":"MyApp"}) |
failover | – | 카카오 미수신 시 LMS 대체 여부 (기본: true) |
📋 MCP 공용 템플릿 미리보기
💬 카카오톡 미리보기
💻 사용 코드 예시
※ 템플릿은 카카오 심사 완료 후 사용 가능합니다. 현재 심사 진행 중.
💰 단가: 15원/건 (failover LMS 대체 발송 시에도 알림톡 단가 15원으로 차감. failover 활성 시 LMS 단가까지 잔액만 확인)
📋 MCP 공용 템플릿 변수 목록
Claude 웹 등 AI 클라이언트에서 템플릿변수를 바로 확인할 수 있도록 정리했습니다. JSON API: GET /api/v1/alimtalk/templates/public
| 코드 | 템플릿명 | 필수 변수명 (variables 키) | 사용 예시 |
|---|---|---|---|
| MCP-AUTH-001 | 인증번호 발송 | 서비스명, 인증번호, 유효시간 |
{"서비스명":"MyApp","인증번호":"123456","유효시간":"5"} |
| MCP-APPL-001 | 신청 접수 완료 | 서비스명, 이름, 신청유형, 접수번호, 접수일시 |
{"서비스명":"MyApp","이름":"홍길동","신청유형":"환불","접수번호":"A001","접수일시":"2026-05-07"} |
| MCP-APPL-002 | 신청 처리 결과 | 서비스명, 이름, 신청유형, 처리결과, 처리일시, 상세내용, 연락잘 |
{"신청유형":"환불","처리결과":"승인",...} |
| MCP-PAY-001 | 결제 완료 | 서비스명, 주문번호, 결제금액, 결제수단, 결제일시, 확인방법 |
{"서비스명":"MyShop","결제금액":"15,000",...} |
| MCP-PAY-002 | 환불 처리 완료 | 서비스명, 주문번호, 환불금액, 환불수단, 처리일시 |
{"환불금액":"10,000","환불수단":"카드",...} |
| MCP-RSRV-001 | 예약 확인 | 서비스명, 예약번호, 이름, 예약일시, 예약내용, 연락있 |
{"예약번호":"R001","예약일시":"2026-05-10 14:00",...} |
| MCP-RSRV-002 | 예약 일정 사전 안내 | 서비스명, 이름, 예정시간, 예약일시, 장소, 예약내용, 연락있 |
{"예정시간":"내일 오후 2시","장소":"서울",...} |
| MCP-ACCT-001 | 회원 가입 완료 | 서비스명, 이름, 가입일시, 아이디, 연락있 |
{"이름":"홍길동","가입일시":"2026-05-07",...} |
| MCP-SHIP-001 | 발송 완료 안내 | 서비스명, 이름, 발송내용, 발송일시, 확인방법, 연락있 |
★ 심사 진행 중 |
JSON API 제공: GET https://imsend.kr/api/v1/alimtalk/templates/public — Claude 등 AI가 자동으로 읽어 변수명을 확인할 수 있습니다.
send_email_image_upload — 이메일 본문 이미지 업로드
이메일 본문에 삽입할 이미지를 서버에 업로드합니다. 반환된 imageUrl을 send_email의 content에 <img src="..."> 형태로 사용하세요.
| 파라미터 | 필수 | 설명 |
|---|---|---|
imageBody | ✅ | 이미지 Base64 인코딩 (JPG/PNG/GIF/WEBP, 최대 5MB) |
imageName | – | 파일명 (기본: image.jpg) |
// 1단계: 이미지 업로드
{ "imageBody": "Base64값", "imageName": "banner.jpg" }
// 응답
{ "imageUrl": "https://imsend.kr/uploads/email/2026/05/1234_banner.jpg" }
// 2단계: 이메일 본문에 삽입
{
"to": "user@example.com",
"subject": "이미지 포함 이메일",
"content": "<p>본문입니다.</p><img src='https://imsend.kr/uploads/email/...' />"
}
※ 업로드된 이미지는 90일 후 자동 삭제됩니다.
💰 무료
check_balance — 잔여 포인트 조회
현재 잔여 포인트를 조회합니다.
// 파라미터 없음
// 응답 예시
{
"balance": 4980,
"unit": "KRW"
}
💰 무료
get_history — 발송 이력 조회
최근 발송 이력을 조회합니다. 실패 건에는 error_code와 error_reason이 포함됩니다.
// 요청
{ "limit": 20 }
// 응답 예시 (성공)
{ "msg_type": "S", "receiver": "01012345678", "status": "DELIVERED", "unit_price": 10 }
// 응답 예시 (실패)
{ "msg_type": "S", "receiver": "01012345678", "status": "FAILED",
"unit_price": 10, "error_code": "211", "error_reason": "수신거부 또는 번호 오류" }
💰 무료
get_result — 단건 발송 결과 조회
발송 시 반환된 mseq로 실시간 결과(DELIVERED/FAILED/사유)를 조회합니다.
{ "mseq": 19500 } // send_sms/send_mms/send_alimtalk 발송 시 반환된 값
💰 무료
get_sender — 발신번호 조회
현재 기본 발신번호와 본인인증이 완료된 개인 발신번호(mySenders) 목록을 반환합니다. 파라미터는 없습니다.
// 응답 예시
{ "sender": "033-911-6510", "mySenders": [{ "phone": "01012345678", "verifiedAt": "..." }] }
💰 무료
register_sender_number — 개인 발신번호 등록 (NICE 본인확인)
NICE 본인확인으로 개인 발신번호를 등록합니다. 응답의 authUrl을 사용자에게 안내하고, 인증 완료 후 verify_sender_status로 결과를 확인합니다.
{ "phone": "01012345678" } // 선택 (NICE 인증 결과와 일치해야 등록)
// 응답: { "sessionId": "...", "authUrl": "...", "expiresIn": ... }
💰 무료
verify_sender_status — 본인확인 상태 조회
register_sender_number 응답의 sessionId로 NICE 본인확인 진행 상태(VERIFIED/PENDING/FAILED/EXPIRED)를 폴링합니다.
{ "sessionId": "..." } // register_sender_number 응답의 sessionId
💰 무료
charge_point — 포인트 충전
충전용 URL을 반환합니다. 카카오페이 직접 결제는 준비 중이며, 현재는 반환된 충전 페이지(chargeUrl)에서 충전합니다.
{
"amount": 10000 // 충전 금액 (최소 5,000원)
}
// 응답 (현재)
{
"note": "카카오페이 충전 준비 중입니다.",
"amount": 10000,
"chargeUrl": "https://mcp.imsend.kr/charge?amount=10000"
}
📌 카카오페이 가맹 완료 후 charge_point가 결제 링크를 직접 반환할 예정입니다.
요금 안내
선불 포인트 방식으로 운영됩니다. 최소 충전 금액은 5,000원이며, 가입 즉시 웰컴 포인트가 지급됩니다.
📌 MCP(AI 에이전트) 발송은 별도 단가 체계입니다 — 가맹점용 일반 API의 기본 단가·가맹점별 협의 단가와 무관하게 아래 MCP 단가가 적용됩니다(imsend 3중 단가 체계의 ③). 일반 API 요금은 충전/요금 문서 참고.
| 발송 유형 | 단가 | 제한 |
|---|---|---|
| SMS (단문) | 17원/건 | 90자 |
| LMS (장문) | 40원/건 | 2,000자 |
| MMS | 90원/건 | 이미지 포함 |
| 이메일 | 1.5원/건 | HTML 지원 |
| 카카오 알림톡 | 15원/건 | 승인 템플릿 필요 |
에러 코드
응답 포맷
모든 도구는 성공/실패 여부와 관계없이 동일한 JSON 구조로 응답합니다.
// SMS 성공 예시
{
"success": true,
"mseq": 19500,
"batchId": "a1b2c3d4",
"note": "발송 처리 중. 결과 확인 후 포인트가 차감됩니다."
}
// 이메일 성공 예시
{
"success": true,
"messageId": "20260504000094897303",
"balanceAfter": 4962.5
}
// 검증 실패 (입력값 오류 등) — error 코드만 반환
{
"error": "INSUFFICIENT_BALANCE",
"detail": "..." // 일부 코드만 detail 포함
}
// 발송 처리 중 예외 — success:false + error 메시지
{
"success": false,
"error": "...",
"detail": "at Object.<anonymous> ..."
}
// 에러 코드는 아래 표 참조
에러 코드 목록
| 코드 | 설명 | 해결 방법 |
|---|---|---|
| UNAUTHORIZED | API 키 인증 실패 | API 키 확인 및 재발급 |
| INSUFFICIENT_BALANCE | 포인트 부족 | charge_point로 충전 |
| INVALID_PHONE | 수신번호 형식 오류 | 01012345678 형식 사용 |
| BANNED_WORD | 금칙어 포함 | 스팸성 문구 제거 |
| MEMBER_NOT_FOUND | mcp_member 매핑 없음 | imsend 계정·API 키 재확인 |
| BASE64_TRUNCATED | Base64 이미지 데이터 잘림 (GPT 환경) | alternative 필드 안내대로 get_image_upload_url 사용 |
| INVALID_FORMAT | 미지원 이미지 형식 (JPG/PNG/GIF/WEBP 외) | 허용 확장자로 변환 |
| IMAGE_TOO_LARGE | 이미지 용량 초과 (MMS 2MB / 이메일 5MB) | 리사이즈 후 재시도 |
| INVALID_IMAGE_PATH | 업로드 디렉토리 밖 경로 (LFI 차단) | 업로드 도구가 반환한 savedPath 그대로 사용 |
| INVALID_IMAGE_URL | 허용되지 않은 이미지 URL (SSRF 차단) | imsend.kr https URL만 사용 |
| IMAGE_NOT_FOUND | 지정 경로에 이미지 파일 없음 | 업로드 후 호출 |
| SESSION_FILE_MISSING | 세션 업로드 파일 없음 | create_image_upload_session으로 새 세션 생성 후 재업로드 |
| TEMPLATE_NOT_FOUND | 승인된 알림톡 템플릿 없음 | 카카오 심사 완료 후 사용 |
| NOT_FOUND | mseq 발송 결과 없음 | 발송 시 반환된 mseq 값 확인 |
| CACHE_NOT_AVAILABLE | 업로드 세션 캐시 미초기화 | 잠시 후 재시도 (서버 재시작 필요) |
| INTERNAL_ERROR | NICE 본인확인 등 내부 처리 오류 | detail 필드 확인 후 재시도 |
| NCP 이메일 오류 | NCP API 응답 오류 | detail 필드에서 실제 메시지 확인 |
자주 묻는 질문
발신번호는 어떻게 되나요?
기본 발신번호는 임팩시스 대표번호(033-911-6510)입니다. 개인 발신번호 등록도 지원합니다 — register_sender_number로 NICE 본인확인 URL을 발급받아 인증을 완료한 뒤 verify_sender_status로 결과를 확인하면 등록됩니다. 등록된 개인 발신번호는 get_sender로 조회할 수 있습니다.
포인트 유효기간이 있나요?
충전일로부터 1년간 유효합니다.
API 키를 잃어버렸어요.
imsend.kr/Home/mcp/apikey에서 재발급받을 수 있습니다. 기존 키는 즉시 무효화됩니다.
대량 발송 한도가 있나요?
분당 60건의 기본 한도가 있습니다. 더 많은 발송이 필요하면 info@imcorp.kr로 문의주세요.