MCP-Server

ibo

io.github.41fred/ibo
Commerce & Retail Medien & Inhalte Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Presents cinematic AI campaign production packages, collects creative briefs and assets, and handles deposit checkout and order status.

create_checkout
Create a deposit checkout
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.
Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['package', 'client_request_id'], 'properties': {'package': {'enum': ['film', 'film4k', 'series'], 'type': 'string', 'description': 'Offer id from list_offers'}, 'client_request_id': {'type': 'string', 'description': 'Stable id you generate; makes creation idempotent on retry'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'currency': {'type': 'string'}, 'offer_id': {'type': 'string'}, 'amount_due': {'type': 'number'}, 'checkout_url': {'type': 'string'}, 'stripe_session_id': {'type': 'string'}}, 'additionalProperties': False}
create_upload_url
Get a presigned asset-upload URL
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.
Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['filename', 'size', 'order_token'], 'properties': {'size': {'type': 'number', 'description': 'File size in bytes'}, 'filename': {'type': 'string'}, 'order_token': {'type': 'string', 'description': 'From get_order'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'key': {'type': 'string'}, 'url': {'type': 'string'}, 'error': {'type': 'string'}}, 'additionalProperties': False}
get_inquiry_status
Check status of a custom production inquiry
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.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['inquiry_id'], 'properties': {'inquiry_id': {'type': 'string', 'description': 'From submit_custom_inquiry'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'error': {'type': 'string'}, 'stage': {'type': 'string'}, 'status': {'type': 'string'}, 'updated': {'type': 'string'}}, 'additionalProperties': False}
get_order
Verify an order after checkout
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.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Stripe checkout session id (cs_...)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'paid': {'type': 'boolean'}, 'total': {'type': 'string'}, 'deposit': {'type': 'number'}, 'package': {'type': 'string'}, 'expires_at': {'type': 'number'}, 'order_token': {'type': 'string'}}, 'additionalProperties': False}
get_project_status
Check production status of a paid order
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.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'description': 'Stripe checkout session id (cs_...)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'paid': {'type': 'boolean'}, 'stage': {'type': 'string'}, 'total': {'type': 'string'}, 'deposit': {'type': 'number'}, 'package': {'type': 'string'}}, 'additionalProperties': False}
list_offers
List IBO production packages
IBO's production packages: stable ids, prices, 50% deposits, deliverables, review rounds, and the scope/refund policy. Call this first.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'offers': {'type': 'array'}, 'studio': {'type': 'string'}, 'currency': {'type': 'string'}, 'policies': {'type': 'object'}, 'how_to_order': {'type': 'array'}}, 'additionalProperties': False}
submit_brief
Submit the creative brief
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.
Externer Zugriff
Eingabeschema
{'type': 'object', 'properties': {'goal': {'type': 'string'}, 'name': {'type': 'string'}, 'email': {'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'name', 'size'], 'properties': {'key': {'type': 'string'}, 'name': {'type': 'string'}, 'size': {'type': 'number'}}, 'additionalProperties': False}}, 'links': {'type': 'string'}, 'launch': {'type': 'string'}, 'company': {'type': 'string'}, 'package': {'type': 'string'}, 'product': {'type': 'string'}, 'audience': {'type': 'string'}, 'channels': {'type': 'string'}, 'resolution': {'type': 'string', 'description': 'Final master resolution selected before creative kickoff'}, 'constraints': {'type': 'string'}, 'order_token': {'type': 'string', 'description': 'From get_order'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}}, 'additionalProperties': False}
submit_custom_inquiry
Submit a custom production inquiry (no payment)
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.
Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['name', 'email', 'goal'], 'properties': {'goal': {'type': 'string', 'description': 'What they want to make and why, in real detail (30+ chars; placeholders rejected)'}, 'name': {'type': 'string'}, 'email': {'type': 'string', 'description': "Customer's real email; the confirmation link goes here"}, 'links': {'type': 'string'}, 'notes': {'type': 'string'}, 'launch': {'type': 'string'}, 'company': {'type': 'string'}, 'product': {'type': 'string'}, 'audience': {'type': 'string'}, 'channels': {'type': 'string'}, 'resolution': {'type': 'string', 'description': 'Required production target: 1080p, 4K mastered, or not applicable for still images'}, 'constraints': {'type': 'string'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}, 'status': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}
Hinzugefügt
get_inquiry_status
17. September 2026 12:40
Hinzugefügt
get_project_status
17. September 2026 12:40
Hinzugefügt
submit_custom_inquiry
17. September 2026 12:40
Hinzugefügt
create_upload_url
17. September 2026 12:40
Hinzugefügt
submit_brief
17. September 2026 12:40
Hinzugefügt
get_order
17. September 2026 12:40
Hinzugefügt
create_checkout
17. September 2026 12:40
Hinzugefügt
list_offers
17. September 2026 12:40