인증
/api에 대한 모든 요청에는 Bearer 토큰이 있는 Authorization 헤더가 필요합니다. 두 가지 방법으로 토큰을 얻을 수 있습니다.
OAuth (AI 클라이언트에 권장)
AI 클라이언트는 첫 연결 시 동적 클라이언트 등록을 실행합니다. /mcp/connect 페이지가 이를 자동으로 처리합니다. 클라이언트는 30일 액세스 토큰을 받습니다.
API 키
스크립트와 CI를 위해 DesignerBox 앱의 계정 / API 키에서 개인 API 키를 생성하세요. 키는 apikey_로 시작합니다.
엔드포인트
모든 도구 호출은 HTTPS POST를 통한 단일 JSON-RPC 2.0 엔드포인트로 전송됩니다.
도구
list_designs
선택적 폴더 필터와 페이지네이션으로 현재 팀의 디자인을 나열합니다.
인수
limitfolderId반환
designs: [{id, title, folderId, brandProfileId, createdAt, updatedAt}] 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":1,
"params":{"name":"list_designs","arguments":{"limit":10}}}
get_design
제목, 폴더, 브랜드 프로필 참조 및 생성 날짜를 포함한 단일 디자인의 전체 메타데이터를 가져옵니다.
인수
designId반환
전체 디자인 메타데이터를 포함한 객체: id, title, folderId, brandProfileId, createdAt, updatedAt.
예시
{"jsonrpc":"2.0","method":"tools/call","id":2,
"params":{"name":"get_design","arguments":{"designId":""}}}
search_designs
활성 팀의 디자인 제목과 설명에 대한 전체 텍스트 검색입니다.
인수
querylimit반환
designs: [{id, title, folderId, snippet, updatedAt}] 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":3,
"params":{"name":"search_designs","arguments":{"query":"logo","limit":10}}}
list_brand_profiles
현재 팀의 모든 브랜드 프로필을 목소리, 테마, 틈새, 업종과 함께 반환합니다.
인수
인수 없음.
반환
profiles: [{id, name, brandVoice, mainThemes, primaryNiche, industry, isActive}] 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":4,
"params":{"name":"list_brand_profiles","arguments":{}}}
list_folders
활성 팀 워크스페이스의 폴더를 나열합니다. list_designs를 특정 폴더로 제한하는 데 유용합니다.
인수
인수 없음.
반환
folders: [{id, name, designCount, createdAt}] 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":5,
"params":{"name":"list_folders","arguments":{}}}
list_photo_packs
사용 가능한 사진팩을 탐색합니다. 카테고리 레이블에 대한 선택적 언어 매개변수를 허용합니다.
인수
language반환
packs: [{id, name, category, imageCount, language}] 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":6,
"params":{"name":"list_photo_packs","arguments":{}}}
list_teams
인증된 사용자가 속한 팀과 현재 활성 팀을 반환합니다.
인수
인수 없음.
반환
currentTeamId와 teams: [{teamId, teamName, isCurrent}] 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":7,
"params":{"name":"list_teams","arguments":{}}}
get_plan_limits
현재 구독 계층과 계층별 할당량(저장 공간과 AI 크레딧)을 읽습니다. aiCredits 블록은 월간 구독 크레딧, 일회성 크레딧 팩의 purchasedBalance, total 한도, 남은 available을 중첩합니다. 모든 플랜에서 사용 가능합니다.
인수
인수 없음.
반환
tier, isPaid, isTrial, upgradeUrl, limits.storage ({limit, current, exceeded}), limits.aiCredits ({monthly:{limit,current,exceeded}, purchasedBalance, total, available}), creditsAvailable ({monthly, purchasedBalance, total})를 포함한 객체. ULTRA Unlimited인 경우 limits.aiCredits.monthly.limit와 limits.aiCredits.total은 둘 다 -1, limits.aiCredits.available은 null, creditsAvailable.monthly와 creditsAvailable.total은 둘 다 null입니다. purchasedBalance는 항상 숫자입니다(팩이 없으면 0).
예시
{"jsonrpc":"2.0","method":"tools/call","id":8,
"params":{"name":"get_plan_limits","arguments":{}}}
get_plan
플랜 이름, 청구 주기(월간 또는 연간), Stripe 구독 상태, 통화, 갱신일, 체험 종료일, 좌석 수를 읽습니다. get_plan_limits와 한 쌍입니다. 모든 플랜에서 AI 크레딧 비용 없이 사용 가능합니다.
인수
인수 없음.
반환
tier, isPaid, isTrial, billingCycle(월간 또는 연간 또는 null), status(Stripe 상태), currency, renewalDate(ISO 8601), trialEnd(ISO 8601 또는 null), quantity(좌석 수 또는 null), cancelAtPeriodEnd, upgradeUrl을 포함한 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":43,
"params":{"name":"get_plan","arguments":{}}}
search_tools
텍스트, 카테고리 또는 의도로 MCP 도구 카탈로그를 검색합니다. 카테고리, 범위, 설명을 반환합니다.
인수
All optional. Call with no arguments to list all 43 tools.
querycategory반환
totalTools, matchCount, categories, tools: [{name, category, requiresScope, description, useCases, matchedOn: [name|category|description|use_case]}] 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":9,
"params":{"name":"search_tools",
"arguments":{"query":"brand profile"}}}
create_avatar유료 플랜
텍스트 프롬프트로 AI 아바타 이미지를 생성합니다. AI 크레딧과 유료 플랜이 필요합니다.
인수
promptstyleclientRequestId반환
taskId, status, imageUrl (준비 시), creditsUsed를 포함한 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":10,
"params":{"name":"create_avatar",
"arguments":{"prompt":"professional headshot, warm lighting"}}}
set_current_team
이 Bearer 토큰의 활성 팀을 전환합니다. 사용자가 멤버여야 합니다. 이후 도구에 즉시 적용됩니다.
인수
teamId반환
teamId, teamName, persisted, 선택적 메모를 포함한 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":11,
"params":{"name":"set_current_team",
"arguments":{"teamId":"team_xxxxx"}}}
update_brand_profile
활성 브랜드 프로필을 업데이트합니다. 허용된 필드: brandVoice, mainThemes, contentGoals, contentTypes, primaryNiche, subNiches, industry, industries.
인수
brandVoiceOther patchable fields: mainThemes, contentGoals, contentTypes, primaryNiche, subNiches, industry, industries.
반환
profileId, name, updated: [변경된 필드 이름], 패치 후 현재 값을 포함한 객체.
예시
{"jsonrpc":"2.0","method":"tools/call","id":12,
"params":{"name":"update_brand_profile",
"arguments":{"brandVoice":["bold","minimal"]}}}
아바타
list_avatars
현재 사용자의 아바타 생성 작업을 나열합니다(사용자 범위, 팀 범위 아님). 선택적 상태 필터와 한도(기본 50, 최대 100).
인수
statuslimit예시
{"jsonrpc":"2.0","method":"tools/call","id":13,
"params":{"name":"list_avatars","arguments":{"status":"completed"}}}
get_avatar
taskUUID로 단일 아바타 작업의 전체 세부정보를 가져옵니다. 완료 시 생성된 이미지를 포함한 작업 상태를 반환합니다. teamId가 해결되면 팀 간 접근은 거부됩니다.
인수
taskUUID예시
{"jsonrpc":"2.0","method":"tools/call","id":14,
"params":{"name":"get_avatar","arguments":{"taskUUID":""}}}
get_avatar_status
아바타 작업 진행 상황을 폴링합니다. 간단한 상태 스냅샷(status, progress, message)을 반환합니다. 완료 후 생성된 이미지를 포함한 전체 세부정보는 get_avatar를 사용하세요.
인수
taskUUID예시
{"jsonrpc":"2.0","method":"tools/call","id":15,
"params":{"name":"get_avatar_status","arguments":{"taskUUID":""}}}
템플릿
list_templates
카테고리로 그룹화된 콘텐츠 템플릿을 나열합니다. 카탈로그 형태(팀 단위가 아님)입니다. 한 로케일로 제한하려면 language를 전달하고, 모든 언어를 보려면 생략하세요. 전체 본문은 get_template을 사용하세요.
인수
language예시
{"jsonrpc":"2.0","method":"tools/call","id":16,
"params":{"name":"list_templates","arguments":{"language":"en"}}}
get_template
id 또는 slug로 단일 템플릿을 가져옵니다. 콘텐츠 스캐폴드로 사용할 템플릿 본문을 반환합니다. id 또는 slug 중 하나가 필요합니다.
인수
idslug예시
{"jsonrpc":"2.0","method":"tools/call","id":17,
"params":{"name":"get_template","arguments":{"slug":"hero-banner"}}}
자산
list_assets
활성 팀의 자산(업로드된 이미지, 비디오, 파일)을 나열합니다. 폴더 또는 MIME 접두사로 선택적 필터링이 가능합니다. 전체 세부정보는 get_asset을 사용하세요.
인수
folderIdpagelimittype예시
{"jsonrpc":"2.0","method":"tools/call","id":18,
"params":{"name":"list_assets","arguments":{"type":"image","limit":20}}}
get_asset
ID로 단일 자산의 전체 세부정보를 가져옵니다. 팀 간 접근은 기본 서비스에서 거부됩니다.
인수
id예시
{"jsonrpc":"2.0","method":"tools/call","id":19,
"params":{"name":"get_asset","arguments":{"id":""}}}
list_brand_assets
활성 팀의 브랜드 자산(로고, 폰트, 팔레트 등)을 나열합니다. 브랜드 프로필, 파일 유형, 카테고리, 태그 또는 자유 텍스트로 선택적 필터링이 가능합니다. 음성과 테마를 설명하는 브랜드 프로필과는 다릅니다.
인수
brandProfileIdfileTypecategorytagssearch예시
{"jsonrpc":"2.0","method":"tools/call","id":20,
"params":{"name":"list_brand_assets","arguments":{"category":"logo"}}}
AI 생성
generate_image유료 플랜
하나 이상의 AI 이미지를 동기적으로 생성합니다(약 30초). 이미지당 최소 1 AI 크레딧이 필요합니다. FREE 플랜은 차단됩니다. 5분 내 멱등 재시도를 위해 clientRequestId를 전달하세요. 생성된 이미지 URL을 즉시 반환합니다.
인수
promptmodelaspectRationumberResultsnegativePromptclientRequestId예시
{"jsonrpc":"2.0","method":"tools/call","id":21,
"params":{"name":"generate_image",
"arguments":{"prompt":"sunset over the alps","aspectRatio":"16:9"}}}
generate_video유료 플랜
AI 비디오 생성 작업을 제출합니다. 즉시 taskUUID를 반환하며 작업은 비동기적으로 처리됩니다(BullMQ 지원). 완료 폴링에는 get_video_status를 사용하세요. 크레딧 비용은 모델과 길이에 따라 계산됩니다. FREE 플랜은 차단됩니다.
인수
promptmodeltypedurationresolutionaspectRatioinputImagenegativePromptclientRequestId예시
{"jsonrpc":"2.0","method":"tools/call","id":22,
"params":{"name":"generate_video",
"arguments":{"prompt":"a cat surfing","model":""}}}
get_video_status
비디오 생성 작업 진행 상황을 폴링합니다. 완료 시 최종 비디오 URL을 포함한 전체 작업 상태를 반환합니다. BullMQ 큐(실제 비동기)로 지원됩니다.
인수
taskUUID예시
{"jsonrpc":"2.0","method":"tools/call","id":23,
"params":{"name":"get_video_status","arguments":{"taskUUID":""}}}
스톡 사진
search_stock_photos
Unsplash, Pexels, Pixabay에서 동시에 스톡 사진을 검색합니다. 각 공급자의 결과와 공급자별 오류를 반환합니다. 검색만 가능하며 목록 또는 탐색은 없습니다.
인수
querypageperPage예시
{"jsonrpc":"2.0","method":"tools/call","id":24,
"params":{"name":"search_stock_photos","arguments":{"query":"mountains"}}}
커뮤니티 워크플로우 및 파이프라인
list_community_workflows
게시된 커뮤니티 워크플로우를 나열합니다. 카테고리로 필터링하고 인기, 최신, 조회수로 정렬하며 내 것, 팀 또는 모두로 범위를 지정합니다. 전체 그래프는 get_community_workflow를 사용하세요.
인수
pagelimitcategorysortsearchfilter예시
{"jsonrpc":"2.0","method":"tools/call","id":25,
"params":{"name":"list_community_workflows","arguments":{"sort":"recent"}}}
get_community_workflow
커뮤니티 워크플로우의 노드 그래프와 엣지를 포함한 전체 세부정보를 가져옵니다. 탐색은 list_community_workflows를 사용하세요.
인수
id예시
{"jsonrpc":"2.0","method":"tools/call","id":26,
"params":{"name":"get_community_workflow","arguments":{"id":""}}}
list_pipelines
활성 팀의 파이프라인(워크플로우 캔버스)을 나열합니다. 노드 수가 포함된 간소화된 형태를 반환하며 전체 그래프는 get_pipeline을 사용하세요.
인수
pagelimitsort예시
{"jsonrpc":"2.0","method":"tools/call","id":27,
"params":{"name":"list_pipelines","arguments":{}}}
get_pipeline
활성 팀 범위에서 ID로 파이프라인(워크플로우 캔버스)을 가져옵니다. 전체 노드 및 엣지 그래프를 반환합니다.
인수
id예시
{"jsonrpc":"2.0","method":"tools/call","id":28,
"params":{"name":"get_pipeline","arguments":{"id":""}}}
list_whiteboards
활성 팀 범위에서 현재 사용자의 MySpace 화이트보드를 나열합니다. 화이트보드 콘텐츠는 목록 보기에서 생략되며, 콘텐츠는 전용 읽기 엔드포인트를 사용하세요.
인수
인수 없음.
예시
{"jsonrpc":"2.0","method":"tools/call","id":29,
"params":{"name":"list_whiteboards","arguments":{}}}
대화 및 화이트보드
list_conversations
활성 팀에 대한 사용자의 AI Assistant 채팅 대화를 나열합니다. 선택적 상태 필터(active 또는 archived)와 태그 필터. 전체 메시지 기록은 get_conversation을 사용하세요.
인수
statuspagelimittags예시
{"jsonrpc":"2.0","method":"tools/call","id":30,
"params":{"name":"list_conversations","arguments":{"status":"archived"}}}
get_conversation
단일 AI Assistant 대화의 전체 메시지 기록을 가져옵니다. 사용자 간 및 팀 간 접근은 기본 서비스에서 거부됩니다.
인수
id예시
{"jsonrpc":"2.0","method":"tools/call","id":31,
"params":{"name":"get_conversation","arguments":{"id":""}}}
갤러리 및 스킬
generate_design유료 플랜
소스 이미지에 스킬을 적용하여 갤러리 디자인을 생성합니다 (image-to-image). 동기 ~30-45초. 호출당 1 AI 크레딧. FREE 티어는 차단됩니다. list_skills를 사용하여 유효한 skillId 값을 발견하십시오. 5분 이내 멱등 재시도를 위해 clientRequestId를 전달하십시오.
인수
sourceImageUrlskillIdclientRequestId예시
{"jsonrpc":"2.0","method":"tools/call","id":32,
"params":{"name":"generate_design",
"arguments":{"sourceImageUrl":"https://example.com/photo.jpg","skillId":""}}}
list_galleries
활성 팀과 사용자의 AI 갤러리 자산 (generate_design으로 생성된 디자인)을 나열합니다. 페이지네이션과 선택적 카테고리 필터를 지원합니다. 슬림 형태로 반환합니다: assetId, assetUrl, slug, displayName, galleryCategory, createdAt.
인수
limitpagecategory예시
{"jsonrpc":"2.0","method":"tools/call","id":33,
"params":{"name":"list_galleries","arguments":{"limit":10}}}
list_skills
generate_design에 사용 가능한 활성 스킬을 나열합니다. skillId, name, type (image 또는 video), group, category를 반환합니다. generate_design을 호출하기 전에 유효한 skillId 값을 발견하는 데 사용하십시오.
인수
type예시
{"jsonrpc":"2.0","method":"tools/call","id":34,
"params":{"name":"list_skills","arguments":{"type":"image"}}}
시네마틱 생성
generate_cinema_studio유료 플랜
카메라 바디, 렌즈, 초점 거리, 조리개, 화면 비율 조합을 사용하여 시네마틱 AI 이미지를 생성합니다. 동기 ~30초. 이미지당 1 AI 크레딧. FREE 티어는 차단됩니다. referenceImageUrl을 제공하면 reference-image (스타일 전송) 모드로 전환됩니다. 5분 이내 멱등 재시도를 위해 clientRequestId를 전달하십시오.
인수
scenePromptcameraBodylensfocalLengthapertureaspectRatioimageCountreferenceImageUrlclientRequestId예시
{"jsonrpc":"2.0","method":"tools/call","id":35,
"params":{"name":"generate_cinema_studio",
"arguments":{"scenePrompt":"a wide shot of a foggy harbour at dawn","aspectRatio":"16:9","imageCount":2}}}
비동기 작업 관리
cancel_avatar_task파괴적
대기 중이거나 진행 중인 아바타 생성 작업을 취소합니다. 서비스 측 환불 경로가 이전에 청구된 크레딧을 반환합니다. 종료 상태 (completed 또는 failed) 작업은 취소할 수 없으며, 호출은 구조화된 오류를 반환합니다.
인수
taskUUID예시
{"jsonrpc":"2.0","method":"tools/call","id":36,
"params":{"name":"cancel_avatar_task","arguments":{"taskUUID":""}}}
cancel_video_task파괴적
대기 중이거나 진행 중인 비디오 생성 작업을 취소합니다. 서비스 측 환불 경로가 이전에 청구된 크레딧을 반환합니다. 종료 상태 (completed 또는 failed) 작업은 취소할 수 없으며, 호출은 구조화된 오류를 반환합니다.
인수
taskUUID예시
{"jsonrpc":"2.0","method":"tools/call","id":37,
"params":{"name":"cancel_video_task","arguments":{"taskUUID":""}}}
list_video_tasks
현재 사용자의 비디오 생성 작업을 나열합니다 (사용자 범위, list_avatars와 동등). 선택적 상태 필터 (pending, processing, completed, failed, cancelled)와 한도 (기본값 20, 최대 100). 전체 폴링 상세 정보는 get_video_status를 사용하십시오.
인수
statuslimit예시
{"jsonrpc":"2.0","method":"tools/call","id":38,
"params":{"name":"list_video_tasks","arguments":{"status":"completed"}}}
단일 가져오기 상세
get_brand_profile
ID로 단일 브랜드 프로필의 전체 상세 정보를 검색합니다. 팀 간 접근은 일반적인 not-found로 거부됩니다 (존재 누출 없음). ID 열거에는 list_brand_profiles를 사용하십시오.
인수
brandProfileId예시
{"jsonrpc":"2.0","method":"tools/call","id":39,
"params":{"name":"get_brand_profile","arguments":{"brandProfileId":""}}}
get_brand_asset
ID로 단일 브랜드 자산의 전체 상세 정보를 검색합니다. 팀 간 접근은 일반적인 not-found로 거부됩니다 (존재 누출 없음). ID 열거에는 list_brand_assets를 사용하십시오.
인수
brandAssetId예시
{"jsonrpc":"2.0","method":"tools/call","id":40,
"params":{"name":"get_brand_asset","arguments":{"brandAssetId":""}}}
get_photo_pack
이미지를 포함한 단일 포토팩 카테고리를 검색합니다. 카탈로그 형태 (팀 범위 없음). 선택적 언어 코드; 요청된 로케일이 없으면 영어로 대체됩니다.
인수
categoryIdlanguage예시
{"jsonrpc":"2.0","method":"tools/call","id":41,
"params":{"name":"get_photo_pack","arguments":{"categoryId":"3d-rendered-object"}}}
get_whiteboard
전체 콘텐츠 블롭을 포함한 단일 화이트보드를 ID로 검색합니다. 화이트보드는 사용자 범위 (생성자 전용)이며, 사용자 간 접근은 일반적인 not-found로 거부됩니다.
인수
whiteboardId예시
{"jsonrpc":"2.0","method":"tools/call","id":42,
"params":{"name":"get_whiteboard","arguments":{"whiteboardId":""}}}
MCP 리소스
리소스는 클라이언트가 MCP resources/read 메서드를 통해 가져올 수 있는 읽기 전용 컨텍스트입니다. Claude는 대화 시작 시 이를 로드합니다.
designerbox://account/summary
플랜, 사용/남은 AI 크레딧, 디자인 수, 활성 팀 이름, 폴더 수.
designerbox://brand-profiles/active
LLM 관련 필드가 있는 현재 팀의 활성 브랜드 프로필.
designerbox://teams/current
현재 팀 메타데이터 (teamId, teamName)와 사용 가능한 총 팀 수.
designerbox://recent-designs
활성 팀의 최신 디자인 10개, Claude 컨텍스트에 미리 로드됨.
명명된 워크플로우
여러 도구를 조율하는 슬래시 메뉴 단축키. 하나를 선택하고 AI 어시스턴트가 변경 전 확인과 함께 다단계 작업을 수행하도록 하세요.
/weekly-design-batch
브랜드 프로필과 최근 디자인을 읽고 다음 주를 위한 디자인 테마와 폴더 목표를 제안합니다.
/audit-gallery
list_designs로 최근 디자인을 검토하고 활성 브랜드 프로필에서 벗어난 항목을 표시합니다. 읽기 전용.
/brand-sync
디자인을 활성 브랜드 프로필과 비교하고 격차를 파악합니다. 변경 전 승인이 필요한 업데이트를 제안합니다.
/regenerate-with-style
기존 디자인을 다른 스타일로 재생성합니다. get_asset을 호출하고, 필요 시 list_skills를 호출한 다음 generate_design을 호출합니다.
디스커버리 및 OAuth 엔드포인트
모든 MCP 클라이언트가 자동으로 구성할 수 있도록 표준을 준수하는 메타데이터입니다.
GET /.well-known/oauth-protected-resource/apiRFC 9728GET /.well-known/oauth-authorization-serverRFC 8414GET /oauth/.well-known/openid-configurationOIDCPOST /oauth/regDynamic Client Registration (RFC 7591)GET /oauth/authAuthorize (PKCE-S256 required)POST /oauth/tokenToken exchange
