ibo
Commission cinematic AI campaign films from IBO Studio, with custom scoping when needed.
사용해야 할까요
품질 및 안전성
발견 사항 (3)
- HIGH
- MEDIUMsubmit_custom_inquiry에서
- INFOsubmit_custom_inquiry에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"ibo": {
"url": "https://ibouniverse.com/mcp"
}
}
}원격 엔드포인트
https://ibouniverse.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (8)
🟢list_offers
IBO's production packages: stable ids, prices, 50% deposits, deliverables, review rounds, and the scope/refund policy. Call this first.
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"studio": {
"type": "string"
},
"url": {
"type": "string"
},
"currency": {
"type": "string"
},
"policies": {
"type": "object"
},
"how_to_order": {
"type": "array"
},
"offers": {
"type": "array"
}
},
"additionalProperties": false
}🟡create_checkout(package, client_request_id)
Create a Stripe Checkout for a package's 50% deposit. Returns checkout_url, stripe_session_id, and amount_due. Show the amount to your user and open checkout_url for THEM to approve and pay; agents never complete payment themselves. Prices are fixed server-side. Pass a stable client_request_id so retries do not create duplicate checkouts.
입력 스키마
{
"type": "object",
"properties": {
"package": {
"type": "string",
"enum": [
"film",
"film4k",
"series"
],
"description": "Offer id from list_offers"
},
"client_request_id": {
"type": "string",
"description": "Stable id you generate; makes creation idempotent on retry"
}
},
"required": [
"package",
"client_request_id"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"offer_id": {
"type": "string"
},
"checkout_url": {
"type": "string"
},
"stripe_session_id": {
"type": "string"
},
"amount_due": {
"type": "number"
},
"currency": {
"type": "string"
},
"note": {
"type": "string"
}
},
"additionalProperties": false
}🟢get_order(session_id)
Verify payment after checkout and receive an order-scoped access token. Returns paid, package, deposit, and order_token: use order_token for create_upload_url and submit_brief. Payment status can only be established here, never assumed.
입력 스키마
{
"type": "object",
"properties": {
"session_id": {
"type": "string",
"description": "Stripe checkout session id (cs_...)"
}
},
"required": [
"session_id"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"paid": {
"type": "boolean"
},
"package": {
"type": "string"
},
"total": {
"type": "string"
},
"deposit": {
"type": "number"
},
"order_token": {
"type": "string"
},
"expires_at": {
"type": "number"
}
},
"additionalProperties": false
}🟡submit_brief(order_token, name, email, company, package, ...)
Submit the creative brief for a PAID order: pass order_token (from get_order; session ids are not accepted here) plus project fields (product, goal, audience, channels, resolution, launch, links, constraints) and files[] from create_upload_url. Delivery resolution must be selected before creative kickoff. Customer identity comes from the verified payment. NOTE: unpaid/anonymous submissions are rejected here; for Custom Production inquiries without payment use the submit_custom_inquiry tool instead.
입력 스키마
{
"type": "object",
"properties": {
"order_token": {
"type": "string",
"description": "From get_order"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"company": {
"type": "string"
},
"package": {
"type": "string"
},
"product": {
"type": "string"
},
"goal": {
"type": "string"
},
"audience": {
"type": "string"
},
"channels": {
"type": "string"
},
"resolution": {
"type": "string",
"description": "Final master resolution selected before creative kickoff"
},
"launch": {
"type": "string"
},
"links": {
"type": "string"
},
"constraints": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"size": {
"type": "number"
}
},
"required": [
"key",
"name",
"size"
],
"additionalProperties": false
}
}
},
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"error": {
"type": "string"
}
},
"additionalProperties": false
}🟡create_upload_url(filename, size, order_token)
Get a short-lived presigned URL to upload one brand-asset file to IBO's private storage. Requires order_token from get_order; the storage location is bound to the order server-side. PUT the raw file bytes to url, then reference key in submit_brief files[]. Allowed: jpg png webp pdf svg mp4 mov zip ai psd; 250MB/file, 1GB per order.
입력 스키마
{
"type": "object",
"properties": {
"filename": {
"type": "string"
},
"size": {
"type": "number",
"description": "File size in bytes"
},
"order_token": {
"type": "string",
"description": "From get_order"
}
},
"required": [
"filename",
"size",
"order_token"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"key": {
"type": "string"
},
"error": {
"type": "string"
}
},
"additionalProperties": false
}🟡submit_custom_inquiry(name, email, company, product, goal, ...)
Start a Custom Production conversation without payment. IMPORTANT: interview your user for the real project details FIRST (what they are promoting, audience, formats, delivery resolution, timing); placeholder inquiries are rejected. A 4K Campaign Series must use this route before checkout. Submits a scope inquiry; IBO then emails the customer a one-click confirmation link (double opt-in), and only a confirmed inquiry reaches the studio. Tell your user to check their inbox and click confirm. IBO replies with scope and proposal within one business day of confirmation.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
"description": "Customer's real email; the confirmation link goes here"
},
"company": {
"type": "string"
},
"product": {
"type": "string"
},
"goal": {
"type": "string",
"description": "What they want to make and why, in real detail (30+ chars; placeholders rejected)"
},
"audience": {
"type": "string"
},
"channels": {
"type": "string"
},
"resolution": {
"type": "string",
"description": "Required production target: 1080p, 4K mastered, or not applicable for still images"
},
"launch": {
"type": "string"
},
"links": {
"type": "string"
},
"constraints": {
"type": "string"
},
"notes": {
"type": "string"
}
},
"required": [
"name",
"email",
"goal"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"status": {
"type": "string"
},
"message": {
"type": "string"
},
"error": {
"type": "string"
}
},
"additionalProperties": false
}🟢get_project_status(session_id)
Where a paid order is in production. Returns the studio stage (new, brief_received, in_production, review, delivered) plus paid/package/deposit. PII-free; pass the stripe_session_id from create_checkout/get_order.
입력 스키마
{
"type": "object",
"properties": {
"session_id": {
"type": "string",
"description": "Stripe checkout session id (cs_...)"
}
},
"required": [
"session_id"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"paid": {
"type": "boolean"
},
"package": {
"type": "string"
},
"total": {
"type": "string"
},
"deposit": {
"type": "number"
},
"stage": {
"type": "string"
}
},
"additionalProperties": false
}🟢get_inquiry_status(inquiry_id)
Where a custom inquiry stands: awaiting_confirmation (customer hasn't clicked the emailed link yet) or confirmed with the studio stage (new, replied, proposal_sent, won, closed). PII-free; pass the inquiry_id returned by submit_custom_inquiry.
입력 스키마
{
"type": "object",
"properties": {
"inquiry_id": {
"type": "string",
"description": "From submit_custom_inquiry"
}
},
"required": [
"inquiry_id"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"stage": {
"type": "string"
},
"updated": {
"type": "string"
},
"note": {
"type": "string"
},
"error": {
"type": "string"
}
},
"additionalProperties": false
}커뮤니티
증거