{"name":"MakeItFun","description":"MakeItFun: print-on-demand merch (t-shirts, hoodies, caps, mugs, posters) with AI, text or image designs, previews, firm quotes and orders paid by the linked user in the app.","url":"https://makeitfun.shop/a2a","provider":{"organization":"OKIDOOKI AG","url":"https://okidooki.app"},"version":"0.3.0","documentationUrl":"https://okidooki.app/app-v0/","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"securitySchemes":{"bearerKey":{"type":"http","scheme":"bearer","description":"Key from the Okidooki developer portal (okidooki.app/webapp/developers). Optional X-Timestamp + X-Signature (HMAC-SHA256) for the strict scheme."}},"security":[{"bearerKey":[]}],"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"skills":[{"id":"discover","name":"discover","description":"Products for a product type or query (or one product with sellerId: variants, prices, placements); occasions:true lists design templates; suggest:{productType,occasion,vibe} returns curated looks with preview pictures (Design Curator).","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"discover\",\"body\":{...}}"]},{"id":"preview","name":"preview","description":"Render a design on a product: AI prompt, image URL, exact text (font, colour, outline, arc) or a saved design; returns a job to poll with preview_status. One running preview per user.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"preview\",\"body\":{...}}"]},{"id":"designs","name":"designs","description":"The user's saved designs (My Designs) with the designIds quote/order accept; reusing one costs nothing.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"designs\",\"body\":{...}}"]},{"id":"preview_status","name":"preview status","description":"Result of a preview job (jobId optional: latest job of the user): mockupURL, designId, printSpec.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"preview/status\",\"body\":{...}}"]},{"id":"quote","name":"quote","description":"Firm 30-minute quote: units x unit price + real shipping to the user's saved address (CHF); team:[{name,number}] prints names on the back, one unit each.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"quote\",\"body\":{...}}"]},{"id":"order","name":"order","description":"Place the order for a quote; the user pays in MakeItFun within 30 minutes (confirmUrl). Pass idempotencyKey.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"order\",\"body\":{...}}"]},{"id":"orders","name":"orders","description":"Latest merch orders of the user placed with this key.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"orders\",\"body\":{...}}"]},{"id":"status","name":"status","description":"Order status: needs_user_confirmation, paid, in_production, shipped (tracking), failed, refunded, cancelled, expired.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"status\",\"body\":{...}}"]},{"id":"cancel","name":"cancel","description":"Cancel: free before payment and until production starts (refund).","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"cancel\",\"body\":{...}}"]},{"id":"link_start","name":"link start","description":"Start linking: 8-character code the user enters in MakeItFun (Profile, Connected apps).","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"link/start\",\"body\":{...}}"]},{"id":"categories","name":"categories","description":"Printful catalog categories shippable to a country (CH default) with product counts.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"categories\",\"body\":{...}}"]},{"id":"products","name":"products","description":"Products of a category: title, picture, brand, techniques, placements, price from (CHF), all-over print flag; sellerId product:<id> for discover.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"products\",\"body\":{...}}"]},{"id":"sizes","name":"sizes","description":"Size chart of a product (cm or inches): available sizes and measurement tables.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"sizes\",\"body\":{...}}"]},{"id":"shipping","name":"shipping","description":"Shipping options and prices (CHF) for variants to a country/zip, or to the linked user's saved address, without a quote.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"shipping\",\"body\":{...}}"]},{"id":"upload","name":"upload","description":"Upload an image (base64 PNG/JPEG/WebP up to 15 MB, or a URL) for the linked user; returns an imageUrl to use in preview design kind imageUrl.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"upload\",\"body\":{...}}"]},{"id":"mockups","name":"mockups","description":"Extra mockup views (lifestyle, flat, folded...) of a saved design; done within ~45 s or returns a taskKey to poll.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"mockups\",\"body\":{...}}"]},{"id":"mockups_status","name":"mockups status","description":"Result of a pending mockups task.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"mockups/status\",\"body\":{...}}"]},{"id":"receipt","name":"receipt","description":"Stripe receipt of a paid order (url, amount, paid at, refunds).","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"receipt\",\"body\":{...}}"]},{"id":"link_status","name":"link status","description":"Is the user linked to this network, and what the linked account can do.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"link/status\",\"body\":{...}}"]},{"id":"link_revoke","name":"link revoke","description":"End the link for a user.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"link/revoke\",\"body\":{...}}"]},{"id":"styles_feedback","name":"styles feedback","description":"Thumbs up / down on a curated look (Design Curator ranking).","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"styles/feedback\",\"body\":{...}}"]},{"id":"sandbox_pay","name":"sandbox pay","description":"TEST keys only: settle a sandbox order as if the user paid.","tags":["makeitfun","app-v0"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":["data part: {\"route\":\"sandbox/pay\",\"body\":{...}}"]}],"extensions":{"okidooki-app":{"version":"0","card":"https://europe-west1-make-it-fun-app.cloudfunctions.net/a2aGateway/card","registry":"https://okidooki.app/.well-known/app-v0.json","mcp":"https://makeitfun.shop/mcp"}}}