@genspark/cli 1.1.0 → 1.2.0

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/docs/skills.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  > Auto-generated by `python -m backend.genspark_tool_cli.generate_skills`. Do not edit manually.
4
4
 
5
- **Total skills:** 50
5
+ **Total skills:** 51
6
6
 
7
- ## Service Skills (50)
7
+ ## Service Skills (51)
8
8
 
9
9
  | Skill | Description |
10
10
  |-------|-------------|
@@ -23,6 +23,7 @@
23
23
  | [gsk-github](../skills/gsk-github/SKILL.md) | GitHub operations. Actions: list_repos, search_issues, create_issue, update_issue. |
24
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 |
25
25
  | [gsk-google-calendar](../skills/gsk-google-calendar/SKILL.md) | Google Calendar operations. Actions: list, create, respond, modify, delete. |
26
+ | [gsk-google-chat](../skills/gsk-google-chat/SKILL.md) | Google Chat operations. Actions: list_spaces, read, send. Sent messages carry a visible Genspark app attribution next to |
26
27
  | [gsk-google-contacts](../skills/gsk-google-contacts/SKILL.md) | Google Contacts operations. Actions: search, get, create, update. |
27
28
  | [gsk-google-docs](../skills/gsk-google-docs/SKILL.md) | Google Docs document operations. Actions: create, read, append, search. |
28
29
  | [gsk-google-drive](../skills/gsk-google-drive/SKILL.md) | Google Drive file operations. Actions: list, search, read, upload. |
