io.github.chrischall/gemini-mcp
NPM · @CHRISCHALL/GEMINI-MCP · SCANNED AUG 8
Generate and edit images with Google Gemini (Nano Banana / Nano Banana Pro) image models.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 30 of 97 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to chrischall/gemini-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability0
- Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Stability & Change Management0
- Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Tool Coverage0
- Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.Unverified
Capabilities0
- Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet.Unverified
Unverified: 4 categories
Categories scored 0 because our sandbox run of this package has not given us the schema these checks need to read. That is a gap on our side rather than a finding about the package, and we only credit what we can confirm, so the score stands at 0 until the capture succeeds. We are working through the fleet, so this normally clears without any action from you. How we score packages →
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @chrischall/gemini-mcp
claude mcp add chrischall-gemini-mcp -- npx -y @chrischall/gemini-mcp
codex mcp add chrischall-gemini-mcp -- npx -y @chrischall/gemini-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"chrischall-gemini-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@chrischall/gemini-mcp"
],
"enabled": true
}
}
} openclaw mcp add chrischall-gemini-mcp --command npx --arg -y --arg @chrischall/gemini-mcp
mcp_servers:
chrischall-gemini-mcp:
command: "npx"
args: ["-y", "@chrischall/gemini-mcp"] {
"mcpServers": {
"chrischall-gemini-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/gemini-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 8 Aug 26 0
- MCP protocol: unverified → pass ▲ functional
- Stability: unverified → 0.10 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Package version: 1.6.0 → 1.6.1 functional
- Package version: 1.5.1 → 1.6.0 functional
- 7 Aug 26 −21
- Known CVEs: partial → pass ▲ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Dependency health: partial → 0.86 functional
- Package version: 1.5.1 → 1.6.0 functional
- 6 Aug 26 +24
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Tool coverage: 100 functional
- First check of Schema quality: good functional
- First check of Schema quality: fail functional
- First check of Schema quality: fail functional
- 5 Aug 26 +2
- CVE-2026-69207 no longer affects this package ▲ security
- Known CVEs: fail → partial ▲ security
- 4 Aug 26 −2
- CVE-2026-69207 affects this package: medium ▼ security
- Known CVEs: partial → fail ▼ security
- 2 Aug 26 +12
- Known CVEs: partial → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Dependency health: partial → unverified ▼ functional
- 1 Aug 26 0
- Known CVEs: partial → unverified ▼ security
- Dependency health: partial → unverified ▼ functional
- Package version: 1.4.0 → 1.5.1 functional
- 31 Jul 26 +28
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 8 Aug 2026 · Analysed npm/@chrischall/[email protected]
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | chrischall/gemini-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/chrischall/gemini-mcp/.github/workflows/release-please.yml@refs/heads/main |
| Rekor log index | 2376909282 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:1887013d3d5946a1206c8e40476bd1e376f83504e2304a075e4febadf77d6527f0b04142061bc29012b19a261558b082032a446d3b3b4b6316b8f2138 |
Dependencies 97 packages
| Packages resolved | 97 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
gemini_delete_file ~102
Delete an uploaded file, image or photo (by file_uri) from the Gemini Files API before its ~48h expiry. Any tool call still referencing it will then fail with a generic 404, so delete only references you are finished with.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| file_uri | string | yes | The `files/<id>` reference (or full uri) to delete |
No output schema declared.
No examples provided.
gemini_get_result ~113
Retrieve an async generation started with `async: true`. Pass the returned `job_id`: while running it reports status "running"; on completion it returns the normal result (image paths / inline images + meta); on failure it raises the recorded error. Jobs belong to your session and expire ~10 min after completion — if a job id is unknown, check the output dir / <image>.json sidecar.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The job_id returned by a generation tool called with async: true |
No output schema declared.
No examples provided.
gemini_image_edit ~1,131
Edit or compose images: provide one or more input images (paths or base64), plus a text instruction. For a SERIES of successive edits to the same image, prefer gemini_interact (multi-turn) — it keeps edit context and avoids re-processing the full image each round; use gemini_image_edit for one-off edits or composing multiple distinct inputs. Gemini over-preserves the input; there is no edit-strength control — for large structural changes, reroll with a different `seed` or more forceful wording.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | Output aspect ratio |
| async | boolean | – | Run in the background and return a job_id immediately instead of the image, so a long (Pro/4K) generation cannot hit the host tools/call timeout (-32001). Poll gemini_get_result with the job_id to fe… |
| characters | array | – | Names of saved characters (see gemini_list_characters / gemini_save_character): each one's reference image and description are attached to the request automatically, keeping recurring subjects consis… |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| filename | string | – | Base filename for the output image (extension stripped; default: slugified prompt) |
| from_clipboard | boolean | – | Use the image currently on the macOS system clipboard as an input (downscaled to JPEG) |
| google_search | boolean | – | Ground the image in live Google Search results (current events, weather, data) |
| idempotency_key | string | – | Opaque idempotency key: a repeat call with the same key returns the recorded result (reused: true) instead of billing a new generation. Set it when retrying after a host timeout (-32001) to avoid a d… |
| image_size | string | – | Output resolution (512 = 0.5K, Flash-only) |
| images | array | – | Paths to input image file(s) (1 = edit, 2+ = compose) |
| images_base64 | array | – | Input images as base64 strings or data URIs. Last resort: prefer images_url or images_file_uris, which keep image bytes out of the conversation |
| images_file_uris | array | – | Input images by Gemini Files API reference ("files/<id>", or the full uri) from gemini_upload_file or POST /upload. Upload once, then reference it across as many calls as you like — no bytes are re-s… |
| images_r2_keys | array | – | Input images by r2_key from THIS connector's store: a signed upload (gemini_get_upload_url → curl PUT) or an earlier generation's media[].r2_key. The server reads its own bucket directly — no bytes i… |
| images_url | array | – | Input images as public https URLs — the SERVER downloads them, so no image bytes travel through the conversation. Preferred over images_base64, which costs ~14k tokens per photo and breaks if a file… |
| inline | boolean | – | Return base64 images inline instead of writing to disk |
| max_wait_ms | integer | – | Wait up to this many ms for the result; if generation is still running when the budget expires, return { job_id, status: "running" } immediately instead (poll gemini_get_result). Keeps fast results i… |
| model | string | – | Model id override (default: server default; see gemini_list_models). gemini-3.1-flash-image (Nano Banana 2) is the versatile generalist workhorse — balances speed with state-of-the-art 4K generation,… |
| output_dir | string | – | Directory to write images to (default: $GEMINI_OUTPUT_DIR or cwd) |
| prompt | string | yes | Instruction describing the edit or composition |
| seed | integer | – | Seed for reproducible generation; random if omitted |
| style | string | – | Name of a saved style preset (see gemini_list_styles / gemini_save_style): its prompt fragment — and reference image, if it has one — is applied to the request automatically. Hosted connector only. |
| thinking_level | string | – | Reasoning depth (Gemini 3 models); higher can help complex/structural edits |
| timeout_ms | integer | – | Upstream request timeout in ms for this call (default: $GEMINI_TIMEOUT_MS, else 60000 — or 120000 when image_size is 4K, which routinely runs past 60s) |
No output schema declared.
No examples provided.
gemini_image_generate ~1,165
Generate image(s) from a text prompt with a Gemini image model (Nano Banana / Nano Banana Pro). If the result will likely be refined iteratively, prefer gemini_interact (multi-turn) as the entry point.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | Output aspect ratio |
| async | boolean | – | Run in the background and return a job_id immediately instead of the image, so a long (Pro/4K) generation cannot hit the host tools/call timeout (-32001). Poll gemini_get_result with the job_id to fe… |
| characters | array | – | Names of saved characters (see gemini_list_characters / gemini_save_character): each one's reference image and description are attached to the request automatically, keeping recurring subjects consis… |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| count | integer | – | Number of independent images (default 1) |
| filename | string | – | Base filename for the output image (extension stripped; default: slugified prompt) |
| from_clipboard | boolean | – | Use the image currently on the macOS system clipboard as an input (downscaled to JPEG) |
| google_search | boolean | – | Ground the image in live Google Search results (current events, weather, data) |
| idempotency_key | string | – | Opaque idempotency key: a repeat call with the same key returns the recorded result (reused: true) instead of billing a new generation. Set it when retrying after a host timeout (-32001) to avoid a d… |
| image_size | string | – | Output resolution (512 = 0.5K, Flash-only) |
| images | array | – | Paths to reference input images (image-conditioned generation) |
| images_base64 | array | – | Reference images as base64 strings or data URIs. Last resort: prefer images_url or images_file_uris, which keep image bytes out of the conversation |
| images_file_uris | array | – | Reference images by Gemini Files API reference ("files/<id>", or the full uri) from gemini_upload_file or POST /upload. Upload once, then reference it across as many calls as you like — no bytes are… |
| images_r2_keys | array | – | Reference images by r2_key from THIS connector's store: a signed upload (gemini_get_upload_url → curl PUT) or an earlier generation's media[].r2_key. The server reads its own bucket directly — no byt… |
| images_url | array | – | Reference images as public https URLs — the SERVER downloads them, so no image bytes travel through the conversation. Preferred over images_base64, which costs ~14k tokens per photo and breaks if a f… |
| inline | boolean | – | Return base64 images inline instead of writing to disk |
| max_wait_ms | integer | – | Wait up to this many ms for the result; if generation is still running when the budget expires, return { job_id, status: "running" } immediately instead (poll gemini_get_result). Keeps fast results i… |
| model | string | – | Model id override (default: server default; see gemini_list_models). gemini-3.1-flash-image (Nano Banana 2) is the versatile generalist workhorse — balances speed with state-of-the-art 4K generation,… |
| output_dir | string | – | Directory to write images to (default: $GEMINI_OUTPUT_DIR or cwd) |
| prompt | string | yes | Text prompt describing the image |
| seed | integer | – | Seed for reproducible generation; random if omitted |
| style | string | – | Name of a saved style preset (see gemini_list_styles / gemini_save_style): its prompt fragment — and reference image, if it has one — is applied to the request automatically. Hosted connector only. |
| thinking_level | string | – | Reasoning depth (Gemini 3 models); higher can help complex/structural edits |
| timeout_ms | integer | – | Upstream request timeout in ms for this call (default: $GEMINI_TIMEOUT_MS, else 60000 — or 120000 when image_size is 4K, which routinely runs past 60s) |
| video_path | string | – | Path to a local video file — uploaded to the Gemini Files API (~48h retention, 2 GB max) and used as the video reference. Alternative to video_url. |
| video_url | string | – | Public YouTube URL (or a previously uploaded Files API uri) as a video reference (video→image; use a Flash model e.g. gemini-3.1-flash-image) |
No output schema declared.
No examples provided.
gemini_image_set ~1,246
Generate a consistent SET of images: a master image from master_prompt, then one image per scene that references the master so the subject/style stays consistent. Provide `scenes` (explicit per-image prompts) OR `count` (variations of the master). Scene generations run in parallel (reference_mode "master", the default). On the hosted connector: saved `characters` and a saved `style` can seed the whole set by name, multi-image results include a `bundle_url` zip of every image (one curl instead of N), and `max_wait_ms` returns a pollable job handle if the batch runs long.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | Output aspect ratio |
| async | boolean | – | Run in the background and return a job_id immediately instead of the image, so a long (Pro/4K) generation cannot hit the host tools/call timeout (-32001). Poll gemini_get_result with the job_id to fe… |
| basename | string | – | Base filename prefix for output images (default: slugified master_prompt) |
| characters | array | – | Names of saved characters (see gemini_list_characters / gemini_save_character): each one's reference image and description are attached to the request automatically, keeping recurring subjects consis… |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| count | integer | – | Number of variations of master_prompt (when scenes omitted) |
| from_clipboard | boolean | – | Use the image currently on the macOS system clipboard as an input (downscaled to JPEG) |
| google_search | boolean | – | Ground the image in live Google Search results (current events, weather, data) |
| idempotency_key | string | – | Opaque idempotency key: a repeat call with the same key returns the recorded result (reused: true) instead of billing a new generation. Set it when retrying after a host timeout (-32001) to avoid a d… |
| image_size | string | – | Output resolution (512 = 0.5K, Flash-only) |
| inline | boolean | – | Return base64 images inline instead of writing to disk |
| master_images | array | – | Reference image paths passed to the master generation call |
| master_images_base64 | array | – | Reference images as base64 strings or data URIs for master generation. Last resort: prefer master_images_url or master_images_file_uris, which keep image bytes out of the conversation |
| master_images_file_uris | array | – | Reference images passed to the master AND to every scene call by Gemini Files API reference ("files/<id>", or the full uri) from gemini_upload_file or POST /upload. Upload once, then reference it acr… |
| master_images_r2_keys | array | – | Reference images passed to the master AND to every scene call by r2_key from THIS connector's store: a signed upload (gemini_get_upload_url → curl PUT) or an earlier generation's media[].r2_key. The… |
| master_images_url | array | – | Reference images passed to the master AND to every scene call (fetched once) as public https URLs — the SERVER downloads them, so no image bytes travel through the conversation. Preferred over images… |
| master_prompt | string | yes | Prompt for the master/reference image |
| max_wait_ms | integer | – | Wait up to this many ms for the result; if generation is still running when the budget expires, return { job_id, status: "running" } immediately instead (poll gemini_get_result). Keeps fast results i… |
| model | string | – | Model id override (default: server default; see gemini_list_models). gemini-3.1-flash-image (Nano Banana 2) is the versatile generalist workhorse — balances speed with state-of-the-art 4K generation,… |
| output_dir | string | – | Directory to write images to (default: $GEMINI_OUTPUT_DIR or cwd) |
| reference_mode | string | – | master: every image references the master (default). chain: each references the previous. |
| scenes | array | – | Per-image prompts (1-8); each references the master |
| seed | integer | – | Seed for reproducible generation; random if omitted |
| style | string | – | Name of a saved style preset (see gemini_list_styles / gemini_save_style): its prompt fragment — and reference image, if it has one — is applied to the request automatically. Hosted connector only. |
| thinking_level | string | – | Reasoning depth (Gemini 3 models); higher can help complex/structural edits |
| timeout_ms | integer | – | Upstream request timeout in ms for this call (default: $GEMINI_TIMEOUT_MS, else 60000 — or 120000 when image_size is 4K, which routinely runs past 60s) |
No output schema declared.
No examples provided.
gemini_interact ~1,492
Preferred tool for iterative or multi-step refinement of a single image — multi-turn generation/editing via Gemini's Interactions API. To refine, capture the returned interaction `id` and pass it as `previous_interaction_id` on the next call — do NOT start a new interaction or re-upload the image for each tweak. `continue_last: true` chains from this session's most recent interaction without threading the id. If a call times out on the client side, the generation usually still completes: the image plus a `<image>.json` sidecar recording its interaction id land in the output dir, and `continue_last: true` still resumes that interaction — check the output dir before re-issuing (a re-issue is a second billable generation). If a chained call 404s, this tool re-anchors itself on the prior output image and re-issues un-chained: success is reported as `chain_recovered` (the chain was the problem, and you get your image anyway); a second 404 is reported as the interaction id NOT being the cause (check the model id / files uri instead). Output is JPEG.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | Output aspect ratio |
| async | boolean | – | Run in the background and return a job_id immediately instead of the image, so a long (Pro/4K) generation cannot hit the host tools/call timeout (-32001). Poll gemini_get_result with the job_id to fe… |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| continue_last | boolean | – | Continue from the most recent interaction this server created (convenience for previous_interaction_id; an explicit id wins). Survives a server restart by falling back to the newest <image>.json side… |
| filename | string | – | Base filename for the output image (extension stripped; default: slugified input) |
| from_clipboard | boolean | – | Use the image currently on the macOS system clipboard as an input (downscaled to JPEG) |
| google_search | boolean | – | Ground the image in live Google Search results (current events, weather, data) |
| idempotency_key | string | – | Opaque idempotency key: a repeat call with the same key returns the recorded result (reused: true) instead of billing a new generation. Set it when retrying after a host timeout (-32001) to avoid a d… |
| image_size | string | – | Output resolution (512 = 0.5K, Flash-only) |
| images | array | – | Paths to reference input images. NEW reference images only (e.g. a style or target photo). When chaining with previous_interaction_id, do NOT re-attach the prior turn's output — the interaction alrea… |
| images_base64 | array | – | Reference images as base64 strings or data URIs. Last resort: prefer images_url or images_file_uris, which keep image bytes out of the conversation. NEW reference images only (e.g. a style or target… |
| images_file_uris | array | – | Reference images. NEW reference images only (e.g. a style or target photo). When chaining with previous_interaction_id, do NOT re-attach the prior turn's output — the interaction already contains it,… |
| images_url | array | – | Reference images. NEW reference images only (e.g. a style or target photo). When chaining with previous_interaction_id, do NOT re-attach the prior turn's output — the interaction already contains it,… |
| inline | boolean | – | Return base64 images inline instead of writing to disk |
| input | string | yes | Text prompt or editing instruction |
| max_wait_ms | integer | – | Wait up to this many ms for the result; if generation is still running when the budget expires, return { job_id, status: "running" } immediately instead (poll gemini_get_result). Keeps fast results i… |
| model | string | – | Model id override (default: server default; see gemini_list_models). gemini-3.1-flash-image (Nano Banana 2) is the versatile generalist workhorse — balances speed with state-of-the-art 4K generation,… |
| output_dir | string | – | Directory to write images to (default: $GEMINI_OUTPUT_DIR or cwd) |
| previous_interaction_id | string | – | ID from a prior gemini_interact call — continues that multi-turn conversation |
| search_types | array | – | Grounding search types (implies google_search). image_search (gemini-3.1-flash-image only) uses Google Image Search results as visual references; per Google ToS the returned grounding.search_suggesti… |
| thinking_level | string | – | Reasoning depth; higher can help complex/structural edits |
| timeout_ms | integer | – | Upstream request timeout in ms for this call (default: $GEMINI_TIMEOUT_MS, else 60000 — or 120000 when image_size is 4K, which routinely runs past 60s) |
| video_path | string | – | Path to a local video file — uploaded to the Gemini Files API (~48h retention, 2 GB max) and used as the video reference. Alternative to video_url. |
| video_url | string | – | Public YouTube URL (or a previously uploaded Files API uri) as a video reference (video→image; use a Flash model e.g. gemini-3.1-flash-image) |
No output schema declared.
No examples provided.
gemini_list_files ~88
List files, images and photos currently uploaded to the Gemini Files API under this API key, with their reusable `file_uri` (`files/<id>`) references, MIME types and expiry times. Retention is ~48h, so an entry that has vanished has expired rather than failed.
| Name | Type | Req | Description |
|---|---|---|---|
| page_size | integer | – | Maximum files to return (1-100, default 100) |
No output schema declared.
No examples provided.
gemini_list_models ~36
List the Gemini image-generation models available to your API key (Nano Banana / Nano Banana Pro family), and the current default model.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gemini_music_generate ~800
Generate music from a text prompt (mood, genre, instruments, structure, or lyrics inline) via a Lyria model (preview): lyria-3-clip-preview (~30s clips, default) or lyria-3-pro-preview (longer, WAV-capable). Written to disk as MP3/WAV (or returned inline). Runs long — use `async: true` + gemini_get_result, or raise `timeout_ms`. Preview model: needs a funded account.
| Name | Type | Req | Description |
|---|---|---|---|
| async | boolean | – | Run in the background and return a job_id immediately instead of the image, so a long (Pro/4K) generation cannot hit the host tools/call timeout (-32001). Poll gemini_get_result with the job_id to fe… |
| audio_format | string | – | Output format (default mp3). wav is lyria-3-pro-preview-only. |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| continue_last | boolean | – | Continue from the most recent music interaction this server created (explicit previous_interaction_id wins) |
| filename | string | – | Base filename for the output audio (extension stripped; default: slugified prompt) |
| from_clipboard | boolean | – | Use the image currently on the macOS clipboard as a reference |
| idempotency_key | string | – | Opaque idempotency key: a repeat call with the same key returns the recorded result (reused: true) instead of billing a new generation. Set it when retrying after a host timeout (-32001) to avoid a d… |
| images | array | – | Optional reference image path(s) to condition the music |
| images_base64 | array | – | Reference images as base64 strings or data URIs. Last resort: prefer images_url or images_file_uris, which keep image bytes out of the conversation |
| images_file_uris | array | – | Reference images by Gemini Files API reference ("files/<id>", or the full uri) from gemini_upload_file or POST /upload. Upload once, then reference it across as many calls as you like — no bytes are… |
| images_url | array | – | Reference images as public https URLs — the SERVER downloads them, so no image bytes travel through the conversation. Preferred over images_base64, which costs ~14k tokens per photo and breaks if a f… |
| inline | boolean | – | Return base64 audio inline instead of writing to disk |
| max_wait_ms | integer | – | Wait up to this many ms for the result; if generation is still running when the budget expires, return { job_id, status: "running" } immediately instead (poll gemini_get_result). Keeps fast results i… |
| model | string | – | Lyria model (default: lyria-3-clip-preview). Pro is longer-form and supports WAV. |
| output_dir | string | – | Directory to write audio to (default: $GEMINI_OUTPUT_DIR or cwd) |
| previous_interaction_id | string | – | Interaction id to continue from |
| prompt | string | yes | Description of the music: mood, genre, instruments, tempo, structure, or lyrics |
| timeout_ms | integer | – | Upstream request timeout in ms for this call (default: $GEMINI_TIMEOUT_MS, else 60000 — or 120000 when image_size is 4K, which routinely runs past 60s) |
No output schema declared.
No examples provided.
gemini_upload_file ~367
Upload a file — an image, reference photo, picture, screenshot, video or audio clip — to the Gemini Files API ONCE, and get back a reusable `file_uri` (`files/<id>`) to attach to later image, video or music generations. Keywords: upload, upload file, upload image, upload photo, attach, reference image, reference photo, file_uri, files api, image reference, reuse across calls. Use this instead of pasting base64 into a tool call: the reference is a short string, so no image bytes ever enter the conversation, and it can be reused across many generations until it expires (~48h). Provide exactly one of `url` (the server downloads it), `data_base64`, or `path` (a local file).
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| data_base64 | string | – | Raw base64 or a data: URI. Last resort — this is the one form that costs model context (~14k tokens for a modest JPEG). |
| display_name | string | – | Human-readable name recorded against the upload |
| mime_type | string | – | Override the detected MIME type (sniffed from the bytes / taken from the server response otherwise) |
| path | string | – | Path to a local file (absolute, or resolved against $GEMINI_INPUT_DIR). Confirm-gated like every other local-file input. |
| r2_key | string | – | Unavailable on this server (media is written to local disk) — pass the file path via `path` instead. |
| url | string | – | Public https URL the SERVER downloads and uploads (image/video/audio, up to 100MB). No bytes pass through the conversation. |
No output schema declared.
No examples provided.
gemini_video_generate ~824
Generate a short video via the Gemini omni model (preview): text→video, image→video / reference→video (supply reference image[s]), or edit a prior video (task: "edit" + previous_interaction_id / continue_last). Output is written to disk as MP4 (video has no inline MCP block). Video runs long — use `async: true` to get a job_id immediately and poll gemini_get_result, or raise `timeout_ms`. Preview model: needs a funded account.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | Output aspect ratio (omni: 16:9 or 9:16) |
| async | boolean | – | Run in the background and return a job_id immediately instead of the image, so a long (Pro/4K) generation cannot hit the host tools/call timeout (-32001). Poll gemini_get_result with the job_id to fe… |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| continue_last | boolean | – | Continue from the most recent video interaction this server created (explicit previous_interaction_id wins) |
| filename | string | – | Base filename for the output video (extension stripped; default: slugified prompt) |
| from_clipboard | boolean | – | Use the image currently on the macOS clipboard as a reference |
| idempotency_key | string | – | Opaque idempotency key: a repeat call with the same key returns the recorded result (reused: true) instead of billing a new generation. Set it when retrying after a host timeout (-32001) to avoid a d… |
| images | array | – | Reference image path(s) for image_to_video / reference_to_video |
| images_base64 | array | – | Reference images as base64 strings or data URIs. Last resort: prefer images_url or images_file_uris, which keep image bytes out of the conversation |
| images_file_uris | array | – | Reference stills by Gemini Files API reference ("files/<id>", or the full uri) from gemini_upload_file or POST /upload. Upload once, then reference it across as many calls as you like — no bytes are… |
| images_url | array | – | Reference stills as public https URLs — the SERVER downloads them, so no image bytes travel through the conversation. Preferred over images_base64, which costs ~14k tokens per photo and breaks if a f… |
| max_wait_ms | integer | – | Wait up to this many ms for the result; if generation is still running when the budget expires, return { job_id, status: "running" } immediately instead (poll gemini_get_result). Keeps fast results i… |
| model | string | – | Model id override (default: gemini-omni-flash-preview) |
| output_dir | string | – | Directory to write the video to (default: $GEMINI_OUTPUT_DIR or cwd) |
| previous_interaction_id | string | – | Interaction id to edit/continue (with task: "edit") |
| prompt | string | yes | Description of the video to generate (or the edit instruction when task=edit) |
| task | string | – | text_to_video (default), image_to_video / reference_to_video (need image input), or edit (needs previous_interaction_id) |
| timeout_ms | integer | – | Upstream request timeout in ms for this call (default: $GEMINI_TIMEOUT_MS, else 60000 — or 120000 when image_size is 4K, which routinely runs past 60s) |
No output schema declared.
No examples provided.