@genspark/cli 1.0.27 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/mediaSummary.d.ts +22 -0
- package/dist/mediaSummary.d.ts.map +1 -0
- package/dist/mediaSummary.js +47 -0
- package/dist/mediaSummary.js.map +1 -0
- package/docs/skills.md +13 -269
- package/package.json +1 -1
- package/skills/gsk-analyze-media/SKILL.md +3 -2
- package/skills/gsk-audio-transcribe/SKILL.md +2 -1
- package/skills/gsk-create-task/SKILL.md +3 -3
- package/skills/gsk-gmail/SKILL.md +6 -2
- package/skills/gsk-google-calendar/SKILL.md +2 -0
- package/skills/gsk-google-drive/SKILL.md +11 -5
- package/skills/gsk-google-sheets/SKILL.md +10 -2
- package/skills/gsk-image-generation/SKILL.md +4 -2
- package/skills/gsk-microsoft-teams/SKILL.md +13 -7
- package/skills/gsk-notion/SKILL.md +1 -1
- package/skills/gsk-onedrive/SKILL.md +1 -0
- package/skills/gsk-outlook-calendar/SKILL.md +3 -0
- package/skills/gsk-outlook-email/SKILL.md +8 -4
- package/skills/gsk-sharepoint/SKILL.md +2 -1
- package/skills/gsk-sharepoint-upload/SKILL.md +1 -1
- package/skills/gsk-task-continue/SKILL.md +39 -0
- package/skills/gsk-video-generation/SKILL.md +9 -6
package/docs/skills.md
CHANGED
|
@@ -1,312 +1,56 @@
|
|
|
1
1
|
# GSK CLI Skills Index
|
|
2
2
|
|
|
3
3
|
> Auto-generated by `python -m backend.genspark_tool_cli.generate_skills`. Do not edit manually.
|
|
4
|
-
>
|
|
5
|
-
> **Exception — the section below.** The `gsk skills <verb>` command group
|
|
6
|
-
> (design: `docs/plans/2026-07-05-gsk-skills-universal-design.md`) is
|
|
7
|
-
> registered behind `requires_gk="gk_skills_cli"`, and the generator skips
|
|
8
|
-
> every gated tool (`generate_skills.py`: `if config.requires_gk: continue`),
|
|
9
|
-
> so these verbs never appear in the auto-generated table below and have no
|
|
10
|
-
> other doc home yet. This section is maintained by hand until that gap is
|
|
11
|
-
> closed; re-running `python -m backend.genspark_tool_cli.generate_skills`
|
|
12
|
-
> overwrites the whole file, so re-add this section if it goes missing.
|
|
13
4
|
|
|
14
|
-
|
|
5
|
+
**Total skills:** 49
|
|
15
6
|
|
|
16
|
-
|
|
17
|
-
`pull`, `sync`, `save`, `publish` — over the shared `SkillsService` catalog
|
|
18
|
-
(personal / community / team skills). Gated by `gk_skills_cli` (employees +
|
|
19
|
-
mainfunc allowlist during rollout); with the flag off, none of the
|
|
20
|
-
`skills_*` tools are discoverable via `GET /api/tool_cli/tools` and the CLI
|
|
21
|
-
reports them as unknown commands.
|
|
22
|
-
|
|
23
|
-
Mutating verbs (`install`, `uninstall`, `upgrade`, `save`, `publish`) reject
|
|
24
|
-
agent-principal (DE-runtime) tokens with `FORBIDDEN: agent-principal tokens
|
|
25
|
-
cannot modify user skills` — a caller can only ever mutate its own catalog,
|
|
26
|
-
never another user's. Read/export verbs (`list`, `info`, `team`, `pull`,
|
|
27
|
-
`sync`) carry no such check.
|
|
28
|
-
|
|
29
|
-
### `pull` vs `sync` — authoring-only vs. runtime materialization
|
|
30
|
-
|
|
31
|
-
These two verbs look similar (both write a skill's files to local disk) but
|
|
32
|
-
serve opposite purposes and must not be conflated:
|
|
33
|
-
|
|
34
|
-
- **`pull <ref> [--out <dir>]`** is an authoring/export/debug flow only. It
|
|
35
|
-
writes one skill's full tree plus a `.genspark-skill.json` provenance
|
|
36
|
-
sidecar (`{ref, owner, slug, commit, publisher_type, pulled_at,
|
|
37
|
-
file_count, content_hash}`) so the directory can be identified and
|
|
38
|
-
refreshed on a later re-pull. It is **never** a runtime consumption or
|
|
39
|
-
boot path — a sandbox does not `pull` its enabled skills. A refresh
|
|
40
|
-
(re-pull into a directory that already has the sidecar) that fails
|
|
41
|
-
mid-write leaves the destination **emptied**, not restored to its prior
|
|
42
|
-
contents — refresh clears the target first, so the next `pull` rebuilds
|
|
43
|
-
it from scratch.
|
|
44
|
-
- **`sync [--check] [--store-dir <d>] [--mount-dir <d>]`** is the runtime
|
|
45
|
-
materialization path: it makes local disk match the caller's *entire*
|
|
46
|
-
enabled-skill set, incrementally, and is the verb a boot script or agent
|
|
47
|
-
host runs on every startup.
|
|
48
|
-
|
|
49
|
-
Put another way: `pull` moves one skill to a place you choose, for editing;
|
|
50
|
-
`sync` moves your whole enabled set to a fixed place, for running.
|
|
51
|
-
|
|
52
|
-
### `sync` — materialize your enabled skills
|
|
53
|
-
|
|
54
|
-
`gsk skills sync [--check] [--store-dir <dir>] [--mount-dir <dir>]`
|
|
55
|
-
|
|
56
|
-
The CLI keeps a local `{slug: sha}` digest map at
|
|
57
|
-
`<storeDir>/skills-sync-state.json` (default store dir: `~/.gsk/skills-store`;
|
|
58
|
-
default mount dir: `~/.opencode/skills`). Each `sync` call sends that digest
|
|
59
|
-
to the server, which diffs it against the caller's enabled-skill set and
|
|
60
|
-
returns only what changed:
|
|
61
|
-
|
|
62
|
-
- **State file self-heal.** A missing state file, unparseable JSON, OR a
|
|
63
|
-
valid-JSON-but-wrong-shape map (a non-object, or any entry whose key isn't
|
|
64
|
-
a valid slug / whose value isn't a string) is treated as an empty `{}`
|
|
65
|
-
digest, which forces a full re-fetch of every enabled skill on the next
|
|
66
|
-
`sync` rather than risk skipping a change against state that can't be
|
|
67
|
-
trusted. The shape check matters because the server rejects the entire
|
|
68
|
-
sync on a single bad key — without it a corrupt state file would wedge
|
|
69
|
-
every future `sync`.
|
|
70
|
-
- **Disk-truth re-materialization.** `sync` trusts DISK over the state file:
|
|
71
|
-
when the server reports a slug `unchanged` (its digest matched) but the
|
|
72
|
-
slug is no longer materialized on disk — the `<storeDir>/<slug>` dir was
|
|
73
|
-
hand-deleted, or a state file was restored from backup without its store —
|
|
74
|
-
the slug is dropped from the digest map so the next `sync` sees a miss and
|
|
75
|
-
re-fetches it. This keeps the "make local disk match the entire enabled
|
|
76
|
-
set" contract true even after out-of-band tampering with the store.
|
|
77
|
-
- **Symlink merge rules.** Fetched content lands in
|
|
78
|
-
`<storeDir>/<slug>/`, written to a sibling temp directory first and then
|
|
79
|
-
`rename`d into place (never a half-written skill on a dropped
|
|
80
|
-
connection), then symlinked from `<mountDir>/<slug>`. A stale symlink at
|
|
81
|
-
the mount path is freely repointed — same outcome as `setup.sh`'s
|
|
82
|
-
`rm -rf` + `ln -sfn` at sandbox boot. A pre-existing **real** directory at
|
|
83
|
-
the mount path (an inline-tar built-in skill, or user content), however,
|
|
84
|
-
is a deliberate **deviation** from `setup.sh`: `setup.sh` unconditionally
|
|
85
|
-
`rm -rf`s the mount path before symlinking, so the synced skill always
|
|
86
|
-
wins there. This CLI-side materializer instead never clobbers a real
|
|
87
|
-
directory it didn't create — the sync reports that slug as failed
|
|
88
|
-
instead — because it runs against a user's laptop filesystem, not a
|
|
89
|
-
disposable sandbox. When the mount is refused this way, the fetched
|
|
90
|
-
content is still **materialized in the store** and its sha is recorded, so
|
|
91
|
-
the server stops re-sending that slug on every subsequent `sync` — the
|
|
92
|
-
user sees the "stored but not mounted" warning once per content change,
|
|
93
|
-
not a re-download each run.
|
|
94
|
-
- **`--check`** reports the diff without writing anything to disk (a dry
|
|
95
|
-
run / shadow comparison), and sets the process exit code so scripts don't
|
|
96
|
-
need to parse output: **exit 0** when every entry is `unchanged`, **exit
|
|
97
|
-
3** when at least one slug would update, be removed, or errored.
|
|
98
|
-
- **Batching.** The server bounds each response to an 8 MiB soft budget
|
|
99
|
-
(`max_response_bytes`), checked *before* starting a skill's package
|
|
100
|
-
rather than mid-file — so a single batch can overshoot 8 MiB by up to one
|
|
101
|
-
skill's package, itself capped at 25 MiB (`per_skill_cap_bytes`). A
|
|
102
|
-
response with `"complete": false` means more changed skills remain; the
|
|
103
|
-
CLI calls `sync` again carrying forward the digest state it has applied
|
|
104
|
-
so far, and repeats until `"complete": true`. The client loop aborts
|
|
105
|
-
after 20 batches without completing (`exit 1`) as a runaway guard.
|
|
106
|
-
- Idempotent: an immediate second `sync` reports all-`unchanged`, zero
|
|
107
|
-
writes — including slugs whose mount was refused (their store is already
|
|
108
|
-
materialized and the sha recorded, so they too report `unchanged` with no
|
|
109
|
-
re-download).
|
|
110
|
-
- **Exit codes** (a boot script keys off these instead of parsing output):
|
|
111
|
-
- **0** — fully clean. For a real (non-`--check`) sync every slug was
|
|
112
|
-
applied/removed/unchanged with zero failures; for `--check`, everything
|
|
113
|
-
was `unchanged`.
|
|
114
|
-
- **3** — `--check` only: at least one slug would update, be removed, or
|
|
115
|
-
errored (a diff exists). No disk writes happened.
|
|
116
|
-
- **4** — a real sync finished but at least one slug **failed** (mount
|
|
117
|
-
refused because a real dir occupies the mount path, a write error, or a
|
|
118
|
-
server `error` row). The rest were applied; this code tells a boot
|
|
119
|
-
script "some skills didn't materialize" as distinct from a clean run.
|
|
120
|
-
**Exit 4 is retryable / non-fatal, not a hard failure.** In particular a
|
|
121
|
-
fresh sandbox whose enabled slug collides with a tar-baked builtin
|
|
122
|
-
directory exits 4 on its FIRST sync (real-dir-wins → that slug reported
|
|
123
|
-
`failed`, its content stored-but-not-mounted), then exits 0 on every
|
|
124
|
-
subsequent sync (the recorded sha suppresses re-sends and the builtin
|
|
125
|
-
keeps winning) — it self-heals. A symlink-unsupported filesystem
|
|
126
|
-
(Windows without Developer Mode, exFAT/FAT/SMB — `symlinkSync` throws)
|
|
127
|
-
is the PERSISTENT variant: the store is downloaded once and never
|
|
128
|
-
re-downloaded, but the mount can't be created, so that slug stays
|
|
129
|
-
`failed` and the sync keeps exiting 4 on every run. Both are the same
|
|
130
|
-
"downloaded but not mounted" condition. A boot-script consumer MUST NOT
|
|
131
|
-
treat exit 4 as a boot-blocking error: log it and continue.
|
|
132
|
-
- **1** — the sync loop itself aborted: a mid-loop batch call failed, or
|
|
133
|
-
it exceeded the 20-batch runaway guard without completing.
|
|
134
|
-
|
|
135
|
-
### `upgrade` — refresh an installed skill to the latest published version
|
|
136
|
-
|
|
137
|
-
`gsk skills upgrade <slug>`
|
|
138
|
-
|
|
139
|
-
Re-pins one installed skill to its publisher's latest version (a team skill
|
|
140
|
-
to the org-**approved** sha, never the author's latest candidate; a curated
|
|
141
|
-
or peer install to the source's current version). Idempotent — an
|
|
142
|
-
already-current skill reports `changed: false`, and a self-authored skill is
|
|
143
|
-
a benign skip (you edit those via `save`, not `upgrade`).
|
|
144
|
-
|
|
145
|
-
**Local edits are replaced.** If you `pull`ed an installed copy, edited it,
|
|
146
|
-
and `save`d the edits back to that same slug, `upgrade` **overwrites those
|
|
147
|
-
local edits** with the publisher's version — there is no divergence warning
|
|
148
|
-
today. To keep a customized fork, `pull`/`save` it under a **separate slug**
|
|
149
|
-
so `upgrade` on the original never touches your fork.
|
|
150
|
-
|
|
151
|
-
### `save` — write a local directory back to your catalog
|
|
152
|
-
|
|
153
|
-
`gsk skills save [path]` (default `path`: current directory)
|
|
154
|
-
|
|
155
|
-
The sentinel-protocol successor: SAS's retired `.save_to_self` file
|
|
156
|
-
convention told the sandbox host to zip a skill directory and upload it
|
|
157
|
-
out-of-band. `save` reads the directory itself and ships the encoded bytes
|
|
158
|
-
inline — works on any host, including git-less ones.
|
|
159
|
-
|
|
160
|
-
**Directory contract:**
|
|
161
|
-
|
|
162
|
-
- A root `SKILL.md` is required; the server rejects a save without one
|
|
163
|
-
anyway (frontmatter validation), so the CLI fails fast locally.
|
|
164
|
-
- Symlinks are never followed (skipped outright) — a save must not escape
|
|
165
|
-
the directory or loop on a cyclic link.
|
|
166
|
-
- `node_modules/` and `.git/` directories are never walked or shipped, at
|
|
167
|
-
any depth — they are never part of a skill, can blow the byte cap on junk,
|
|
168
|
-
and `.git` would leak history.
|
|
169
|
-
- At the root only, dotfiles are excluded from the upload except
|
|
170
|
-
`.gitignore` (ordinary authoring content) and the pull provenance sidecar
|
|
171
|
-
`.genspark-skill.json` (metadata, not a skill file). Dotfiles in
|
|
172
|
-
subdirectories **are** uploaded (only root-level dotfiles are excluded), so
|
|
173
|
-
clean any secret files out of subdirectories before `save`.
|
|
174
|
-
- The upload is capped at 25 MiB total (mirrored client- and server-side,
|
|
175
|
-
so an oversized save fails locally instead of round-tripping first).
|
|
176
|
-
|
|
177
|
-
**Fork warning.** If the target directory carries a
|
|
178
|
-
`.genspark-skill.json` sidecar (i.e. it was previously populated by `pull`)
|
|
179
|
-
with a recorded `owner`, `save` prints a warning that saving will fork the
|
|
180
|
-
skill into your own catalog — and then proceeds. This warning fires for
|
|
181
|
-
**any** previously-pulled directory, including one that was pulled from
|
|
182
|
-
your *own* catalog: the CLI has no "whoami" to compare the sidecar's owner
|
|
183
|
-
against the caller's identity, so it cannot distinguish "this is someone
|
|
184
|
-
else's skill" from "this is mine, re-pulled." Treat the warning as
|
|
185
|
-
informational, not necessarily a fork.
|
|
186
|
-
|
|
187
|
-
**Overwrite semantics.** `save` always overwrites the caller's existing
|
|
188
|
-
copy of the resulting slug — there is no separate create-only mode; a
|
|
189
|
-
brand-new slug is a create either way. The response's `outcome` field is
|
|
190
|
-
either `"unchanged"` (identical tree, no-op) or `"updated"` — note that the
|
|
191
|
-
very first save of a slug that doesn't exist yet in the caller's catalog
|
|
192
|
-
also reports `outcome: "updated"`, since `upload_skill_with_outcome` has no
|
|
193
|
-
distinct "created" outcome today.
|
|
194
|
-
|
|
195
|
-
### Known follow-ups (not fixed in S1)
|
|
196
|
-
|
|
197
|
-
Tracked here so they're on record; deliberately out of scope for the initial
|
|
198
|
-
`gsk skills` landing:
|
|
199
|
-
|
|
200
|
-
- **Large payloads are (de)serialized on the event loop.** `pull` / `sync` /
|
|
201
|
-
`save` bodies are `json.loads`'d in the CLI executor and `json.dumps`'d in
|
|
202
|
-
the router, and `save`'s request body is parsed on the event loop
|
|
203
|
-
downstream of the adaptor's own `to_thread` hop. This is a cross-cutting
|
|
204
|
-
`tool_cli`-infra concern (bounded today by the 25 MiB payload caps and the
|
|
205
|
-
employee-gated rollout) to be addressed in a shared executor PR, not
|
|
206
|
-
per-verb here.
|
|
207
|
-
- **`sync --check` prints only the first batch's diff.** A multi-batch diff
|
|
208
|
-
(`complete: false`) shows only the first batch's per-slug lines in `--check`
|
|
209
|
-
mode, though the exit code is still correct (3 if anything would change).
|
|
210
|
-
Full multi-batch `--check` reporting is a follow-up.
|
|
211
|
-
|
|
212
|
-
**Total skills:** 97
|
|
213
|
-
|
|
214
|
-
## Service Skills (97)
|
|
7
|
+
## Service Skills (49)
|
|
215
8
|
|
|
216
9
|
| Skill | Description |
|
|
217
10
|
|-------|-------------|
|
|
218
11
|
| [gsk-aidrive](../skills/gsk-aidrive/SKILL.md) | AI-Drive file storage and management. Actions: ls, find, mkdir, rm, move, get_readable_url, download_video, download_aud |
|
|
219
12
|
| [gsk-analyze-media](../skills/gsk-analyze-media/SKILL.md) | Analyze various types of media content including images, audio, and video. |
|
|
220
|
-
| [gsk-audio-generation](../skills/gsk-audio-generation/SKILL.md) | Generate audio
|
|
13
|
+
| [gsk-audio-generation](../skills/gsk-audio-generation/SKILL.md) | Generate audio (TTS, sound effects, music) with per-model params; query get_model_info for each model's params_schema. |
|
|
221
14
|
| [gsk-audio-processing](../skills/gsk-audio-processing/SKILL.md) | Preprocess audio: remove background noise, extract specific sounds, or enhance quality. |
|
|
222
15
|
| [gsk-audio-transcribe](../skills/gsk-audio-transcribe/SKILL.md) | Transcribe audio files to text with word-level timestamps. |
|
|
223
16
|
| [gsk-batch-crawl-url-and-answer](../skills/gsk-batch-crawl-url-and-answer/SKILL.md) | Crawl multiple URLs in parallel and answer specific questions from each. More efficient than calling crawler multiple ti |
|
|
224
|
-
| [gsk-
|
|
225
|
-
| [gsk-calendar-list](../skills/gsk-calendar-list/SKILL.md) | List upcoming calendar events. |
|
|
17
|
+
| [gsk-batch-understand-videos](../skills/gsk-batch-understand-videos/SKILL.md) | Process multiple YouTube videos in parallel: fetch each transcript and answer per-video questions. Input: list of {video |
|
|
226
18
|
| [gsk-claw-share-link](../skills/gsk-claw-share-link/SKILL.md) | Generate a time-limited share URL for a file on a Genspark Claw VM. Use when the user is not in the web UI and you need |
|
|
227
|
-
| [gsk-contacts-create](../skills/gsk-contacts-create/SKILL.md) | Create a new Google Contact. |
|
|
228
|
-
| [gsk-contacts-get](../skills/gsk-contacts-get/SKILL.md) | Get details of a specific Google Contact. |
|
|
229
|
-
| [gsk-contacts-search](../skills/gsk-contacts-search/SKILL.md) | Search Google Contacts. |
|
|
230
|
-
| [gsk-contacts-update](../skills/gsk-contacts-update/SKILL.md) | Update an existing Google Contact. |
|
|
231
19
|
| [gsk-crawler](../skills/gsk-crawler/SKILL.md) | Crawl and extract content from web pages. Supports HTML, PDF, and documents. |
|
|
232
20
|
| [gsk-create-task](../skills/gsk-create-task/SKILL.md) | Create and execute tasks using specialized AI agents. Supports super_agent, podcasts, docs, slides, deep_research, websi |
|
|
233
|
-
| [gsk-
|
|
234
|
-
| [gsk-docs-create](../skills/gsk-docs-create/SKILL.md) | Create a new Google Docs document. |
|
|
235
|
-
| [gsk-docs-read](../skills/gsk-docs-read/SKILL.md) | Read content from a Google Docs document. |
|
|
236
|
-
| [gsk-docs-search](../skills/gsk-docs-search/SKILL.md) | Search for Google Docs documents by name. |
|
|
237
|
-
| [gsk-email-draft](../skills/gsk-email-draft/SKILL.md) | Create an email draft without sending. |
|
|
238
|
-
| [gsk-email-forward](../skills/gsk-email-forward/SKILL.md) | Forward an existing email to new recipients. |
|
|
239
|
-
| [gsk-email-list](../skills/gsk-email-list/SKILL.md) | List emails from a folder (inbox, sent, drafts, etc.). |
|
|
240
|
-
| [gsk-email-read](../skills/gsk-email-read/SKILL.md) | Read a specific email by its ID. |
|
|
241
|
-
| [gsk-email-reply](../skills/gsk-email-reply/SKILL.md) | Reply to an existing email. |
|
|
242
|
-
| [gsk-email-search](../skills/gsk-email-search/SKILL.md) | Search emails using a query string. |
|
|
243
|
-
| [gsk-email-send](../skills/gsk-email-send/SKILL.md) | Compose and send an email via Gmail or Outlook. |
|
|
244
|
-
| [gsk-gdrive-read](../skills/gsk-gdrive-read/SKILL.md) | Read content from a Google Drive file. |
|
|
245
|
-
| [gsk-gdrive-search](../skills/gsk-gdrive-search/SKILL.md) | Search files in Google Drive. |
|
|
246
|
-
| [gsk-gdrive-upload](../skills/gsk-gdrive-upload/SKILL.md) | Upload a file to Google Drive. |
|
|
21
|
+
| [gsk-get-model-info](../skills/gsk-get-model-info/SKILL.md) | Detailed generation-model info: capabilities, params_schema, available speakers and prompting guides (audio/video/image/ |
|
|
247
22
|
| [gsk-get-service-url](../skills/gsk-get-service-url/SKILL.md) | Get the public HTTPS URL for a service running on the sandbox. Use this to access web servers, APIs, or applications fro |
|
|
248
23
|
| [gsk-github](../skills/gsk-github/SKILL.md) | GitHub operations. Actions: list_repos, search_issues, create_issue, update_issue. |
|
|
249
|
-
| [gsk-github-create-issue](../skills/gsk-github-create-issue/SKILL.md) | Create a new GitHub issue. |
|
|
250
|
-
| [gsk-github-list-repos](../skills/gsk-github-list-repos/SKILL.md) | List GitHub repositories. |
|
|
251
|
-
| [gsk-github-search-issues](../skills/gsk-github-search-issues/SKILL.md) | Search GitHub issues and PRs. |
|
|
252
|
-
| [gsk-github-update-issue](../skills/gsk-github-update-issue/SKILL.md) | Update an existing GitHub issue. |
|
|
253
24
|
| [gsk-gmail](../skills/gsk-gmail/SKILL.md) | Gmail operations. Actions: search, read, send, draft, reply, forward, delete, archive, move, mark_as_read, add_label, re |
|
|
254
|
-
| [gsk-google-calendar](../skills/gsk-google-calendar/SKILL.md) | Google Calendar operations. Actions: list, create, delete. |
|
|
25
|
+
| [gsk-google-calendar](../skills/gsk-google-calendar/SKILL.md) | Google Calendar operations. Actions: list, create, respond, modify, delete. |
|
|
255
26
|
| [gsk-google-contacts](../skills/gsk-google-contacts/SKILL.md) | Google Contacts operations. Actions: search, get, create, update. |
|
|
256
27
|
| [gsk-google-docs](../skills/gsk-google-docs/SKILL.md) | Google Docs document operations. Actions: create, read, append, search. |
|
|
257
|
-
| [gsk-google-drive](../skills/gsk-google-drive/SKILL.md) | Google Drive file operations. Actions: search, read, upload. |
|
|
28
|
+
| [gsk-google-drive](../skills/gsk-google-drive/SKILL.md) | Google Drive file operations. Actions: list, search, read, upload. |
|
|
258
29
|
| [gsk-google-sheets](../skills/gsk-google-sheets/SKILL.md) | Google Sheets spreadsheet operations. Actions: create, read, write, append, search, export. |
|
|
259
30
|
| [gsk-image-generation](../skills/gsk-image-generation/SKILL.md) | Generate images using AI models. Supports text-to-image and image editing. |
|
|
260
31
|
| [gsk-image-search](../skills/gsk-image-search/SKILL.md) | Search for images on the web. Returns image URLs, titles, and source information. |
|
|
32
|
+
| [gsk-inbox-contacts](../skills/gsk-inbox-contacts/SKILL.md) | Unified contact lookup across all connected email accounts (Gmail + Outlook). Searches synced address-book contacts AND |
|
|
33
|
+
| [gsk-maps-search](../skills/gsk-maps-search/SKILL.md) | Search maps for places, local businesses, distances between locations, and directions. Use ONLY for geographical/locatio |
|
|
261
34
|
| [gsk-meeting](../skills/gsk-meeting/SKILL.md) | Meeting notes operations. Actions: list, search, get. |
|
|
262
|
-
| [gsk-
|
|
263
|
-
| [gsk-meeting-list](../skills/gsk-meeting-list/SKILL.md) | List meeting notes ordered by creation date. |
|
|
264
|
-
| [gsk-meeting-search](../skills/gsk-meeting-search/SKILL.md) | Search meeting notes by keyword. |
|
|
265
|
-
| [gsk-microsoft-teams](../skills/gsk-microsoft-teams/SKILL.md) | Microsoft Teams operations. Actions: send, list_channels, list_chats, list_teams, search, search_users, create_chat. |
|
|
35
|
+
| [gsk-microsoft-teams](../skills/gsk-microsoft-teams/SKILL.md) | Microsoft Teams operations. Actions: send, list_channels, list_chats, read_chat, list_teams, search, search_users, creat |
|
|
266
36
|
| [gsk-notion](../skills/gsk-notion/SKILL.md) | Notion page operations. Actions: search, read, create. |
|
|
267
|
-
| [gsk-notion-create](../skills/gsk-notion-create/SKILL.md) | Create a new Notion page. |
|
|
268
|
-
| [gsk-notion-read](../skills/gsk-notion-read/SKILL.md) | Read content from a Notion page. |
|
|
269
|
-
| [gsk-notion-search](../skills/gsk-notion-search/SKILL.md) | Search Notion pages and databases. |
|
|
270
37
|
| [gsk-onedrive](../skills/gsk-onedrive/SKILL.md) | OneDrive file operations. Actions: list, search, read. |
|
|
271
|
-
| [gsk-
|
|
272
|
-
| [gsk-onedrive-read](../skills/gsk-onedrive-read/SKILL.md) | Read content from a OneDrive file. |
|
|
273
|
-
| [gsk-onedrive-search](../skills/gsk-onedrive-search/SKILL.md) | Search files in OneDrive. |
|
|
274
|
-
| [gsk-outlook-calendar](../skills/gsk-outlook-calendar/SKILL.md) | Outlook Calendar operations. Actions: list, create, delete. |
|
|
38
|
+
| [gsk-outlook-calendar](../skills/gsk-outlook-calendar/SKILL.md) | Outlook Calendar operations. Actions: list, create, respond, modify, delete. |
|
|
275
39
|
| [gsk-outlook-contacts](../skills/gsk-outlook-contacts/SKILL.md) | Outlook Contacts operations. Actions: search. |
|
|
276
|
-
| [gsk-outlook-contacts-search](../skills/gsk-outlook-contacts-search/SKILL.md) | Search Outlook contacts. |
|
|
277
40
|
| [gsk-outlook-email](../skills/gsk-outlook-email/SKILL.md) | Outlook Email operations. Actions: search, read, send, draft, reply, reply_draft, forward, delete, archive, move, mark_a |
|
|
278
41
|
| [gsk-phone-call](../skills/gsk-phone-call/SKILL.md) | Make an AI phone call on your behalf. Validates user prerequisites (membership, phone setup, credits) and resolves conta |
|
|
279
|
-
| [gsk-read-email-attachments](../skills/gsk-read-email-attachments/SKILL.md) | Read email attachments by downloading and caching their content. |
|
|
280
42
|
| [gsk-salesforce](../skills/gsk-salesforce/SKILL.md) | Salesforce DX CLI (`sf`) operations in a pre-authenticated sandbox. Actions: run (forwards any `sf` subcommand). |
|
|
43
|
+
| [gsk-scholar-search](../skills/gsk-scholar-search/SKILL.md) | Search scholarly articles and academic papers. Returns matching papers with titles, authors, venues, and citation counts |
|
|
281
44
|
| [gsk-sharepoint](../skills/gsk-sharepoint/SKILL.md) | SharePoint site and file operations. Actions: list, search, read_content, read_file, upload. |
|
|
282
|
-
| [gsk-sharepoint-list](../skills/gsk-sharepoint-list/SKILL.md) | List files in a SharePoint site. |
|
|
283
|
-
| [gsk-sharepoint-read-content](../skills/gsk-sharepoint-read-content/SKILL.md) | Read content from a SharePoint list item. |
|
|
284
|
-
| [gsk-sharepoint-read-file](../skills/gsk-sharepoint-read-file/SKILL.md) | Read content from a SharePoint file. |
|
|
285
|
-
| [gsk-sharepoint-search](../skills/gsk-sharepoint-search/SKILL.md) | Search across SharePoint sites. |
|
|
286
45
|
| [gsk-sharepoint-upload](../skills/gsk-sharepoint-upload/SKILL.md) | Upload a file to a SharePoint document library. |
|
|
287
|
-
| [gsk-sheets-append](../skills/gsk-sheets-append/SKILL.md) | Append rows to a Google Sheets spreadsheet. |
|
|
288
|
-
| [gsk-sheets-create](../skills/gsk-sheets-create/SKILL.md) | Create a new Google Sheets spreadsheet. |
|
|
289
|
-
| [gsk-sheets-export](../skills/gsk-sheets-export/SKILL.md) | Export a Google Sheets spreadsheet to CSV. |
|
|
290
|
-
| [gsk-sheets-read](../skills/gsk-sheets-read/SKILL.md) | Read data from a Google Sheets spreadsheet. |
|
|
291
|
-
| [gsk-sheets-search](../skills/gsk-sheets-search/SKILL.md) | Search for Google Sheets spreadsheets by name. |
|
|
292
|
-
| [gsk-sheets-write](../skills/gsk-sheets-write/SKILL.md) | Write data to a range in Google Sheets. |
|
|
293
46
|
| [gsk-slack](../skills/gsk-slack/SKILL.md) | Slack messaging operations. Actions: send, search, lookup. |
|
|
294
|
-
| [gsk-slack-lookup](../skills/gsk-slack-lookup/SKILL.md) | Look up Slack users, channels, or groups. |
|
|
295
|
-
| [gsk-slack-search](../skills/gsk-slack-search/SKILL.md) | Search Slack messages by keyword. |
|
|
296
|
-
| [gsk-slack-send](../skills/gsk-slack-send/SKILL.md) | Send a message to a Slack channel or user. |
|
|
297
47
|
| [gsk-social-instagram](../skills/gsk-social-instagram/SKILL.md) | Search and retrieve data from Instagram: posts, users, comments, and connections. |
|
|
298
48
|
| [gsk-social-reddit](../skills/gsk-social-reddit/SKILL.md) | Search and retrieve data from Reddit: posts, comments, users, and subreddits. |
|
|
299
49
|
| [gsk-social-twitter](../skills/gsk-social-twitter/SKILL.md) | Search and retrieve data from Twitter/X: posts, users, comments, retweets, and more. |
|
|
300
50
|
| [gsk-stock-price](../skills/gsk-stock-price/SKILL.md) | Retrieve real-time stock price information for a specific company. |
|
|
301
51
|
| [gsk-summarize-large-document](../skills/gsk-summarize-large-document/SKILL.md) | Analyze and answer questions about large documents (PDFs, web pages, Word docs, etc.). |
|
|
52
|
+
| [gsk-task-continue](../skills/gsk-task-continue/SKILL.md) | Continue an existing task project you previously created with create_task by sending a follow-up instruction — use this |
|
|
302
53
|
| [gsk-task-status](../skills/gsk-task-status/SKILL.md) | Look up an existing task project previously created with create_task: returns its status, page URL (task_url), and extra |
|
|
303
|
-
| [gsk-teams-create-chat](../skills/gsk-teams-create-chat/SKILL.md) | Create a new Microsoft Teams chat. |
|
|
304
|
-
| [gsk-teams-list-channels](../skills/gsk-teams-list-channels/SKILL.md) | List channels in a Microsoft Teams team. |
|
|
305
|
-
| [gsk-teams-list-chats](../skills/gsk-teams-list-chats/SKILL.md) | List recent Microsoft Teams chats. |
|
|
306
|
-
| [gsk-teams-list-teams](../skills/gsk-teams-list-teams/SKILL.md) | List Microsoft Teams the user belongs to. |
|
|
307
|
-
| [gsk-teams-search](../skills/gsk-teams-search/SKILL.md) | Search Microsoft Teams messages. |
|
|
308
|
-
| [gsk-teams-search-users](../skills/gsk-teams-search-users/SKILL.md) | Search for users in Microsoft Teams. |
|
|
309
|
-
| [gsk-teams-send](../skills/gsk-teams-send/SKILL.md) | Send a message in Microsoft Teams. |
|
|
310
54
|
| [gsk-understand-images](../skills/gsk-understand-images/SKILL.md) | Analyze and understand images. Supports multiple images and custom analysis instructions. |
|
|
311
55
|
| [gsk-video-generation](../skills/gsk-video-generation/SKILL.md) | Generate videos using AI models. Supports text-to-video and image-to-video generation. |
|
|
312
56
|
| [gsk-vm-email-send](../skills/gsk-vm-email-send/SKILL.md) | Send an email from your OpenClaw VM's email address. Recipient must be in the VM's email allowlist or be your own login |
|
package/package.json
CHANGED
|
@@ -28,9 +28,10 @@ gsk media-analyze [options]
|
|
|
28
28
|
|
|
29
29
|
| Flag | Required | Description |
|
|
30
30
|
|------|----------|-------------|
|
|
31
|
-
| `-i`, `--media_urls` | Yes |
|
|
31
|
+
| `-i`, `--media_urls` | Yes | Media URLs / AI Drive paths / repo paths to analyze. (array) |
|
|
32
|
+
| `--repo_id` | No | Project repo id from your first-turn context. Required only for repo-relative paths in `media_urls`. (string) |
|
|
32
33
|
| `--video_metadata` | No | Video-specific metadata for analysis (optional)Unless the user requires, it is not required to provide (object) |
|
|
33
|
-
| `-r`, `--requirements` | No | Must in English, Detailed analysis requirements and goals. Please clearly describe: - What is the purpose of the analysis? - What information needs to be extracted from the media? - What information is most important to you? - How will these analysis results be used? - What are the clips that can be extracted from the video? What are their corresponding time ranges (in milliseconds) and descriptions? - ... (You can add more requirements here) - Specific requirements for different media types (images, audio, video) For example: 'I need to analyze these materials for emotional tone, main content, use cases for a marketing campaign, other requirements...' Note: This parameter is ignored when analyze_type='video_style_replication'. (string) |
|
|
34
|
+
| `-r`, `--requirements` | No | Must in English, Detailed analysis requirements and goals. Please clearly describe: - What is the purpose of the analysis? - What information needs to be extracted from the media? - What information is most important to you? - How will these analysis results be used? - What are the clips that can be extracted from the video? What are their corresponding time ranges (in milliseconds) and descriptions? - ... (You can add more requirements here) - Specific requirements for different media types (images, audio, video) For example: 'I need to analyze these materials for emotional tone, main content, use cases for a marketing campaign, other requirements...' Always ask first what the media semantically depicts (scene, objects, on-screen content) before stylistic, texture, or usage aspects. Note: This parameter is ignored when analyze_type='video_style_replication'. (string) |
|
|
34
35
|
| `--analyze_type` | No | Type of analysis to perform. Options: - '' (empty/default): Standard content analysis based on requirements - 'video_style_replication': Analyze video's cinematography style, expression techniques, and production methods to enable replicating its visual language in new content. When this type is used, a specialized prompt guides the analysis to extract filmmaking craft, aesthetic decisions, and technical approaches that define the video's unique character. The output is suitable for guiding AI video generation systems to replicate similar styles. (string, one of: , video_style_replication) |
|
|
35
36
|
|
|
36
37
|
## Local File Support
|
|
@@ -28,7 +28,8 @@ gsk transcribe [options]
|
|
|
28
28
|
|
|
29
29
|
| Flag | Required | Description |
|
|
30
30
|
|------|----------|-------------|
|
|
31
|
-
| `-i`, `--audio_urls` | Yes |
|
|
31
|
+
| `-i`, `--audio_urls` | Yes | Audio URLs / AI Drive paths / repo paths to transcribe. (array) |
|
|
32
|
+
| `--repo_id` | No | Project repo id from your first-turn context. Required only for repo-relative paths in `audio_urls`. (string) |
|
|
32
33
|
| `--prompt` | No | Optional custom prompt to improve transcription quality. Can include context, proper nouns, or technical terms that should be recognized correctly. For example: 'This is a discussion about artificial intelligence and machine learning.'If you already know the corresponding transcript text, provide this text as the prompt to make it easier for the model to understand. (string) |
|
|
33
34
|
| `-m`, `--model` | No | Transcription model to use. Options: 'whisper-1' (default, supports timestamps), 'gemini-3-flash-preview' (no timestamp support), 'elevenlabs_scribe_v2' (supports word timestamps & entity detection). Note: gemini-3-flash-preview does not support word-level or segment-level timestamps. (string, one of: whisper-1, gemini-3-flash-preview, elevenlabs_scribe_v2, default: `whisper-1`) |
|
|
34
35
|
| `--entity_detection` | No | Entity types to detect (elevenlabs_scribe_v2 only). Options: 'pii' for personally identifiable information, 'name', 'dob', 'credit_card', 'ssn' for specific entities, 'all' for all entity types. Example: ['pii'] or ['name', 'credit_card'] (array) |
|
|
@@ -32,10 +32,10 @@ gsk task [options]
|
|
|
32
32
|
|
|
33
33
|
| Flag | Required | Description |
|
|
34
34
|
|------|----------|-------------|
|
|
35
|
-
| `<task_type>` (positional) | Yes | The type of task to create: - super_agent: Create general super agent - podcasts: Create audio podcasts with AI characters - docs: Create and edit HTML/Markdown documents. Create a professional document with Word-like formatting as a single-file HTML. Perfect for reports, articles, academic papers, and formal documents. **Guidelines** 1. This tool can be directly called when user explicitly wants to create: - A document or report - An article or academic paper - A formal document with professional formatting - A document for print or PDF export 2. In situations other than those mentioned above, you need to ask the user first and only call this tool after getting permission when user wants to create: - A better formatted text, but hasn't explicitly mentioned creating a document - Content that needs professional document formatting **Limitations** - Document styling resembles Microsoft Word format, not web page design - Usually takes time to generate, so please strictly follow the guidelines above - slides: Create presentation slides.
|
|
35
|
+
| `<task_type>` (positional) | Yes | The type of task to create: - super_agent: Create general super agent - podcasts: Create audio podcasts with AI characters - docs: Create and edit HTML/Markdown documents. Create a professional document with Word-like formatting as a single-file HTML. Perfect for reports, articles, academic papers, and formal documents. **Guidelines** 1. This tool can be directly called when user explicitly wants to create: - A document or report - An article or academic paper - A formal document with professional formatting - A document for print or PDF export 2. In situations other than those mentioned above, you need to ask the user first and only call this tool after getting permission when user wants to create: - A better formatted text, but hasn't explicitly mentioned creating a document - Content that needs professional document formatting **Limitations** - Document styling resembles Microsoft Word format, not web page design - Usually takes time to generate, so please strictly follow the guidelines above **File inputs** - If the user uploaded a source file (PDF/Word/Markdown/text) for the agent to process or convert, embed the URL (file_wrapper_url, http(s)://, or aidrive://) directly in the query — sub-agents do not inherit parent context. - slides: Create presentation slides. Create an editable slide deck and display it; it exports/downloads as PPTX or PDF. DEFAULT for any presentation, deck, or PowerPoint request — including a downloadable .pptx or redesigning an uploaded .pptx; do NOT rebuild decks in code or raw HTML. The finished deck's page (task_url) has built-in PPTX/PDF export — NEVER create another task to export or convert an existing deck; use task_status to re-fetch a deck's link. Limitation: a) It usually takes minutes. Ask the user whether they want to wait for a longer time before starting if they haven't explicitly indicated they want to generate a set of slides; - website: Create a professional agent for building websites and web pages - deep_research: Create deep research agent for task on a 'deep research' topic (e.g. 'deep research on Tesla', 'analyze Tesla in depth'). Also can handle user's 'continue deep research' request - download: Download a file, video, or audio from the internet into the user's AI Drive and return a long-lived shareable link. Use when the user wants to 'download this', 'save this video/file', or 'get me a link to this'. The agent locates the real downloadable resource (searching/crawling a page if needed), downloads it, and returns the AI Drive path plus a durable share URL. - design: Genspark Design (Designer 2.0): the visual web/HTML design canvas for landing pages, marketing sites, posters, slides-as-pages, and interactive UI mockups. NOTE: this does NOT run as a sub-agent — selecting it hands the user a button that opens Genspark Design in a new tab with the query prefilled (the user submits it there). Use when the user wants to design a web page / site / poster / visual layout they will iterate on in the Design canvas. - video_generation: Large-scale batch video generation with complex inter-task dependencies. Best for workflows requiring coordinated, multi-step video pipelines where tasks depend on each other's outputs. Supports text-to-video, image-to-video (query should contain the image url), and merging multiple video clips. Can reuse agent. NOT recommended for small-scale, simple, or independent video tasks — for those, use <tool>video_generation</tool> directly instead. If there is a resource generation list, you can directly pass the resource list URL in the query, http(s):// or aidrive:// - audio_generation: Large-scale batch TTS (text-to-speech) generation with complex inter-task dependencies. Best for workflows requiring coordinated, multi-step TTS pipelines where tasks depend on each other's outputs. Supports text-to-speech, voiceovers, multi-speaker dialogues, and merging multiple audio clips. Can reuse agent. NOT recommended for small-scale, simple, or independent TTS tasks — for those, use <tool>audio_generation</tool> directly instead. If there is a resource generation list, you can directly pass the resource list URL in the query, http(s):// or aidrive:// - cross_check: Fact-check and verify claims or statements. Use when the user wants to verify whether a statement is true, check facts, or cross-reference claims against multiple sources. The agent systematically searches for evidence, evaluates source credibility, and provides a detailed verification report with supporting references. (string, one of: super_agent, podcasts, docs, slides, website, deep_research, download, design, video_generation, audio_generation, cross_check, meeting_notes, sheets) |
|
|
36
36
|
| `--task_name` | Yes | Name for the task/project (string) |
|
|
37
|
-
| `--query` | Yes | Query for the task. The ending should clearly state what needs to be done, such as generating a doc/slides etc. (string) |
|
|
38
|
-
| `--instructions` | Yes | Detailed instructions for the task. This will be set as system prompt to the specialized agent. (string) |
|
|
37
|
+
| `--query` | Yes | Query for the task. The ending should clearly state what needs to be done, such as generating a doc/slides etc. The sub-agent sees ONLY what is passed via query/instructions — it cannot read your conversation. When you have already produced material for this task (research notes, analysis, drafts, exact figures), embed its FULL text verbatim in the query, NOT a summary or paraphrase: any detail omitted here is missing from the deliverable, and a query carrying such material is naturally long — do not shorten it. For a simple request with no pre-existing material, a concise query is fine. If the user uploaded files or you have data the sub-agent needs, embed the file URLs (file_wrapper_url, http(s)://, or aidrive://) directly in the query — sub-agents do not inherit parent context, so unreferenced files are invisible to them. (string) |
|
|
38
|
+
| `--instructions` | Yes | Detailed instructions for the task. This will be set as system prompt to the specialized agent. State the working constraints here: audience, structure, style, output format, and what must be preserved exactly (figures, citations, links). Do not spend this field on a bare persona line like 'You are a professional slides assistant' — that gives the sub-agent nothing to work with. Include any file URLs (file_wrapper_url, http(s)://, or aidrive://) the sub-agent must reference; the sub-agent only sees what is passed via query/instructions. (string) |
|
|
39
39
|
|
|
40
40
|
> **CAUTION:** This command performs a write/send operation. Double-check parameters before executing.
|
|
41
41
|
|
|
@@ -36,7 +36,9 @@ gsk gmail [options]
|
|
|
36
36
|
| `--auto_paginate` | No | [search] If true, automatically fetches multiple pages until reaching max_total_results (default: 500). Returns ALL emails matching the query. (boolean) |
|
|
37
37
|
| `--max_total_results` | No | [search] Maximum total results to fetch when auto_paginate is true. Default: 500, Maximum: 500. (integer) |
|
|
38
38
|
| `--from_account` | No | [search] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [read] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [send] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [draft] Sender email account to use. \| [reply] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [forward] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [delete] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [archive] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [move] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [mark_as_read] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [add_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [remove_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [create_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [get_attachment] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [list_send_as] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. (string) |
|
|
39
|
-
| `--id` | No | [read] The ID of
|
|
39
|
+
| `--id` | No | [read] The ID of a single Gmail message to retrieve. Mutually exclusive with 'thread_id'. (string) |
|
|
40
|
+
| `--thread_id` | No | [read] The Gmail thread (conversation) ID to retrieve. Returns every message in the thread. Mutually exclusive with 'id'. Each Gmail message exposes its parent thread via the 'threadId' field — the same value returned by 'gmail_search'. (string) |
|
|
41
|
+
| `--max_messages` | No | [read] Optional cap on how many messages to return when reading by 'thread_id'. Returns the most-recent N messages (chronological order preserved within the slice). Use this for long threads to keep the LLM context bounded — e.g. max_messages=5 for the tail of a long newsletter chain. Ignored when reading by single 'id'. (integer) |
|
|
40
42
|
| `--title` | No | [read] The title of the email to retrieve and read (string) |
|
|
41
43
|
| `--question` | No | [read] Question to answer guiding how to process the email content (string) |
|
|
42
44
|
| `--download_attachments` | No | [read] Whether need to download attachments from the email to analysis (boolean) |
|
|
@@ -47,13 +49,15 @@ gsk gmail [options]
|
|
|
47
49
|
| `--cc` | No | [send] Optional: CC email address(es). For multiple recipients, separate with commas. \| [draft] CC recipient(s), comma-separated. \| [forward] Optional: CC email address(es). For multiple recipients, separate with commas. (string) |
|
|
48
50
|
| `--bcc` | No | [send] Optional: BCC email address(es). For multiple recipients, separate with commas. \| [draft] BCC recipient(s), comma-separated. (string) |
|
|
49
51
|
| `--content_type` | No | [send] Content type of the email body. Default: text/html (recommended) **CRITICAL**: This parameter defines the format of the 'body' field: - 'text/plain': body should be plain text only - 'text/html': body MUST be valid HTML (e.g., '<h1>Title</h1><p>Content</p>') **Common mistake**: Setting content_type='text/html' but providing Markdown text (# Title, **bold**). This will display raw Markdown symbols in the email. Always convert Markdown to HTML before passing to this tool. \| [reply] Content type of the reply body. Default: text/html (recommended) **CRITICAL**: This parameter defines the format of the 'body' field: - 'text/plain': body should be plain text only - 'text/html': body MUST be valid HTML (e.g., '<h1>Title</h1><p>Content</p>') **Common mistake**: Setting content_type='text/html' but providing Markdown text. This will display raw Markdown symbols. Always convert Markdown to HTML first. \| [forward] Content type of the body. Default: text/html (recommended) **CRITICAL**: This parameter defines the format of the 'body' field: - 'text/plain': body should be plain text only - 'text/html': body MUST be valid HTML (e.g., '<h1>Title</h1><p>Content</p>') **Common mistake**: Setting content_type='text/html' but providing Markdown text. This will display raw Markdown symbols. Always convert Markdown to HTML first. (string, one of: text/plain, text/html) |
|
|
50
|
-
| `--from_address` | No | [send] Send-as email address to use as the sender. Use this to send as a group/alias address (e.g., 'feedback@company.com'). Must be configured in Gmail's 'Send mail as' settings. \| [reply] Send-as email address to use as the sender. Use this to reply as a group/alias address (e.g., 'feedback@company.com'). Must be configured in Gmail's 'Send mail as' settings. \| [forward] Send-as email address to use as the sender. Use this to forward as a group/alias address. Must be configured in Gmail's 'Send mail as' settings. (string) |
|
|
52
|
+
| `--from_address` | No | [send] Send-as email address to use as the sender. Use this to send as a group/alias address (e.g., 'feedback@company.com'). Must be configured in Gmail's 'Send mail as' settings. \| [draft] Optional 'From:' identity to send AS — Gmail verified alias, Outlook proxyAddress / mail-enabled group, or a granted SendAs / on-behalf address. Must be an address the from-account is authorized to send as (see 'send_as' on /api/ai-inbox/mailbox/accounts). For Gmail this becomes the draft's MIME 'From:' header; for Outlook the saved draft stays as the from-account and the alias is applied by the eventual send call. \| [reply] Send-as email address to use as the sender. Use this to reply as a group/alias address (e.g., 'feedback@company.com'). Must be configured in Gmail's 'Send mail as' settings. \| [forward] Send-as email address to use as the sender. Use this to forward as a group/alias address. Must be configured in Gmail's 'Send mail as' settings. (string) |
|
|
51
53
|
| `--skip_confirmation` | No | [send] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [reply] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [forward] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [delete] If true, skip user confirmation and delete immediately. Default is false (require confirmation before deleting). \| [move] If true, skip user confirmation and move immediately. Default is false (require confirmation before moving). (boolean, default: `False`) |
|
|
52
54
|
| `--auto_skip_confirmation` | No | [send] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [reply] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [forward] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [delete] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [move] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. (boolean, default: `False`) |
|
|
55
|
+
| `--client_send_id` | No | [send] Optional stable idempotency key. When provided, stored in X-Genspark-Client-Send-Id and mirrored into a provider-safe Message-ID digest. Scheduled agent retries use it for internal deduplication. Usually auto-resolved from the active scheduled-action context — the LLM only needs to pass this when it wants to derive its own key (e.g. plan fan-out). (string) |
|
|
53
56
|
| `--attachments` | No | [send] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [draft] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [reply] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [forward] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). (array) |
|
|
54
57
|
| `--body_type` | No | [draft] Body format: 'html' (default) or 'text'. (string) |
|
|
55
58
|
| `--message_id` | No | [reply] The Gmail message ID to reply to \| [forward] The Gmail message ID to forward \| [delete] The Gmail message ID to delete \| [archive] The Gmail message ID to archive \| [move] The Gmail message ID to move \| [mark_as_read] (Deprecated, use message_ids) A single Gmail message ID to mark \| [add_label] The Gmail message ID to add label to \| [remove_label] The Gmail message ID to remove label from \| [get_attachment] The Gmail message ID containing the attachment (string) |
|
|
56
59
|
| `--reply_all` | No | [reply] Whether to reply to all recipients (TO and CC). Default: true (reply to all recipients including CC) (boolean) |
|
|
60
|
+
| `--include_original` | No | [reply] Whether to append the original message as a Gmail-style quoted block under the reply body so the recipient sees the thread context standard mail clients attach automatically. Default: true. Set to false only when the caller already embedded their own quoted block in `body` (the helper detects the canonical `gmail_quote_container` markup and short-circuits anyway, but this flag lets the caller opt out unconditionally — useful for terse one-line replies where the quote is noise). \| [forward] Whether to append the original message as a Gmail-style '---------- Forwarded message ----------' quoted block under the forwarder's note so the recipient sees the original verbatim — same shape as native Gmail forwards. Default: true. Set to false only when the caller already embedded their own forwarded block in `body` (e.g. the `.genmail` editor send path). (boolean, default: `True`) |
|
|
57
61
|
| `--include_attachments` | No | [forward] Whether to include original email attachments in the forward. Default: true (boolean, default: `True`) |
|
|
58
62
|
| `--label_name` | No | [move] The target label name. Use '/' for nested labels (e.g., 'Work/Projects'). The label will be created if it doesn't exist. \| [add_label] The label name to add. Can be a new label or an existing one. \| [remove_label] The label name to remove \| [create_label] The name of the label to create. Use '/' for nested labels (e.g., 'Parent/Child'). (string) |
|
|
59
63
|
| `--remove_from_inbox` | No | [move] Whether to remove the email from INBOX. Default: true (standard 'move' behavior). Set to false to just add the label without removing from inbox. (boolean) |
|
|
@@ -46,6 +46,8 @@ gsk google_calendar [options]
|
|
|
46
46
|
| `--send_notifications` | No | [create] Whether to send email notifications to attendees \| [respond] Whether Google should notify the organizer of the response. Default true. \| [modify] Whether attendees get a notification of the change. Default true. (boolean) |
|
|
47
47
|
| `--skip_confirmation` | No | [create] If true, create the event directly in Google Calendar instead of returning a local draft. Required when the caller has no UI to review/confirm a draft (e.g. sandbox agents shelling out via gsk). (boolean, default: `False`) |
|
|
48
48
|
| `--auto_skip_confirmation` | No | [create] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. (boolean, default: `False`) |
|
|
49
|
+
| `--is_all_day` | No | [create] Whether to create an all-day busy/block event. (boolean, default: `False`) |
|
|
50
|
+
| `--all_day` | No | [create] Alias for is_all_day. (boolean, default: `False`) |
|
|
49
51
|
| `--response` | No | [respond] RSVP value. 'accept' / 'decline' / 'tentative' (Yes / No / Maybe). (string, one of: accept, decline, tentative) |
|
|
50
52
|
| `--comment` | No | [respond] Optional free-text comment shown to the organizer alongside the response. (string) |
|
|
51
53
|
| `--scope` | No | [respond] Recurring-series scope. 'single' (default) responds for the specific instance only; 'series' responds for the entire series (patches the master event). \| [modify] Recurring-series scope. 'single' (default) patches the specific instance; 'series' patches the master event so the change applies to every occurrence. (string, one of: single, series, default: `single`) |
|
|
@@ -29,20 +29,26 @@ gsk gdrive [options]
|
|
|
29
29
|
| Flag | Required | Description |
|
|
30
30
|
|------|----------|-------------|
|
|
31
31
|
| `<action>` (positional) | Yes | Action to perform. 'list': List files directly inside a Google Drive folder; 'search': Search files by name, type, or owner; 'read': Read and extract content from a file; 'upload': Upload a file to Google Drive (string, one of: list, search, read, upload) |
|
|
32
|
-
| `--query` | No | [search] Use keywords simply, terms will be combined into advanced search query later. Use `*` to list all authorized files, especially when `folder_id` or `folder_url` is supplied. (string) |
|
|
33
|
-
| `--mime_type` | No | [list] Optional MIME type filter. \| [search] Filter by MIME type for 'search' (e.g., 'application/pdf'). \| [upload] The MIME type of the file (optional, will be auto-detected from file_name extension). Examples: 'text/plain', 'text/csv', 'application/json', 'image/png'. (string) |
|
|
34
|
-
| `--owner` | No | [search] Filter by file owner (email address) for 'search' action (string) |
|
|
35
32
|
| `--folder_id` | No | [list] Google Drive folder ID or folder URL. \| [search] Search within a specific folder for 'search' action. Accepts a folder ID or Google Drive folder URL. \| [upload] Google Drive folder ID to upload to. Optional, uploads to root if not specified. (string) |
|
|
36
33
|
| `--folder_url` | No | [list] Google Drive folder URL. \| [search] Google Drive folder URL to list/search within. (string) |
|
|
34
|
+
| `--mime_type` | No | [list] Optional MIME type filter. \| [search] Filter by MIME type for 'search' (e.g., 'application/pdf'). \| [upload] The MIME type of the file (optional, will be auto-detected from file_name extension). Examples: 'text/plain', 'text/csv', 'application/json', 'image/png'. (string) |
|
|
37
35
|
| `--trashed` | No | [list] Include trashed files. \| [search] Include trashed files in search results for 'search' action (boolean) |
|
|
36
|
+
| `--query` | No | [search] Use keywords simply, terms will be combined into advanced search query in the later process.For example, if user ask for 'tax related documents', just use 'tax' as the query,DO NOT use advanced search query like 'name contains 'tax'' or 'fullText contains 'tax''. Use '*' to list all authorized files, especially when folder_id is supplied. (string) |
|
|
37
|
+
| `--owner` | No | [search] Filter by file owner (email address) for 'search' action (string) |
|
|
38
38
|
| `--file_id` | No | [read] The ID of the file to read from Google Drive. (string) |
|
|
39
39
|
| `--question` | No | [read] The question to answer about the file content. (string) |
|
|
40
|
-
| `--
|
|
41
|
-
| `--
|
|
40
|
+
| `--raw_content` | No | [read] Return the complete converted document text (markdown) without question-answering. For programmatic consumers that need full fidelity; ignores 'question'. (boolean) |
|
|
41
|
+
| `--content` | No | [upload] Text content to create as a file. Use this for creating text-based files (e.g., .txt, .md, .csv, .json, .html). Provide exactly one of 'content', 'file_path', or 'file_url'. (string) |
|
|
42
|
+
| `--file_path` | No | [upload] Local server file path to upload (only resolvable when the caller IS the backend filesystem). For remote clients, pass 'file_url' instead. Provide exactly one of 'content', 'file_path', or 'file_url'. (string) |
|
|
43
|
+
| `--file_url` | No | [upload] URL whose bytes the server downloads and uploads. Accepts a Genspark file-wrapper URL (e.g. 'https://www.genspark.ai/api/files/s/<code>' or '.../api/files/v1/<encrypt>') or any public http(s) URL. Use this for binary files (.docx, .xlsx, .pptx, .pdf, images) or large text files that can't be passed inline via 'content'. Provide exactly one of 'content', 'file_path', or 'file_url'. (string) |
|
|
42
44
|
| `--file_name` | No | [upload] File name in Google Drive (include extension, e.g., 'report.txt'). MIME type will be auto-detected from extension if not specified. (string) |
|
|
43
45
|
| `--convert_to_google_format` | No | [upload] Whether to convert to Google Workspace format (e.g., .docx → Google Docs, .xlsx → Google Sheets, .pptx → Google Slides). Default: false (boolean, default: `False`) |
|
|
44
46
|
| `--share_publicly` | No | [upload] Whether to share the file publicly for viewing. Default: false (boolean, default: `False`) |
|
|
45
47
|
|
|
48
|
+
## Local File Support
|
|
49
|
+
|
|
50
|
+
Parameters that accept URLs (`--folder_url`, `--file_url`) also accept local file paths. The CLI automatically uploads local files before sending to the API.
|
|
51
|
+
|
|
46
52
|
## See Also
|
|
47
53
|
|
|
48
54
|
- [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
|
|
@@ -32,14 +32,22 @@ gsk sheets [options]
|
|
|
32
32
|
| `<action>` (positional) | Yes | Action to perform. 'create': Create a new spreadsheet; 'read': Read data from a spreadsheet; 'write': Write data to a specific range; 'append': Append rows to a spreadsheet; 'search': Search spreadsheets by name; 'export': Export a spreadsheet to CSV or other format (string, one of: create, read, write, append, search, export) |
|
|
33
33
|
| `--title` | No | [create] Title of the new spreadsheet. (string) |
|
|
34
34
|
| `--sheet_names` | No | [create] Names of sheets to create. Default: ['Sheet1'] (array) |
|
|
35
|
-
| `--initial_data` | No | [create] Optional initial data for the first sheet
|
|
35
|
+
| `--initial_data` | No | [create] Optional inline initial data for the first sheet, as a 2D array where each inner array is a row. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file (CSV/TSV/XLSX/JSON), since 'initial_data' must round-trip through the LLM context. (array) |
|
|
36
|
+
| `--from_sandbox_path` | No | [create] Absolute path inside the workflow sandbox (e.g. '/home/user/result.csv'). When set, the file is read from the sandbox and parsed into a 2D array instead of using 'initial_data'. Supported formats: csv, tsv, xlsx, json. Legacy binary .xls (BIFF) is NOT supported — re-save as .xlsx first. Mutually exclusive with from_aidrive_path / from_url / initial_data. \| [write] Absolute path inside the workflow sandbox (e.g. '/home/user/result.csv'). When set, the file is read from the sandbox and parsed into a 2D array instead of using 'values'. Supported formats: csv, tsv, xlsx, json. Legacy binary .xls (BIFF) is NOT supported — re-save as .xlsx first. Mutually exclusive with from_aidrive_path / from_url / values. \| [append] Absolute path inside the workflow sandbox (e.g. '/home/user/result.csv'). When set, the file is read from the sandbox and parsed into a 2D array instead of using 'values'. Supported formats: csv, tsv, xlsx, json. Legacy binary .xls (BIFF) is NOT supported — re-save as .xlsx first. Mutually exclusive with from_aidrive_path / from_url / values. (string) |
|
|
37
|
+
| `--from_aidrive_path` | No | [create] Absolute path inside the user's AI-Drive (e.g. '/reports/sales.xlsx'). Read directly via the AI-Drive backend; the file is NOT loaded into the LLM context. Mutually exclusive with from_sandbox_path / from_url / initial_data. \| [write] Absolute path inside the user's AI-Drive (e.g. '/reports/sales.xlsx'). Read directly via the AI-Drive backend; the file is NOT loaded into the LLM context. Mutually exclusive with from_sandbox_path / from_url / values. \| [append] Absolute path inside the user's AI-Drive (e.g. '/reports/sales.xlsx'). Read directly via the AI-Drive backend; the file is NOT loaded into the LLM context. Mutually exclusive with from_sandbox_path / from_url / values. (string) |
|
|
38
|
+
| `--from_url` | No | [create] HTTPS URL of a CSV/TSV/XLSX/JSON file. Accepts AI-Drive readable URLs, file-wrapper URLs, or any HTTPS link. Plain http:// is rejected; redirects are not followed. Mutually exclusive with from_sandbox_path / from_aidrive_path / initial_data. \| [write] HTTPS URL of a CSV/TSV/XLSX/JSON file. Accepts AI-Drive readable URLs, file-wrapper URLs, or any HTTPS link. Plain http:// is rejected; redirects are not followed. Mutually exclusive with from_sandbox_path / from_aidrive_path / values. \| [append] HTTPS URL of a CSV/TSV/XLSX/JSON file. Accepts AI-Drive readable URLs, file-wrapper URLs, or any HTTPS link. Plain http:// is rejected; redirects are not followed. Mutually exclusive with from_sandbox_path / from_aidrive_path / values. (string) |
|
|
39
|
+
| `--sheet_name` | No | [create] For xlsx sources only: which sheet to read. Defaults to the first sheet if omitted. Ignored for csv/tsv/json sources. \| [write] For xlsx sources only: which sheet to read. Defaults to the first sheet if omitted. Ignored for csv/tsv/json sources. \| [append] For xlsx sources only: which sheet to read. Defaults to the first sheet if omitted. Ignored for csv/tsv/json sources. (string) |
|
|
36
40
|
| `--spreadsheet_id` | No | [read] The ID of the spreadsheet to read from. \| [write] The ID of the spreadsheet to write to. \| [append] The ID of the spreadsheet to append to. \| [export] The ID of the Google Sheets spreadsheet to export. (string) |
|
|
37
41
|
| `--range` | No | [read] The A1 notation range to read (e.g., 'Sheet1!A1:D10', 'A1:B5'). Default: reads first sheet entirely. \| [write] The A1 notation range to write to (e.g., 'Sheet1!A1:D10'). The range should match the size of the data. \| [append] The A1 notation of a range to search for data table. New rows will be appended after the last row in this table. Example: 'Sheet1!A:D' or 'Sheet1' (string) |
|
|
38
|
-
| `--values` | No | [write] 2D array of values to write. Each inner array is a row. Example: [['Name', 'Age'], ['Alice', '30'], ['Bob', '25']] \| [append] 2D array of values to append. Each inner array is a row. Example: [['Alice', '30'], ['Bob', '25']] (array) |
|
|
42
|
+
| `--values` | No | [write] Inline 2D array of values to write. Each inner array is a row. Example: [['Name', 'Age'], ['Alice', '30'], ['Bob', '25']]. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file, to avoid sending it through the LLM context. \| [append] Inline 2D array of values to append. Each inner array is a row. Example: [['Alice', '30'], ['Bob', '25']]. Mutually exclusive with from_sandbox_path / from_aidrive_path / from_url. Prefer the from_* options when the data already exists as a file. (array) |
|
|
39
43
|
| `--query` | No | [search] Search query to find spreadsheets by name or content. (string) |
|
|
40
44
|
| `--limit` | No | [search] Maximum number of results to return (1-50). Default: 10 (integer) |
|
|
41
45
|
| `--filename` | No | [export] Optional custom filename for the exported file (without extension). If not provided, the original spreadsheet name will be used. (string) |
|
|
42
46
|
|
|
47
|
+
## Local File Support
|
|
48
|
+
|
|
49
|
+
Parameters that accept URLs (`--from_url`) also accept local file paths. The CLI automatically uploads local files before sending to the API.
|
|
50
|
+
|
|
43
51
|
## See Also
|
|
44
52
|
|
|
45
53
|
- [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
|
|
@@ -28,10 +28,12 @@ gsk img [options]
|
|
|
28
28
|
|
|
29
29
|
| Flag | Required | Description |
|
|
30
30
|
|------|----------|-------------|
|
|
31
|
-
| `-m`, `--model` | No | Default model: use nano-banana-2 gpt-image-2: GPT Image 2 - Latest OpenAI image model. Superior text rendering, editing, and face preservation. Supports text-to-image and image editing with multi-image input. nano-banana-pro: [GEMINI NANO BANANA PRO] State of the Art (SOTA) for both generation and image editing. Multi-image fusion: Combine different images into one seamless new visual. Character & style consistency: Maintain the same subject or visual style across multiple generations. Conversational editing: Edit images with simple, natural language instructions. Perfect for creative use cases, marketing, training, advertising. Supports up to 14 images as reference input. Supports high resolution output up to 2K/4K. nano-banana-2: [GEMINI NANO BANANA 2] Gemini 3.1 Flash Image. Fast and efficient with advanced reasoning. Multi-image fusion with up to 14 reference images. Supports 0.5K/1K/2K/4K resolution. Google Search grounding for real-time data. Best for high-volume, speed-optimized workflows.
|
|
32
|
-
| `<query>` (positional) |
|
|
31
|
+
| `-m`, `--model` | No | Default model: use nano-banana-2-flash-lite gpt-image-2: GPT Image 2 - Latest OpenAI image model. Superior text rendering, editing, and face preservation. Supports text-to-image and image editing with multi-image input. nano-banana-pro: [GEMINI NANO BANANA PRO] State of the Art (SOTA) for both generation and image editing. Multi-image fusion: Combine different images into one seamless new visual. Character & style consistency: Maintain the same subject or visual style across multiple generations. Conversational editing: Edit images with simple, natural language instructions. Perfect for creative use cases, marketing, training, advertising. Supports up to 14 images as reference input. Supports high resolution output up to 2K/4K. nano-banana-2: [GEMINI NANO BANANA 2] Gemini 3.1 Flash Image. Fast and efficient with advanced reasoning. Multi-image fusion with up to 14 reference images. Supports 0.5K/1K/2K/4K resolution. Google Search grounding for real-time data. Best for high-volume, speed-optimized workflows. fal-ai/bytedance/seedream/v5/lite: Bytedance Seedream v5 Lite model for text-to-image, image-to-image (single and multiple image editing) generation with native 2K resolution and excellent text layout.fal-ai/flux-2-pro: Flux 2 Pro model - higher quality version of Flux 2 with professional-grade output. Enhanced realism, superior text generation, and advanced editing capabilities. Ideal for high-quality realistic images and complex editing tasks.fal-ai/z-image/turbo: Z-Image Turbo model optimized for speed without sacrificing quality. Supports both text-to-image and image-to-image modes. Perfect for quick iterations, bulk generation, style transfer, and cost-effective projects.bbox-segment: A model for extracting subjects from images based on bbox region.fal-bria-rmbg: A model specialized for remove background from image. Should prioritize this tool if the user wants to remove background from image. fal-ai/recraft-clarity-upscale: A model specialized for upscale image. fal-ai/image-editing/text-removal: A specialized model for removing text and watermarks from images. Automatically detects and removes text while preserving the background and other visual elements. Use when users want to clean images, remove watermarks, or eliminate text overlays. flux-pro/outpaint: A model specialized for expand image to a specific aspect ratio. nano-banana-2-flash-lite: [GEMINI NANO BANANA 2 FLASH LITE] Fast, lightweight Gemini image model for text-to-image and image editing with multi-image input. Native 1K output. Best for speed-sensitive, high-volume workflows. (string, one of: gpt-image-2, nano-banana-pro, nano-banana-2, fal-ai/bytedance/seedream/v5/lite, fal-ai/flux-2-pro, fal-ai/z-image/turbo, bbox-segment, fal-bria-rmbg, fal-ai/recraft-clarity-upscale, fal-ai/image-editing/text-removal, flux-pro/outpaint, nano-banana-2-flash-lite) |
|
|
32
|
+
| `<query>` (positional) | No | Detailed description of the image to generate. The prompt should be in English.However, any specific text that should appear within the image does not need to be translated.(e.g., 'A futuristic cityscape with flying cars and neon lights at night'). Omit when passing the prompt by `query_file` instead. (string) |
|
|
33
|
+
| `--query_file` | No | Optional. Repo-relative path to a UTF-8 text file containing the prompt, used verbatim in place of `query` (lets you pass a long prompt by path instead of inlining it). Requires `repo_id`. When set, `query` may be omitted. (string) |
|
|
33
34
|
| `--bbox` | No | BBox of the target object, for bbox segmentation modelFormat: [x1, y1, x2, y2], x1 and y1 are the top-left corner coordinates, x2 and y2 are the bottom-right corner coordinates. (array) |
|
|
34
35
|
| `-i`, `--image_urls` | No | The URLs of the images to use as a reference for the image generation or editing. (default is [], if the task is based on one or more reference images, it is required) (array) |
|
|
36
|
+
| `--repo_id` | No | Optional. Second Brain repo id (provided in the agent's system prompt). Required only when image_urls contains relative paths from a Second Brain project (e.g. 'assets/foo.png'). Absolute http(s) URLs and data: URLs do not need this parameter. (string) |
|
|
35
37
|
| `-r`, `--aspect_ratio` | No | The aspect ratio of the image to generate. (string, one of: 1:1, 4:3, 16:9, 9:16, 3:4, 2:3, 3:2, auto) |
|
|
36
38
|
| `-s`, `--image_size` | No | Image size resolution. Default is auto. (string, one of: auto, 0.5k, 1k, 2k, 3k, 4k) |
|
|
37
39
|
|