@@ -33,18 +34,18 @@
33
34
  | [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 |
34
35
  | [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 |
35
36
  | [gsk-meeting](../skills/gsk-meeting/SKILL.md) | Meeting notes operations. Actions: list, search, get. |
36
- | [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 |
37
+ | [gsk-microsoft-teams](../skills/gsk-microsoft-teams/SKILL.md) | Microsoft Teams operations. Actions: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_rep |
37
38
  | [gsk-notion](../skills/gsk-notion/SKILL.md) | Notion page operations. Actions: search, read, create. |
38
39
  | [gsk-onedrive](../skills/gsk-onedrive/SKILL.md) | OneDrive file operations. Actions: list, search, read. |
39
40
  | [gsk-outlook-calendar](../skills/gsk-outlook-calendar/SKILL.md) | Outlook Calendar operations. Actions: list, create, respond, modify, delete. |
40
41
  | [gsk-outlook-contacts](../skills/gsk-outlook-contacts/SKILL.md) | Outlook Contacts operations. Actions: search. |
41
- | [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 |
42
+ | [gsk-outlook-email](../skills/gsk-outlook-email/SKILL.md) | Outlook Email operations. Actions: search, read, list_folders, list_emails, list_email_changes, send, draft, reply, repl |
42
43
  | [gsk-phone-call](../skills/gsk-phone-call/SKILL.md) | Make a real AI phone call on the user's behalf. Validates prerequisites (membership, phone setup, credits), resolves the |
43
44
  | [gsk-salesforce](../skills/gsk-salesforce/SKILL.md) | Salesforce DX CLI (`sf`) operations in a pre-authenticated sandbox. Actions: run (forwards any `sf` subcommand). |
44
45
  | [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 |
45
46
  | [gsk-sharepoint](../skills/gsk-sharepoint/SKILL.md) | SharePoint site and file operations. Actions: list, search, read_content, read_file, upload. |
46
47
  | [gsk-sharepoint-upload](../skills/gsk-sharepoint-upload/SKILL.md) | Upload a file to a SharePoint document library. |
47
- | [gsk-slack](../skills/gsk-slack/SKILL.md) | Slack messaging operations. Actions: send, search, lookup. |
48
+ | [gsk-slack](../skills/gsk-slack/SKILL.md) | Slack messaging operations. Actions: send, search, read, lookup, react, upload. |
48
49
  | [gsk-social-instagram](../skills/gsk-social-instagram/SKILL.md) | Search and retrieve data from Instagram: posts, users, comments, and connections. |
49
50
  | [gsk-social-reddit](../skills/gsk-social-reddit/SKILL.md) | Search and retrieve data from Reddit: posts, comments, users, and subreddits. |
50
51
  | [gsk-social-twitter](../skills/gsk-social-twitter/SKILL.md) | Search and retrieve data from Twitter/X: posts, users, comments, retweets, and more. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genspark/cli",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "CLI tool for Genspark Tool API - search, crawl, analyze images, generate media",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -32,7 +32,7 @@ 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 **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) |
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. EXCEPTION — simple mechanical edits to an uploaded .pptx (insert/delete a slide, change a value, swap an element/image): do them yourself with python-pptx on the original file and deliver the edited file; this agent re-authors the deck and its export is a re-render, so untouched slides won't stay byte-identical. Route substantial rework (redesign, restyle, use as a template, content overhaul) to this agent. 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
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
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) |
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: gsk-google-chat
3
+ version: 1.0.0
4
+ description: 'Google Chat operations. Actions: list_spaces, read, send. Sent messages
5
+ carry a visible Genspark app attribution next to the sender''s name (added by Google,
6
+ cannot be hidden).'
7
+ metadata:
8
+ category: general
9
+ requires:
10
+ bins:
11
+ - gsk
12
+ cliHelp: gsk google_chat --help
13
+ ---
14
+
15
+ # gsk-google-chat
16
+
17
+ **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
+
19
+ Google Chat operations. Actions: list_spaces, read, send. Sent messages carry a visible Genspark app attribution next to the sender's name (added by Google, cannot be hidden).
20
+
21
+ ## Usage
22
+
23
+ ```bash
24
+ gsk google_chat [options]
25
+ ```
26
+
27
+ ## Flags
28
+
29
+ | Flag | Required | Description |
30
+ |------|----------|-------------|
31
+ | `<action>` (positional) | Yes | Action to perform. 'list_spaces': List spaces (rooms, group chats, and DMs); 'read': Read recent messages from a space; 'send': Send a message to a space (recipients see a Genspark app label next to the sender's name — Google adds it, it cannot be hidden) (string, one of: list_spaces, read, send) |
32
+ | `--search_query` | No | [list_spaces] Optional case-insensitive filter on the space display name. (string) |
33
+ | `--limit` | No | [list_spaces] Maximum number of spaces to return (1-200). Default: 50 \| [read] Maximum number of messages to return (1-100). Default: 25 (integer) |
34
+ | `--space` | No | [read] Space resource name, e.g. 'spaces/AAAAxxxx'. \| [send] Space resource name, e.g. 'spaces/AAAAxxxx'. (string) |
35
+ | `--message` | No | [send] The message text to send. Supports Google Chat formatting. (string) |
36
+ | `--thread` | No | [send] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to reply in a thread. Omit to start a new thread. (string) |
37
+
38
+ ## See Also
39
+
40
+ - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -2,7 +2,8 @@
2
2
  name: gsk-microsoft-teams
3
3
  version: 1.0.0
4
4
  description: 'Microsoft Teams operations. Actions: send, list_channels, list_chats,
5
- read_chat, list_teams, search, search_users, create_chat.'
5
+ read_chat, list_channel_messages, list_channel_replies, list_teams, list_members,
6
+ search, search_users, create_chat, create_team, react, delete_message.'
6
7
  metadata:
7
8
  category: general
8
9
  requires:
@@ -15,7 +16,7 @@ metadata:
15
16
 
16
17
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
17
18
 
18
- Microsoft Teams operations. Actions: send, list_channels, list_chats, read_chat, list_teams, search, search_users, create_chat.
19
+ Microsoft Teams operations. Actions: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_replies, list_teams, list_members, search, search_users, create_chat, create_team, react, delete_message.
19
20
 
20
21
  ## Usage
21
22
 
@@ -29,22 +30,24 @@ gsk teams [options]
29
30
 
30
31
  | Flag | Required | Description |
31
32
  |------|----------|-------------|
32
- | `<action>` (positional) | Yes | Action to perform. 'send': Send a message in Teams; 'list_channels': List channels in a team; 'list_chats': List recent chats; 'read_chat': Read a chat's recent messages by chat_id; 'list_teams': List teams the user belongs to; 'search': Search messages; 'search_users': Search for users; 'create_chat': Create a new chat (string, one of: send, list_channels, list_chats, read_chat, list_teams, search, search_users, create_chat) |
33
+ | `<action>` (positional) | Yes | Action to perform. 'send': Send a message in Teams (reply_to_message_id replies in a channel thread or quotes a chat message); 'list_channels': List hosted and shared channels for an associated team; 'list_chats': List recent chats; 'read_chat': Read a chat's recent messages by chat_id; 'list_channel_messages': List root messages in a channel; one traversal is not a deletion snapshot; 'list_channel_replies': List replies to a channel message; one traversal is not a deletion snapshot; 'list_teams': List direct teams and shared-channel host teams; 'search': Search messages; 'search_users': Search for users; 'create_chat': Create a new chat; 'react': Emoji-react to a chat or channel message (or remove your reaction); 'list_members': List ALL members of a team with roles and emails (full roster, internally paginated); 'create_team': Create a new team (you become owner) and optionally add members by email; 'delete_message': Soft-delete one of your own messages (chat, channel, or threaded reply) (string, one of: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_replies, list_teams, search, search_users, create_chat, react, list_members, create_team, delete_message) |
33
34
  | `--content` | No | [send] The message content to send. Accepts either Markdown or HTML. Markdown (e.g. '## Heading', '**bold**', '- item', tables) is automatically rendered to formatted HTML. You may also pass raw HTML directly: <a href='URL'>text</a> for links, <b>text</b> for bold, <i>text</i> for italic, <br> for line breaks, and other standard HTML tags. (string) |
34
- | `--chat_id` | No | [send] Optional chat ID to send the message to. If not specified or set to 'self', sends to yourself as a DM. Use chat IDs from microsoft_teams_search_messages results. \| [read_chat] The Teams chat ID (e.g. '19:...@thread.v2'). Required. (string) |
35
+ | `--chat_id` | No | [send] Optional chat ID to send the message to. If not specified or set to 'self', sends to yourself as a DM. Use chat IDs from microsoft_teams_search_messages results. \| [read_chat] The Teams chat ID (e.g. '19:...@thread.v2'). Required. \| [react] ID of the chat containing the message. Provide either chat_id, or team_id + channel_id for a channel message. \| [delete_message] ID of the chat containing the message. Provide either chat_id, or team_id + channel_id for a channel message. (string) |
35
36
  | `--channel_type` | No | [send] Type of channel: 'teams_chat' for 1:1 or group chats, 'teams_channel' for team channels. Default: 'teams_chat' (string, one of: teams_chat, teams_channel) |
36
- | `--team_id` | No | [send] Required if channel_type is 'teams_channel'. The team ID where the channel belongs. \| [list_channels] The ID of the team to list channels for. (string) |
37
- | `--channel_id` | No | [send] Required if channel_type is 'teams_channel'. The channel ID within the team. (string) |
37
+ | `--team_id` | No | [send] Required if channel_type is 'teams_channel'. The team ID where the channel belongs. \| [list_channels] Associated team ID from list_teams. \| [list_channel_messages] Host team ID from the selected list_channels result (host_team_id). \| [list_channel_replies] Host team ID from the selected list_channels result (host_team_id). \| [react] Team ID, for reacting to a channel message (together with channel_id). \| [list_members] ID of the team to list members of. \| [delete_message] Team ID, for deleting a channel message (together with channel_id). (string) |
38
+ | `--channel_id` | No | [send] Required if channel_type is 'teams_channel'. The channel ID within the team. \| [list_channel_messages] Channel ID from the same selected list_channels result. \| [list_channel_replies] Channel ID from the same selected list_channels result. \| [react] Channel ID, for reacting to a channel message (together with team_id). \| [delete_message] Channel ID, for deleting a channel message (together with team_id). (string) |
38
39
  | `--importance` | No | [send] Message importance level that controls notification behavior. 'normal': Regular message, no special notification (default). 'high': Triggers notification without special emphasis. 'urgent': Triggers immediate notification with sound and alert. Default: 'normal' (string, one of: normal, high, urgent) |
39
40
  | `--notify` | No | [send] Whether to force notification by @mentioning yourself in the message. When true, adds a self-mention to ensure notification is triggered. Useful when sending reminders to yourself. Default: true (boolean) |
40
41
  | `--mention_user_ids` | No | [send] List of user IDs (GUIDs) to @mention in the message. Use search_users to find user IDs first. The message content should include {mention_N} placeholders where N is the index (0-based), e.g., '{mention_0} thank you' will @mention the first user in the list. (array) |
41
42
  | `--mention_user_names` | No | [send] Display names for mentioned users, in same order as mention_user_ids. If not provided, will use user IDs as display names. (array) |
43
+ | `--reply_to_message_id` | No | [send] Optional ID of an existing message to reply to. For team channels: posts this message as a threaded reply under that root message. For chats: renders a quoted block of the referenced message above your text (like the Teams client's Reply action). Message IDs come from microsoft_teams_read_chat / microsoft_teams_list_channel_messages. (string) |
44
+ | `--cursor` | No | [list_channels] Opaque next_cursor from the previous page. \| [list_chats] Pagination cursor returned in a previous response's ``next_cursor`` field. Pass it back verbatim to fetch the next page; omit on the first call. \| [read_chat] Pagination cursor from a previous response's ``next_cursor``; omit on the first call. \| [list_channel_messages] Opaque next_cursor from the previous page. \| [list_channel_replies] Opaque next_cursor from the previous page. \| [list_teams] Opaque next_cursor from the previous page. \| [search] Pagination cursor returned in a previous response's ``next_cursor`` field. Pass it back verbatim to fetch the next page; omit on the first call. Stop paging as soon as the returned hits satisfy your need. (string) |
42
45
  | `--topic` | No | [list_chats] Search for chats by topic/name (case-insensitive partial match). Use this to find a specific group chat by its name. Example: 'WorkflowTest' to find a chat with that topic. Filter is applied per-page; if no match on the current page, use ``next_cursor`` to keep searching. \| [create_chat] Topic/name for the group chat. Required for group chats (2+ members), ignored for 1:1 chats. (string) |
43
46
  | `--chat_type` | No | [list_chats] Filter by chat type. 'oneOnOne' for 1:1 chats, 'group' for group chats, 'meeting' for meeting chats, 'all' for all types. Default: 'all' (string, one of: oneOnOne, group, meeting, all) |
44
47
  | `--count` | No | [list_chats] Maximum number of chats to return on this call (page size, clamped to [1, 50]). Default: 50. To fetch beyond a single page, use the ``cursor`` argument with the previous response's ``next_cursor``. \| [search] The maximum number of messages to return on this call (page size, clamped to [1, 25]). Default: 25. To fetch beyond a single page, use the ``cursor`` argument with the previous response's ``next_cursor``. \| [search_users] Maximum number of users to return. Default: 10 (integer) |
45
- | `--cursor` | No | [list_chats] Pagination cursor returned in a previous response's ``next_cursor`` field. Pass it back verbatim to fetch the next page; omit on the first call. \| [read_chat] Pagination cursor from a previous response's ``next_cursor``; omit on the first call. \| [list_teams] Pagination cursor returned in a previous response's ``next_cursor`` field. Pass it back verbatim to fetch the next page; omit on the first call. \| [search] Pagination cursor returned in a previous response's ``next_cursor`` field. Pass it back verbatim to fetch the next page; omit on the first call. Stop paging as soon as the returned hits satisfy your need. (string) |
46
- | `--limit` | No | [read_chat] Maximum messages to return on this call (clamped to [1, 50]). Default: 30. To fetch beyond a page, pass the previous response's ``next_cursor`` as ``cursor``. (integer) |
48
+ | `--limit` | No | [read_chat] Maximum messages to return on this call (clamped to [1, 50]). Default: 30. To fetch beyond a page, pass the previous response's ``next_cursor`` as ``cursor``. \| [list_channel_messages] Messages in this page, clamped to 1-50. Default: 30. \| [list_channel_replies] Messages in this page, clamped to 1-50. Default: 30. (integer) |
47
49
  | `--since` | No | [read_chat] Optional ISO-8601 floor (e.g. '2026-05-01T00:00:00Z'); only messages created at or after this instant are returned. \| [search] Optional ISO-8601 floor (e.g. '2026-05-01' or '2026-05-01T00:00:00Z'); only messages created at or after this instant are returned. (string) |
50
+ | `--message_id` | No | [list_channel_replies] Root channel message ID whose replies should be listed. \| [react] ID of the message to react to. \| [delete_message] ID of the message to delete. (string) |
48
51
  | `--query` | No | [search] The search query using KQL (Keyword Query Language). **Query Behavior**: • Spaces = AND: 'project meeting' finds messages with BOTH terms • OR operator: 'project OR meeting' finds messages with EITHER term • KQL modifiers: 'from:john', 'hasAttachment:true', 'sent>2024-01-01', 'IsRead:false' • Examples: 'urgent project', 'bug OR issue', 'from:alice budget', 'hasAttachment:true report' \| [search_users] Search query - can be a name, email, or partial match. Example: 'John', 'john@company.com', 'Smith' (string) |
49
52
  | `--unread_only` | No | [search] Set to true to search for unread messages only. Default is false. (boolean) |
50
53
  | `--question` | No | [search] A specific question to answer based on the search results. (string) |
@@ -52,7 +55,13 @@ gsk teams [options]
52
55
  | `--until` | No | [search] Optional ISO-8601 ceiling; only messages created at or before this instant are returned. Combine with ``since`` for a window. (string) |
53
56
  | `--order` | No | [search] Result ordering. 'recency' (default) sorts the returned hits newest-first by timestamp; 'relevance' preserves Graph's relevance ranking. (Graph can't recency-rank chatMessage server-side, so this sorts the relevance-selected page client-side — pair with ``since``/``until`` to target a window.) (string, one of: recency, relevance) |
54
57
  | `--include_chat_id` | No | [search_users] If true, also return the chat_id for existing 1:1 chats with each user. This allows direct messaging without create_chat. Default: true (boolean) |
55
- | `--member_emails` | No | [create_chat] List of email addresses of users to add to the chat. One email for 1:1 chat, multiple for group chat. (array) |
58
+ | `--member_emails` | No | [create_chat] List of email addresses of users to add to the chat. One email for 1:1 chat, multiple for group chat. \| [create_team] Emails of org users to add as members (the creator is the owner and must not be listed). Unresolvable emails are reported in members_failed without failing the creation. (array) |
59
+ | `--reply_id` | No | [react] Optional: ID of a threaded reply under the channel message identified by message_id — reacts to that reply instead. Channel target only. \| [delete_message] Optional: ID of a threaded reply under the channel message identified by message_id — deletes that reply instead. Channel target only. (string) |
60
+ | `--reaction` | No | [react] The emoji to react with, as a unicode character (e.g. '👍', '❤️', '😂'). (string) |
61
+ | `--remove` | No | [react] Set true to remove your existing reaction of this emoji instead of adding it. Default: false. (boolean) |
62
+ | `--display_name` | No | [create_team] Name of the new team. (string) |
63
+ | `--description` | No | [create_team] Optional team description. (string) |
64
+ | `--visibility` | No | [create_team] Team visibility. Default: 'private'. (string, one of: private, public) |
56
65
 
57
66
  ## See Also
58
67
 
@@ -1,9 +1,10 @@
1
1
  ---
2
2
  name: gsk-outlook-email
3
3
  version: 1.0.0
4
- description: 'Outlook Email operations. Actions: search, read, send, draft, reply,
5
- reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category,
6
- get_attachment, group_list, group_search, group_read, group_reply.'
4
+ description: 'Outlook Email operations. Actions: search, read, list_folders, list_emails,
5
+ list_email_changes, send, draft, reply, reply_draft, forward, delete, archive, move,
6
+ mark_as_read, add_category, remove_category, get_attachment, group_list, group_search,
7
+ group_read, group_reply.'
7
8
  metadata:
8
9
  category: general
9
10
  requires:
@@ -16,10 +17,19 @@ metadata:
16
17
 
17
18
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
19
 
19
- Outlook Email operations. Actions: search, read, send, draft, reply, reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment, group_list, group_search, group_read, group_reply.
20
+ Outlook Email operations. Actions: search, read, list_folders, list_emails, list_email_changes, send, draft, reply, reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment, group_list, group_search, group_read, group_reply.
20
21
 
21
22
  ## Usage
22
23
 
24
+ The durable ingest actions `list_folders`, `list_emails`, and
25
+ `list_email_changes` require `--from_account <mailbox-address>`. Never omit it:
26
+ the explicit mailbox is part of the stable source identity and cursor scope.
27
+
28
+ ```bash
29
+ gsk outlook list_folders --from_account person@example.com
30
+ gsk outlook list_email_changes --folder_id <id> --from_account person@example.com
31
+ ```
32
+
23
33
  ```bash
24
34
  gsk outlook [options]
25
35
  ```
@@ -30,7 +40,7 @@ gsk outlook [options]
30
40
 
31
41
  | Flag | Required | Description |
32
42
  |------|----------|-------------|
33
- | `<action>` (positional) | Yes | Action to perform. 'search': Search emails by query; 'read': Read a specific email by ID; 'send': Compose and send an email; 'draft': Save an email to the Drafts folder without sending; 'reply': Reply to an existing email; 'reply_draft': Create a reply draft without sending; 'forward': Forward an email to new recipients; 'delete': Delete an email; 'archive': Archive an email; 'move': Move an email to a different folder; 'mark_as_read': Mark an email as read or unread; 'add_category': Add a category to an email; 'remove_category': Remove a category from an email; 'get_attachment': Download an email attachment; 'group_list': List Microsoft 365 groups; 'group_search': Search group emails; 'group_read': Read a group email; 'group_reply': Reply to a group email (string, one of: search, read, send, draft, reply, reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment, group_list, group_search, group_read, group_reply) |
43
+ | `<action>` (positional) | Yes | Action to perform. 'search': Search emails by query; 'read': Read a specific email by ID; 'list_folders': List structured Outlook mail folders; 'list_emails': List full structured emails in one folder; 'list_email_changes': List folder-scoped email upserts and tombstones using a delta cursor; 'send': Compose and send an email; 'draft': Save an email to the Drafts folder without sending; 'reply': Reply to an existing email; 'reply_draft': Create a reply draft without sending; 'forward': Forward an email to new recipients; 'delete': Delete an email; 'archive': Archive an email; 'move': Move an email to a different folder; 'mark_as_read': Mark an email as read or unread; 'add_category': Add a category to an email; 'remove_category': Remove a category from an email; 'get_attachment': Download an email attachment; 'group_list': List Microsoft 365 groups; 'group_search': Search group emails; 'group_read': Read a group email; 'group_reply': Reply to a group email (string, one of: search, read, list_folders, list_emails, list_email_changes, send, draft, reply, reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment, group_list, group_search, group_read, group_reply) |
34
44
  | `--queryString` | No | [search] The search query using KQL (Keyword Query Language). Examples:\n- Simple: 'project meeting'\n- From Sender: 'from:boss@example.com'\n- With Subject: 'subject:"Weekly Report"'\n- Unread Emails: 'isRead=false'\n- Has Attachments: 'hasAttachments=true'\n- Cc Recipient: 'cc:user@example.com'\n- Important: 'importance:high'\n- Complex: 'from:admin@co.com AND (subject:urgent OR body:critical)'\nNote: Use after_date/before_date params for date filtering (recommended), or use KQL syntax like 'received:2024-06-01..2024-06-30' in queryString. (string) |
35
45
  | `--after_date` | No | [search] Filter emails received on or after this date (inclusive). Format: YYYY-MM-DD (e.g., '2024-01-01'). Works for both enterprise and personal accounts. (string) |
36
46
  | `--before_date` | No | [search] Filter emails received before this date (exclusive). Format: YYYY-MM-DD (e.g., '2024-01-31'). Works for both enterprise and personal accounts. (string) |
@@ -40,7 +50,7 @@ gsk outlook [options]
40
50
  | `--max_total_results` | No | [search] Maximum total results to fetch when auto_paginate is true. Default: 500, Maximum: 500. \| [group_search] Maximum total results to fetch across all groups when auto_paginate is true. Default: 500, Maximum: 500. (integer) |
41
51
  | `--folder` | No | [search] The mail folder to search in. Options:\n- 'inbox': Inbox folder (default)\n- 'junkemail' or 'spam': Junk/Spam folder\n- 'deleteditems' or 'trash': Deleted Items folder\n- 'drafts': Drafts folder\n- 'sentitems' or 'sent': Sent Items folder\n- 'archive': Archive folder\n- 'all': Search across all folders (uses Search API)\n- Any custom folder display name (e.g. 'Receipts' or a nested 'Parent/Child' path) is also accepted and resolved to the folder automatically (string) |
42
52
  | `--search_mode` | No | [search] Search mode to use:\n- 'auto' (default): Automatically choose best method\n- 'kql': Use Microsoft Search API with full KQL syntax (enterprise only, supports 'isread:false from:john subject:meeting')\n- 'filter': Use $filter for property filtering (supports 'isRead eq false', works with folder parameter) (string, one of: auto, kql, filter) |
43
- | `--from_account` | No | [search] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [send] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [draft] Sender email account to use. \| [reply] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [reply_draft] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [forward] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [delete] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [archive] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [move] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [mark_as_read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [add_category] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [remove_category] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [get_attachment] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_list] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_search] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_reply] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. (string) |
53
+ | `--from_account` | No | [search] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [list_folders] Connected Outlook mailbox address; required for stable multi-account ingestion. \| [list_emails] Connected Outlook mailbox address; required for stable multi-account ingestion. \| [list_email_changes] Connected Outlook mailbox address; required for stable multi-account ingestion. \| [send] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [draft] Sender email account to use. \| [reply] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [reply_draft] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [forward] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [delete] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [archive] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [move] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [mark_as_read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [add_category] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [remove_category] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [get_attachment] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_list] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_search] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_reply] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. (string) |
44
54
  | `--id` | No | [read] The ID of a single Outlook message to retrieve. Mutually exclusive with 'thread_id'. (string) |
45
55
  | `--thread_id` | No | [read] The Outlook conversationId of the thread to retrieve. Returns every message in the conversation. Mutually exclusive with 'id'. The 'outlook_email_search' tool exposes this value as 'threadId' on each result. \| [group_read] The ID of the email thread to retrieve. This is often the same as the conversationId. \| [group_reply] The ID of the email thread to reply to. Available from trigger data as 'thread_id' or 'emails[0].thread_id'. (string) |
46
56
  | `--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 conversations to keep the LLM context bounded. Ignored when reading by single 'id'. (integer) |
@@ -48,6 +58,13 @@ gsk outlook [options]
48
58
  | `--question` | No | [read] Question to answer guiding how to process the email content \| [group_read] Question to answer guiding how to process the email content (string) |
49
59
  | `--download_attachments` | No | [read] Whether need to download attachments from the email to analysis (boolean) |
50
60
  | `--aidrive_path` | No | [read] Path in AIDrive where attachments should be saved. Default is /outlook_attachments/ \| [get_attachment] The path in AIDrive to save the attachment. Default: /outlook_attachments/ (string) |
61
+ | `--parent_folder_id` | No | [list_folders] Folder ID whose direct children to list; omit for root folders. (string) |
62
+ | `--cursor` | No | [list_folders] Opaque next_cursor from the previous page. \| [list_emails] Opaque next_cursor from the previous page. \| [list_email_changes] Opaque next_cursor while paging the current delta round. (string) |
63
+ | `--page_size` | No | [list_folders] Requested page size (1-100, default 50). \| [list_emails] Requested page size (1-100, default 50). \| [list_email_changes] Requested page size (1-100, default 50). (integer, default: `50`) |
64
+ | `--folder_id` | No | [list_emails] Outlook folder ID returned by list_folders. \| [list_email_changes] Outlook folder ID returned by list_folders. (string) |
65
+ | `--received_after` | No | [list_emails] Inclusive UTC date or ISO datetime lower bound. \| [list_email_changes] Initial-round inclusive UTC date or ISO datetime lower bound; omit after a cursor exists. (string) |
66
+ | `--received_before` | No | [list_emails] Exclusive UTC date or ISO datetime upper bound. (string) |
67
+ | `--delta_cursor` | No | [list_email_changes] Opaque delta_cursor saved after the previous completed round. (string) |
51
68
  | `--to` | No | [send] A list of email addresses for primary recipients. At least one recipient is required. \| [draft] Recipient email address(es), comma-separated. \| [reply] Optional: A list of email addresses for primary recipients. If not provided, defaults to the original sender. By default (reply_all=true), all original recipients are included in CC. \| [reply_draft] Optional: A list of email addresses for primary recipients. If not provided, defaults to the original sender. By default (reply_all), all original recipients are included in CC. \| [forward] A list of email addresses for primary recipients to forward the email to. \| [group_reply] Optional list of recipient email addresses to add as new participants. These recipients will be notified about the reply. (array) |
52
69
  | `--subject` | No | [send] The email subject line. \| [draft] Email subject line. (string) |
53
70
  | `--body` | No | [send] The email body content. **IMPORTANT**: The format MUST match the content_type parameter: - If content_type='text': Use plain text - If content_type='html': Use HTML format with tags like <h1>, <p>, <ul>, etc. **Note**: Email clients DO NOT support Markdown. Convert Markdown to HTML if needed. \| [draft] Email body content (plain text or HTML). \| [reply] The reply message body. **IMPORTANT**: The format MUST match the content_type parameter: - If content_type='text': Use plain text - If content_type='html': Use HTML format with tags like <h1>, <p>, <ul>, etc. **Note**: Email clients DO NOT support Markdown. Convert Markdown to HTML if needed. \| [reply_draft] The reply content in HTML format. Use HTML tags for formatting (e.g., <br>, <b>, <i>). \| [forward] Optional: Additional message to include above the forwarded content. This is your personal note to recipients. (string) |
@@ -17,7 +17,13 @@ description: 'Make a real AI phone call on the user''s behalf. Validates prerequ
17
17
 
18
18
  Phone numbers must have verifiable lineage (user-provided, prior tool results, or
19
19
  the built-in Maps lookup) — never fabricate a number. With --dry-run, only validates
20
- and resolves the contact; no call is placed.'
20
+ and resolves the contact; no call is placed.
21
+
22
+ First-time users must finish a one-time web setup before any real call: if the result
23
+ carries code=setup_incomplete, show the user its setup_url (browser page ending
24
+ in a short test call to their own phone), wait for them to confirm, then retry.
25
+ Use phone_call_setup_status to pre-check instead of dialing blind when the user
26
+ may not have set up yet.'
21
27
  metadata:
22
28
  category: general
23
29
  requires:
@@ -33,6 +39,7 @@ metadata:
33
39
  Make a real AI phone call on the user's behalf. Validates prerequisites (membership, phone setup, credits), resolves the contact (Google Maps place data for businesses; number validation for personal contacts), then dials, converses by voice, and returns the outcome: call status, true audio duration (audio_duration_seconds), dial attempts (dial_attempts), summary, and transcript. A persistent call record (summary, transcript, recording) is saved with the call's project.
34
40
  MANDATORY after every call, without being asked: (1) present the outcome to the user — who was called, final status, real call duration, and the key result; (2) disclose EVERY dial attempt made, including automatic retries and any accidental extra dials; (3) tell the user a persistent call record exists and how to see it (the call_log / call_detail tools, or the call's project page). Show the transcript inline when short; offer it otherwise.
35
41
  Phone numbers must have verifiable lineage (user-provided, prior tool results, or the built-in Maps lookup) — never fabricate a number. With --dry-run, only validates and resolves the contact; no call is placed.
42
+ First-time users must finish a one-time web setup before any real call: if the result carries code=setup_incomplete, show the user its setup_url (browser page ending in a short test call to their own phone), wait for them to confirm, then retry. Use phone_call_setup_status to pre-check instead of dialing blind when the user may not have set up yet.
36
43
 
37
44
  ## Usage
38
45
 
@@ -55,6 +55,8 @@ gsk me
55
55
 
56
56
  Always parse stdout as JSON. Use `--output text` for human-readable output.
57
57
 
58
+ **Do NOT merge stderr into stdout when piping to a JSON parser.** `gsk ... 2>&1 | python3 -c "json.load(sys.stdin)"` fails — the stderr progress/spinner text lands ahead of the JSON and breaks the parse at the very first character (`Expecting value: line 1 column 2`). Pipe only stdout: drop stderr with `2>/dev/null`, or leave it on the terminal. Never `2>&1` a command whose stdout you intend to parse.
59
+
58
60
  ## Local File Handling
59
61
 
60
62
  Most commands that accept URLs also accept local file paths. The CLI automatically uploads local files before passing them to the API:
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: gsk-slack
3
3
  version: 1.0.0
4
- description: 'Slack messaging operations. Actions: send, search, lookup.'
4
+ description: 'Slack messaging operations. Actions: send, search, read, lookup, react,
5
+ upload.'
5
6
  metadata:
6
7
  category: general
7
8
  requires:
@@ -14,7 +15,7 @@ metadata:
14
15
 
15
16
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
16
17
 
17
- Slack messaging operations. Actions: send, search, lookup.
18
+ Slack messaging operations. Actions: send, search, read, lookup, react, upload.
18
19
 
19
20
  ## Usage
20
21
 
@@ -26,20 +27,29 @@ gsk slack [options]
26
27
 
27
28
  | Flag | Required | Description |
28
29
  |------|----------|-------------|
29
- | `<action>` (positional) | Yes | Action to perform. 'send': Send a message to a channel or user; 'search': Search messages by keyword; 'lookup': Look up users, channels, or groups (string, one of: send, search, lookup) |
30
+ | `<action>` (positional) | Yes | Action to perform. 'send': Send a message to a channel or user; 'search': Search messages by keyword; 'read': Read recent message history of a channel (or one thread); 'lookup': Look up users, channels, or groups; 'react': Emoji-react to a message (or remove your reaction); 'upload': Upload a file into a channel, group, or DM (string, one of: send, search, read, lookup, react, upload) |
30
31
  | `--message` | No | [send] The message content to send. Supports Slack markdown formatting. (string) |
31
32
  | `--recipient` | No | [send] Optional recipient: 'self' (default), channel ID (e.g., 'C01234567'), or user ID (e.g., 'U01234567'). If not specified, sends to yourself. (string) |
32
- | `--title` | No | [send] Optional title for the message. If provided, creates a rich formatted message with a header. (string) |
33
+ | `--title` | No | [send] Optional title for the message. If provided, creates a rich formatted message with a header. \| [upload] Optional title shown on the Slack file card. Defaults to the file name. (string) |
33
34
  | `--fields` | No | [send] Optional array of field objects with 'title' and 'value' keys to create a structured message layout. (array) |
34
- | `--thread_ts` | No | [send] Optional thread timestamp to reply in a thread. (string) |
35
+ | `--thread_ts` | No | [send] Optional thread timestamp to reply in a thread. \| [read] Timestamp ('ts') of a thread's parent message. When set, returns that thread's replies instead of the channel timeline. \| [upload] Optional thread timestamp — share the file as a reply in this thread instead of the conversation root. (string) |
35
36
  | `--query` | No | [search] The search query. You can use modifiers like 'in:#channel', 'from:@user', 'has:link', 'before:yyyy-mm-dd'. (string) |
36
37
  | `--count` | No | [search] The maximum number of messages to return. Default is 100. (integer) |
37
38
  | `--sort` | No | [search] Sort order of results. 'score' for relevance or 'timestamp' for time. Default is 'score'. (string) |
38
39
  | `--question` | No | [search] A specific question to answer based on the search results. (string) |
40
+ | `--channel` | No | [read] Conversation ID (channel 'C…', private group 'G…', or DM 'D…') or a channel name (e.g. '#general' or 'general'). IDs come from the lookup action. \| [react] Conversation ID containing the message (channel 'C…', private group 'G…', or DM 'D…'). \| [upload] Target conversation ID (channel 'C…', private group 'G…', or DM 'D…') the file is shared into. (string) |
41
+ | `--limit` | No | [read] Maximum messages to return (default 20, max 100). \| [lookup] Maximum number of results to return. Default: 50 (integer) |
42
+ | `--cursor` | No | [read] Pagination cursor from a previous call's next_cursor to fetch older messages. (string) |
39
43
  | `--lookup_type` | No | [lookup] What to look up: 'users' for team members, 'channels' for channels/conversations, 'all' for both. (string, one of: users, channels, all) |
40
44
  | `--search_query` | No | [lookup] Optional search query to filter results by name. Case-insensitive partial match on name, display name, or real name. (string) |
41
45
  | `--include_bots` | No | [lookup] Whether to include bot users in results. Default: false (boolean) |
42
- | `--limit` | No | [lookup] Maximum number of results to return. Default: 50 (integer) |
46
+ | `--timestamp` | No | [react] The message's 'ts' value (e.g. '1752600000.000100'). (string) |
47
+ | `--reaction` | No | [react] Slack emoji name without colons, e.g. 'thumbsup', '+1', 'heart', 'joy'. (string) |
48
+ | `--remove` | No | [react] Set true to remove your existing reaction of this emoji instead of adding it. Default: false. (boolean) |
49
+ | `--content` | No | [upload] Text content to upload as a file (UTF-8). Provide exactly one of 'content' or 'file_path'. (string) |
50
+ | `--file_path` | No | [upload] File to upload: a local server file path, a Genspark file-wrapper URL (https://…/api/files/s/<code>), or an AI Drive path (aidrive://…). Provide exactly one of 'content' or 'file_path'. (string) |
51
+ | `--file_name` | No | [upload] File name shown in Slack (include the extension, e.g. 'report.pdf'). Required with 'content'; defaults to the path basename for 'file_path'. (string) |
52
+ | `--initial_comment` | No | [upload] Optional message text posted together with the file. (string) |
43
53
 
44
54
  ## See Also
45
55