{"name":"io.github.nanoodlecom/nanoodle-mcp","slug":"nanoodlecom-nanoodle-mcp","title":"nanoodle","description":"Your saved nanoodle workflow graphs as MCP tools — BYOK or pay per call in Nano (x402)","url":"https://mcp.market/server/nanoodlecom-nanoodle-mcp","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":35,"stars":1,"forks":1,"downloads_week":76,"last_push_at":"2026-11-03T01:11:00.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T08:15:29.347Z","last_ok_at":"2026-11-04T08:15:29.347Z","latency_ms":380},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/nanoodlecom/nanoodle-mcp","website":"https://nanoodle.com","version":"0.6.0","remotes":[{"type":"streamable-http","url":"https://mcp.nanoodle.com/mcp"}],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"nanoodle-mcp","version":"0.6.0","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"description":"Directory of noodle-graph.json saves from the nanoodle.com editor — each file becomes one MCP tool. Repeatable: pass several dirs and earlier ones win name clashes (per-project graphs + a shared library).","isRequired":true,"type":"named","name":"--graphs"},{"description":"Directory where media outputs are saved (default ./nanoodle-out)","type":"named","name":"--out"}],"environmentVariables":[{"description":"Your nano-gpt.com API key — every tool call spends from this key's balance","isRequired":true,"isSecret":true,"name":"NANOGPT_API_KEY"}]}],"tools":[{"name":"character-sprites","description":"Description → canonical character → separate cutout parts → local rig and animation baking. One text call + two image calls. The companion rig.mjs extracts transparent parts and bakes 32 frames: id… text:Character -> llm:Character designer -> image:Canonical character -> resize:Reference -> edit:Rig parts; returns image + image (muse-image/edit, 1:1) saved to disk (file paths in result). Runs on NanoGPT — $0.06 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.0221, ~86s. Example: Iron Verdict (https://nanoodle.com/examples/iron-verdict/). A playable fighting game built with character-sprites. This graph generates a character reference and parts sheet; the local skill bakes animated sprites, and a coding agent adds combat, gravity and game rules. Agent skill: https://github.com/nanoodlecom/noodle-skills/tree/main/skills/character-sprites","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Character":{"type":"string","description":"Text; default: \"A compact furnace knight with a cracked ivory helmet, narrow glowing amber visor, dark navy armor, a short rust-red s...\"; optional"},"Character_designer":{"type":"string","description":"System prompt; default: \"Write ONE image prompt, maximum 130 words, for a game character reference from the description. Preserve the user des...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"combine-images","description":"Upload a product, then a setting, to preview placement before a photoshoot. Muse Edit uses both reference images ($0.01/image). Inspect product identity, scale and contact shadows; this is a concep… upload:Product photo -> upload:Setting photo -> text:Placement brief -> edit:Product in setting; returns image (muse-image/edit) saved to disk (file path in result). Runs on NanoGPT — $0.18 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.075, ~1m 49s. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#combine-images). A bottle and a mug-on-desk source image combined into one plausible scene. The sample includes both inputs; exact product fidelity needs a separate comparison.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"Product_photo":{"type":"string","description":"* required; image — file path or https URL"},"Setting_photo":{"type":"string","description":"* required; image — file path or https URL"},"Placement_brief":{"type":"string","description":"Text; default: \"Place the product from image 1 naturally into the setting from image 2. Preserve the product shape, proportions, mate...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}},"required":["Product_photo","Setting_photo"]}},{"name":"deslop","description":"Edit a customer notice without losing prices, dates or caveats. Grok drafts; a second model compares the draft with the source; Grok applies the review. Three paid text calls. The review checks wri… text:Your draft -> llm:First rewrite -> join:Source and rewrite -> llm:Fact and clarity review -> join:Source, rewrite and review -> llm:Edited notice; returns text. Runs on NanoGPT — $0.10 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.0341, ~78s. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#deslop). A repair-booking announcement rewritten in plain language while retaining the supplied facts. Compare the source and result in the sample; this is an editorial workflow, not an authorship detector.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Your_draft":{"type":"string","description":"Text; default: \"We are thrilled to announce a game-changing improvement to the repair booking experience. Starting 8 September, custo...\"; optional"},"First_rewrite":{"type":"string","description":"System prompt; default: \"You rewrite AI-sounding text so it reads like a person wrote it. Output only the rewritten text — no preamble, no not...\"; optional"},"Fact_and_clarity_review":{"type":"string","description":"System prompt; default: \"You are an editorial reviewer. Your input contains the original draft followed by === PASS 1 REWRITE === and its rewr...\"; optional"},"Edited_notice":{"type":"string","description":"System prompt; default: \"Your input contains the original draft, === PASS 1 REWRITE ===, and === EDITORIAL REVIEW ===. Treat these blocks as s...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"edit-a-photo","description":"Upload a product photo and make a clean catalog image. Muse Edit preserves the product while changing the background ($0.01/image). Check logos, small details and color against the original before … upload:Product photo -> text:Edit request -> edit:Clean product photo; returns image (muse-image/edit) saved to disk (file path in result). Runs on NanoGPT — $0.18 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.075, ~80s. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#edit-a-photo). A bottle image edit with its source and instruction documented in the sample. The shape remains recognizable; compare any markings that must survive an edit of your own product.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"Product_photo":{"type":"string","description":"* required; image — file path or https URL"},"Edit_request":{"type":"string","description":"Text; default: \"Prepare this product photo for a catalog. Preserve the exact product shape, color, materials, markings and visible te...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}},"required":["Product_photo"]}},{"name":"favicon","description":"Turn a brand brief into a square favicon concept. GLM Flash condenses the brief; Muse renders one image (image step $0.01, plus text). Inspect at 16px; export or convert to favicon sizes separately. text:Brand -> llm:Icon prompt -> image:Favicon; returns image (muse-image/text-to-image, 1:1) saved to disk (file path in result). Runs on NanoGPT — $0.03 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.01, ~69s. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#favicon). A lighthouse-inspired icon for a pocket weather radio. The output is a raster concept; creating an ICO or SVG requires a separate step.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Brand":{"type":"string","description":"Text; default: \"Lumen — pocket weather radio. One lighthouse beam as a chevron. Deep navy field, single warm-gold mark. No letters.\"; optional"},"Icon_prompt":{"type":"string","description":"System prompt; default: \"Write one concise image prompt for a favicon concept from the brand brief. Preserve the requested symbol and colors. ...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"fibo-studio-still","description":"Create an editorial product concept from a description and lighting choice. GLM Flash structures the brief; Bria FIBO renders at 1MP (image step $0.04, plus text). FIBO is offered as a model traine… text:Product -> choice:Light -> join:Brief -> llm:Structured prompt -> image:Still; returns image (fibo-generate-1.5/text-to-image, 1mp) saved to disk (file path in result). Runs on NanoGPT — $0.10 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#fibo-studio-still). An amber soap bottle rendered from a product brief and lighting choice. This is a generated concept, not a photograph of an existing product.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"Product":{"type":"string","description":"Text; default: \"One unbranded amber glass hand-soap bottle with a matte black pump, resting upright on a pale limestone counter. No l...\"; optional"},"Light":{"type":"string","enum":["large softbox left, gentle shadow, neutral backdrop","window daylight, soft shadows, warm stone","hard side light, crisp silhouette, gray paper","backlit translucent glass, soft fill from front"],"description":"Choice; default: \"large softbox left, gentle shadow, neutral backdrop\"; optional"},"Structured_prompt":{"type":"string","description":"System prompt; default: \"Write one structured descriptive image prompt for the supplied product and lighting. Preserve its shape, materials an...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"humanize-comment","description":"Draft + Context + Guidance → 5 writers (Qwen3.8 Novelist/friend, DeepSeek V4.1 Flash/forum, Cydonia-24B v4.3/peer (Starry Ocean fallback on mcp), Qwen3.8 antislop/plain, Mercury 3/quick), each with… text:Draft -> text:Context -> text:Guidance -> join:Context+Guidance -> join:Writer input -> join:Judge: context+original -> llm:Writer A (Qwen3.8-27B Novelist, voice: friend) -> llm:Writer B (DeepSeek V4.1 Flash 1017, voice: forum) -> llm:Writer C (Cydonia-24B v4.3, voice: peer) -> llm:Writer D (Qwen3.8-27B antislop, voice: plain) -> llm:Writer E (Mercury 3, voice: quick) -> join:Judge: +A -> join:Judge: +B -> join:Judge: +C -> join:Judge: +D -> join:Judge: +E -> llm:Decider (GLM-5.3); returns text. Runs on NanoGPT — a deposit is quoted for each request from its length and maxChars and caps what the customer pays; it settles at the lesser of the metered cost plus 20% and that deposit, and any difference is returned; the operator absorbs any overrun. When Cydonia fails and the Starry Ocean fallback runs, both calls are charged. This refund and cap apply to hosted payments. Direct-wallet spending has no cap; last run $0.0034, ~48s.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Draft":{"type":"string","description":"* required; Text; at most 1500 characters","maxLength":1500},"Context":{"type":"string","description":"* required; Text; at most 3500 characters","maxLength":3500},"Guidance":{"type":"string","description":"Text; default: \"a friendly, specific reply\"; optional; at most 600 characters; a leading one-thread prefix (\"One thread: ONE main point, each sentence follows the last, 2-4 sentences <450 chars, <=1 hash/address, <=1 question at end, no 'Catch:' labels.\") is not counted","maxLength":745},"keep":{"type":"array","items":{"type":"string","minLength":1},"maxItems":8,"description":"optional; verbatim spans (a joke, a closing line) that must survive exactly. Each span is swapped for a placeholder before the rewrite and put back after. Every match in the draft counts, and the placeholder draft must stay within the draft cap. Overlapping keeps are protected together so each one survives. A rewrite that drops, duplicates, or changes a span is rejected. At most 8 spans, each at most 500 characters."},"ending":{"type":"string","enum":["question","keep_last","any"],"default":"any","description":"optional; where the rewrite must end. \"question\" ends with a question. \"keep_last\" ends with the last keep span, or with the draft's final sentence when keep is omitted. \"any\" leaves the ending free. default: \"any\""},"maxChars":{"type":"integer","minimum":1,"maximum":5000,"description":"optional; hard cap on the rewrite length in characters (1 to 5000). Every copy of a keep span counts toward the cap. Over-length rewrites are rejected and that writer is asked once more."},"title":{"type":"boolean","default":false,"description":"optional; when true, writers are asked for one title line rather than a comment; paragraph-length replies are rejected and that writer is asked once more. Default false: a short draft is not treated as a title on its own."},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}},"required":["Draft","Context"]}},{"name":"idea-to-3d-model","description":"Idea → concept art → 3D model. Write one object in plain words. An LLM turns it into a concept-art description (shape, parts, materials, colors). Join adds fixed render rules (one whole object, thr… text:Object idea -> text:3D-ready render rules -> llm:Concept description -> join:Concept prompt -> image:Concept art -> model3d:TRELLIS.2 → GLB; returns model3d (trellis-2/image-to-3d) saved to disk (file path in result). Runs on NanoGPT — $0.51 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed. Example: 3D sample (https://nanoodle.com/examples/gallery/#idea-to-3d-model). One line becomes a textured 3D model: a teal-and-cream wind-up toy submarine with a brass periscope, portholes, a wind-up key and a striped tail. GLM writes the concept, Muse paints it, and TRELLIS.2 turns that one picture into a GLB that holds up from every side. The viewer shades it flatter than the concept, and the thin key and propeller blades go soft at some angles.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Object_idea":{"type":"string","description":"Text; default: \"A chunky wind-up toy submarine with a brass periscope, three round portholes, a striped tail propeller and a big wind...\"; optional"},"Concept_description":{"type":"string","description":"System prompt; default: \"You write the SUBJECT part of an image prompt for a 3D-ready concept render of ONE object from the user's idea. Descr...\"; optional"},"3D-ready_render_rules":{"type":"string","description":"Text; default: \"Single object 3D concept render, the whole object fully in frame and centered with margin on all sides, three-quarter...\"; optional"},"TRELLIS.2_GLB":{"type":"string","description":"3D prompt; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"image-model-arena","description":"Compare four image models on the same brief. Run makes four paid images. Judge the exact heading and footer, object count, tool shapes, composition and color. Change the shared brief to test your o… text:Shared test brief -> image:Contender 1 -> image:Contender 2 -> image:Contender 3 -> image:Contender 4; returns image (muse-image/text-to-image, 1:1) + image (gpt-image-2.5/flare/text-to-image, 1k) + image (grok-imagine-image/v2.0/text-to-image, 1:1) + image (recraft-v4, 1024×1024) saved to disk (file paths in result). Runs on NanoGPT — $0.40 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.264, ~73s. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#image-model-arena). The same bicycle-repair poster brief sent to four image models. All four retained the requested text in this run; only Grok rendered recognizable tire levers. Compare all outputs before choosing.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Shared_test_brief":{"type":"string","description":"Text; default: \"Create a square poster for a bicycle repair workshop. Exact heading: FIX A FLAT. Exact footer: SATURDAY 10 AM. A sing...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"mix-the-references","description":"Mix four references into one picture. Each reference is its own node: who (the character), what they wear, what they hold, and where they stand. FLUX.3 Klein Edit gets them in port order and the in… text:Who · character -> text:What they wear · outfit -> text:What they hold · prop -> text:Where · place -> text:Mix instruction (names each image) -> image:1 · Character -> image:2 · Outfit -> image:3 · Prop -> image:4 · Place -> edit:Mix · FLUX.3 Klein Edit; returns image (flux-3/klein/edit-image, 1024×1024) saved to disk (file path in result). Runs on NanoGPT — $0.08 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed. Example: Composite sample (https://nanoodle.com/examples/gallery/#mix-the-references). Four separate references become one picture: a paper-craft fox (image 1) wears a yellow knitted raincoat (image 2), holds one red paper lantern (image 3) and stands on a cardboard pier at dusk (image 4). FLUX.3 Klein Edit gets them in port order and the instruction names each image by number. Flaws in the saved run: the paper boats from the place reference mostly drop out and the coat comes out longer than its flat-lay reference.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Who_character":{"type":"string","description":"Text; default: \"A small paper-craft fox mascot made of folded orange paper with a white paper chest and tail tip, a black paper nose ...\"; optional"},"What_they_wear_outfit":{"type":"string","description":"Text; default: \"Product photo of a tiny yellow knitted raincoat with a pointed hood and three round wooden toggle buttons down the fr...\"; optional"},"What_they_hold_prop":{"type":"string","description":"Text; default: \"Product photo of a small round red paper lantern with a thin bamboo carrying handle, glowing warm from inside, center...\"; optional"},"Where_place":{"type":"string","description":"Text; default: \"A paper-craft harbor at blue-hour dusk: a short wooden pier made of cardboard planks in the foreground, layered blue ...\"; optional"},"Mix_instruction_names_each_image":{"type":"string","description":"Text; default: \"Make one new picture that combines the four reference images.\\nImage 1 is the character: keep this exact paper-craft f...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"neon-shrine-duel","description":"seed → GLM writes Anima still prompt → anima/text-to-image → GLM writes H3 Max motion prompt → minimax/h3-max i2v at 480p/5s. Change the seed; both LLMs rewrite prompts. ~$0.27 sampled. Hold both f… text:Fight seed -> llm:Still prompt -> llm:Motion prompt -> image:Fight still -> ivideo:Clash clip; returns video (h3-max) saved to disk (file path in result). Runs on NanoGPT — $0.63 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.2601, ~47s.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Fight_seed":{"type":"string","description":"Text; default: \"Neon shrine rooftop duel at midnight — fox-masked sword dancer vs chrome oni courier, rain, sakura sparks, cinematic ...\"; optional"},"Still_prompt":{"type":"string","description":"System prompt; default: \"You write ONE elite image prompt for anime key art (Anima text-to-image). Rules: single frozen moment mid-action (not...\"; optional"},"Motion_prompt":{"type":"string","description":"System prompt; default: \"You write ONE image-to-video motion prompt for MiniMax H3 Max. Rules: BOTH fighters stay fully in frame the entire cl...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"night-market-postcard","description":"Create a landscape travel postcard illustration from a place and mood. Change both inputs for a new destination. GLM Flash writes the prompt; Muse renders at 3:2 (image step $0.01, plus text). Insp… text:Place -> choice:Vibe -> join:Spec -> llm:Postcard prompt -> image:Postcard; returns image (muse-image/text-to-image, 3:2) saved to disk (file path in result). Runs on NanoGPT — $0.03 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#night-market-postcard). An illustrated Raohe night-market postcard from the saved place and atmosphere inputs. Use it as creative artwork rather than a documentary record.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"Place":{"type":"string","description":"Text; default: \"Raohe night market, Taipei — grilled squid smoke hanging in the lane, red lanterns, wet asphalt, one stall still roaring\"; optional"},"Vibe":{"type":"string","enum":["warm illustrated travel print","fine-grain analog photograph","quiet watercolor scene","bold two-color screenprint"],"description":"Choice; default: \"warm illustrated travel print\"; optional"},"Postcard_prompt":{"type":"string","description":"System prompt; default: \"Write one image prompt for a 3:2 landscape travel postcard illustration from the supplied place and mood. Preserve su...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"omni-flash-turntable","description":"Create a short product-motion concept from an object and camera move. GLM Flash structures the brief; Omni Flash 1.1 renders 5s at 360p / 16:9 (video step $0.195, plus text). No upload required. In… text:Object -> choice:Move -> join:Brief -> llm:Video prompt -> tvideo:Clip; returns video (gemini-omni-flash/v1.1) saved to disk (file path in result). Runs on NanoGPT — $0.10 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#omni-flash-turntable). A 360p draft camera orbit around a generated bottle with coherent geometry in the reviewed clip. This thumbnail is one frame; open the sample to inspect the motion.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"Object":{"type":"string","description":"Text; default: \"One unbranded matte sage-green insulated water bottle with a black screw cap on a stationary pale-gray studio plinth,...\"; optional"},"Move":{"type":"string","enum":["camera makes a slow quarter-orbit; object stays still","locked camera; object rotates slowly clockwise","slow camera push-in; object stays still"],"description":"Choice; default: \"camera makes a slow quarter-orbit; object stays still\"; optional"},"Video_prompt":{"type":"string","description":"System prompt; default: \"Write one text-to-video prompt from the object brief and selected move. Preserve the object, material, color, setting...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"photo-to-video","description":"Create a first frame with Muse, then animate one small movement with MiniMax H3 Spicy at 480p for five seconds. Change the still and motion briefs together. Inspect object stability and motion; a s… text:Still brief -> text:Motion brief -> image:First frame -> ivideo:Animated clip; returns video (image-to-video) saved to disk (file path in result). Runs on NanoGPT — $0.51 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.21, ~1m 30s. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#photo-to-video). A short tea-on-a-desk animation. Sampled frames retained the mug while steam moved. This thumbnail is one frame; the example does not establish a seamless loop.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"Still_brief":{"type":"string","description":"Text; default: \"A ceramic mug of hot tea on an oak desk beside a closed notebook. Soft morning window light from the left, plain warm...\"; optional"},"Motion_brief":{"type":"string","description":"Text; default: \"Locked camera for five seconds. A thin wisp of steam rises slowly from the tea and curls gently in the window light. ...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"render-a-mockup","description":"Turn a screen brief and visual style into a UI concept for design review. Qwen Image 3 Pro renders at 1K ($0.04/image); no prompt-writing call. Keep the combined brief and style under the model lim… text:Screen brief -> text:Visual style -> join -> image:Screen concept; returns image (qwen-image-3-pro, 1k) saved to disk (file path in result). Runs on NanoGPT — $0.20 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.079, ~2m 16s. Example: Reviewed sample (https://nanoodle.com/examples/gallery/#render-a-mockup). A repair-shop dashboard concept with the requested navigation, date, three appointment rows, names, statuses and totals. This is a rendered screen concept; implementation and interaction are separate work.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Screen_brief":{"type":"string","description":"Text; default: \"Repair shop dashboard, desktop screenshot. Navigation: Today, Repairs, Customers. Header: Tuesday, 8 September. Main ...\"; optional"},"Visual_style":{"type":"string","description":"Text; default: \"Warm white background, charcoal text, gray dividers, forest-green primary button. Simple sans-serif, readable table r...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"sfw_check","description":"Say whether an image, or evenly sampled frames of a video, is safe for work. One yes/no decision per picture (perplexity/pplx-decider-v1.2). The check passes only when every picture is yes. Video sampling needs ffmpeg on the server; a still image does not. There is no switch to skip this check. Runs on NanoGPT — a deposit is quoted for each request from how many pictures it checks and is a cap on the charge; it settles at the metered cost plus 20% or the quote, whichever is less, and a picture that would exceed the remaining budget is not checked; the difference is returned.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"image":{"type":"string","description":"optional; still image — https URL or data URL. At most 4 MB. A hosted server does not read local files. Does not use ffmpeg."},"video":{"type":"string","description":"optional; video — https URL or data URL. Frames are sampled evenly. At most 4 MB. Needs ffmpeg. A hosted server does not read local files."},"frames":{"type":"integer","minimum":1,"maximum":8,"description":"optional; how many video frames to check (1–8, default 5). Ignored when there is no video."},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"sing","description":"Start with a song idea and the bands you like. Three text calls write lyrics, arrange them, and identify what would clash with that arrangement. The arrangement and avoid-list become one musical di… text:Song idea -> text:Preferred bands -> join:Idea + musical references -> llm:Write lyrics -> join:Brief + finished lyrics -> llm:Arrange the song -> llm:What would clash? -> join:Arrangement + avoid-list -> music:Sing; returns audio (music-3) saved to disk (file path in result). Runs on NanoGPT — $0.37 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.1502, ~2m 35s. Example: Audio sample (https://nanoodle.com/examples/gallery/#sing). A 170-second generated closing-credits song. Gemini 3.8 Flash reported clear gentle acoustic vocals and a chorus matching the supplied lyrics. This is model-assisted audio review, not human listening sign-off.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Song_idea":{"type":"string","description":"Text; default: \"Write a wistful 90s trip-hop track about the singularity.\"; optional"},"Preferred_bands":{"type":"string","description":"Text; default: \"Portishead, Massive Attack, Tricky\"; optional"},"Write_lyrics":{"type":"string","description":"System prompt; default: \"Write original, singable lyrics from the song idea and musical references. Maximum 200 words. Use concrete images, an...\"; optional"},"Arrange_the_song":{"type":"string","description":"System prompt; default: \"Write one compact music-generator prompt: a single paragraph, at most 60 words and 450 characters. Use the supplied i...\"; optional"},"What_would_clash":{"type":"string","description":"System prompt; default: \"Read the actual arrangement. Name exactly three specific musical choices that would undermine its groove, instruments...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"storyboard-relay","description":"Make a two-frame story through a handoff between models. Muse establishes the opening. Nano Banana stages the next beat from that actual image. Gemini compares both frames; Muse Edit uses the draft… text:First scene -> text:Next beat -> text:Continuity rules -> image:Muse opens the story -> join:Opening brief + next beat -> resize:Frame 1 -> join:Next beat + continuity rules -> edit:Nano Banana stages the next beat -> llm:Draft continuity check -> resize:Draft frame 2 -> join:Story + observed repair notes -> edit:Muse repairs the continuity -> resize:Frame 2 -> llm:Continuity notes; returns image + image + image + text; media saved to disk (file paths in result). Runs on NanoGPT — $0.19 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.0652, ~2m 4s.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"First_scene":{"type":"string","description":"Text; default: \"First frame of an original two-scene story. A tiny postal robot has a rounded cream enamel body, one round amber eye,...\"; optional"},"Next_beat":{"type":"string","description":"Text; default: \"Create the next story beat inside the greenhouse. The robot is now crouched beside a circular soil tray, carefully pl...\"; optional"},"Continuity_rules":{"type":"string","description":"Text; default: \"Keep the same robot's rounded cream body, single round amber eye, dark-blue legs, orange satchel and relative proport...\"; optional"},"Draft_continuity_check":{"type":"string","description":"System prompt; default: \"You are a film continuity reader comparing TWO actual images. Image 1 is the opening frame; image 2 is the draft next...\"; optional"},"Continuity_notes":{"type":"string","description":"System prompt; default: \"Independently compare TWO actual images. Image 1 is the original opening; image 2 is the repaired next frame. You hav...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"subnano_comment","description":"Rewrite a draft, run humanize-comment on that rewrite, then ask whether the result is safe to post and how funny it is. Order is refine (liquid/lfm-2.5-2.6b), then humanize-comment, then a liquid/d1 yes/no gate, then a liquid/d1 funny score. Returns the comment, the gate verdict, the funny score, and the cost of each step. A \"no\" gate does not discard the comment. Runs on NanoGPT — a deposit is quoted for each request from its context and guidance and is a cap on the charge; it settles at the metered cost plus 20% or the quote, whichever is less, and the run stops before a stage the remaining budget cannot cover; the difference is returned. Needs the humanize-comment graph mounted.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Draft":{"type":"string","maxLength":1500,"description":"* required; the comment to rewrite, at most 1500 characters"},"Context":{"type":"string","maxLength":3500,"description":"* required; the post or thread being replied to, at most 3500 characters"},"Guidance":{"type":"string","maxLength":600,"description":"optional; what the comment should do, at most 600 characters. default: \"a friendly, specific reply\""},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}},"required":["Draft","Context"]}},{"name":"talking-avatar","description":"Create a short spoken introduction with a fictional presenter. Muse makes the portrait, MiniMax Speech reads the script, and LongCat combines the image and audio into a speaking video at 480p. Keep… text:Presenter look -> text:Spoken script -> text:Delivery -> image:face -> tts -> lipsync; returns video (longcat-avatar-1.5) saved to disk (file path in result). Runs on NanoGPT — $0.66 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed. Example: Video sample (https://nanoodle.com/examples/gallery/#talking-avatar). A fictional presenter reads a short workshop introduction. Sampled frames preserve the presenter; check precise lip-sync timing in playback. Generation can take several minutes.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"Presenter_look":{"type":"string","description":"Text; default: \"A fictional friendly male museum guide in his thirties, wearing a plain navy shirt, shoulders-up front-facing portrai...\"; optional"},"Spoken_script":{"type":"string","description":"Text; default: \"Welcome to the workshop. Start with the blue tray on your table. Inside you will find paper, a pencil, and the parts ...\"; optional"},"Delivery":{"type":"string","description":"Text; default: \"Natural calm delivery, subtle blinks and small head movements. Keep the face and mouth visible, eyes toward the camer...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}},{"name":"tiny-world-film","description":"Muse builds a miniature. Wan animates that exact image. Mirelo watches the resulting silent clip and adds foley. Three models pass actual media forward. Compare the silent and sounded takes. Defaul… text:World -> text:Motion -> image:Build the miniature -> ivideo:Silent take -> resize:First frame -> vedit:Film with foley; returns image + video (sfx1.6/video-to-video) saved to disk (file paths in result). Runs on NanoGPT — $0.65 deposit per call, paid in Nano (XNO) — settles at actual model cost + 20%, change returned; no account needed; last run $0.27, ~2m 11s.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"World":{"type":"string","description":"Text; default: \"A handmade miniature walnut-shell watermill on a mossy stone beside a tiny stream. One large copper paddle wheel is a...\"; optional"},"Motion":{"type":"string","description":"Text; default: \"One continuous locked-off macro shot. The copper waterwheel turns slowly and steadily as the stream runs over its pad...\"; optional"},"_payment_id":{"type":"string","description":"Payment id from this tool's previous payment-required response. Phase 3 only: after /x402/watch closes with status paid, call again with the same arguments plus this id to open the RESULTS stream. Do not pass it while payment is still pending — monitor the watch SSE first."}}}}],"scan":{"score":85,"grade":"A","scanned_at":"2026-11-03T23:29:52.193Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-03T23:29:52.161Z","components":{"code":{"score":25,"max":25,"notes":["10 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 641ms"]},"poisoning":{"score":15,"max":15,"notes":["13 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 2 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://mcp.nanoodle.com/mcp","reachable":true,"authRequired":false,"latencyMs":641,"serverInfo":{"name":"nanoodle-mcp","version":"0.6.0"}}],"packages":[{"registryType":"npm","identifier":"nanoodle-mcp","version":"0.6.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-08-13T15:30:55.617Z","repositoryUrl":"git+https://github.com/nanoodlecom/nanoodle-mcp.git","weeklyDownloads":76}],"repo":{"found":true,"owner":"nanoodlecom","repo":"nanoodle-mcp","archived":false,"pushedAt":"2026-11-03T01:11:00Z","stars":1,"forks":1,"openIssues":14,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/302611348?v=4","ownerCreatedAt":"2026-07-11T18:50:22Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/302611348?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":1,"forks":1,"downloadsWeek":76,"license":"MIT","lastPushAt":"2026-11-03T01:11:00.000Z","score":35}}}},"grade_history":[],"reviews":[]}