Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

Image Studio MCP (image generation for Claude CLI sessions)

A built-in tool server that gives any Claude session twelve tools for working with images: generating from a prompt, comparing models, browsing your history, reusing prompt templates, and publishing an image as a shareable link. It replaced an earlier tool of the same name, so old prompts still work.

What it is

A built-in MCP server that gives any Claude CLI session 12 tools for generating, browsing, and sharing images through the Image Studio API. Agents can generate images from a text prompt, compare outputs across multiple models, browse the user's generation history, save reusable prompt templates, and publish images via a shareable link — all without leaving the session.

This server replaced the earlier Nano-Banana MCP. The same generate_image tool name is exposed, so any prompt that referred to that tool still works. The server is composed into the session alongside MemPalace, KMS, Google Workspace, and Zapier; it is never active for KMS sessions.

Available models: gemini-2.5-flash-image, gemini-3.1-flash-image-preview, gemini-3-pro-image-preview, seedream-4, seedream-4.5, ideogram-v3, gpt-image-2.

Where to find it

How to enable it

  1. Open Settings via the gear icon in the toolbar, or via the Settings virtual project in the sidebar.
  2. Navigate to Accounts & Providers → Image Studio.
  3. Toggle Image Studio on.
  4. Paste your API key in the field that appears. Keys start with jls_ak_. The key is encrypted at rest and never crosses IPC in plaintext.
  5. Every new Claude CLI session spawned after this point will have all 12 tools available automatically. Running sessions do not pick it up until they are restarted.

What the user sees

Once enabled, the tools are invisible until an agent calls them. When you (or an agent) ask something like "generate a landscape photo of a foggy mountain valley in the style of a watercolor painting," the agent:

  1. Calls generate_image with a prompt, model, aspect ratio, and count.
  2. The tool returns image URLs, which the agent presents inline in the chat.
  3. If you ask to compare models, the agent calls compare_models and shows a side-by-side set of results.

MCP tool invocations appear as collapsible activity blocks in the session transcript, the same as any other Claude Code tool call (Read, Grep, Bash). The user does not see raw API payloads — just the formatted results the agent chooses to surface.

Annotation is a special case: open_for_annotation returns a URL to the JLS web app where you can mark up an image. The agent cannot draw annotations itself; it hands you the URL to do it in a browser. This is a placeholder pending a future API enrichment that would allow programmatic annotation delivery.

How it behaves

Available tools (12)

Category Tool Description
Generate generate_image Generate images from a text prompt — specify subject, style, model, aspect ratio, and count
compare_models Run the same prompt across multiple models simultaneously so outputs can be compared side by side
enhance_image AI analyzes an existing image and suggests improved prompts to get a better result
estimate_cost Preview pricing for a generation request before it runs
Browse list_images List the user's recent generations with optional model filter and text search
download_image Retrieve a download URL for a specific image from the library
Templates list_templates List the user's saved prompt templates
create_template Save a prompt (with model, style, and parameter defaults) as a reusable template
Sharing create_share Create a shareable public link for an image, with an optional expiry time
list_shares List all currently active share links and their expiry status
revoke_share Revoke an active share link, making it inaccessible immediately
Annotate open_for_annotation Return a URL to the JLS web app to annotate an image manually (placeholder — programmatic annotation pending API enrichment)

Known limitations

  • open_for_annotation is a placeholder. The tool returns a URL to the JLS web app for manual annotation. Programmatic in-session annotation delivery is pending a future JLS API enrichment. The tool is still callable and useful for getting a direct browser link; the agent simply cannot read back what you draw.
  • Running sessions do not pick up a newly enabled key. Toggle the feature and paste a key, then restart any session you want to use it in.
  • KMS sessions never get these tools. KMS is isolated from all composed MCP servers by design.
  • Available models may change. The model list (gemini-2.5-flash-image, gemini-3.1-flash-image-preview, gemini-3-pro-image-preview, seedream-4, seedream-4.5, ideogram-v3, gpt-image-2) reflects what the JLS API supports at the time of this writing. Use estimate_cost or check the JLS dashboard if you are unsure which models are currently live.

For agents

How it works

There is exactly one .mcp.json per session working directory, and a single owner writes it: src/main/services/mcp/mcp-config-orchestrator.ts. At spawn time the orchestrator composes one entry per enabled MCP server into that file. Image Studio contributes its entry through a builder in the orchestrator. When the feature toggle is on and a valid API key is present, the jls-image-studio server entry is included; when the toggle is off or the key is missing, the entry is omitted. If no server is enabled at all, the orchestrator removes any stale .mcp.json.

The entry tells Claude CLI to launch the MCP server as a subprocess using ELECTRON_RUN_AS_NODE=1 + process.execPath (the Electron binary running as plain Node). The server entry point is src/mcp/jls-image-studio-server.ts, which shells out to a bundled CLI at src/mcp/jls-studio.mjs. The API key is passed to the server via environment variable — it never touches disk in plaintext.

The API key is stored via createApiKeyStore, which encrypts it using Electron's safeStorage module (the OS keychain on Windows) with an enc: prefix in config.json. The key is decrypted in Main only; it is never forwarded to the renderer.

The server is force-disabled for KMS sessions. KMS uses a separate isolated context where external MCP integrations are not composed in.

Path resolution to the bundled jls-studio.mjs uses the same app.isPackaged ? resolve(app.getAppPath(), …) : resolve(__dirname, …) pattern as the other composed MCP servers, so it works correctly in dev, sandbox, and packaged builds.

Related

Last verified 2026-09-23