@genspark/cli 1.1.0 → 1.1.1
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
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
| [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
34
|
| [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
35
|
| [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,
|
|
36
|
+
| [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
37
|
| [gsk-notion](../skills/gsk-notion/SKILL.md) | Notion page operations. Actions: search, read, create. |
|
|
38
38
|
| [gsk-onedrive](../skills/gsk-onedrive/SKILL.md) | OneDrive file operations. Actions: list, search, read. |
|
|
39
39
|
| [gsk-outlook-calendar](../skills/gsk-outlook-calendar/SKILL.md) | Outlook Calendar operations. Actions: list, create, respond, modify, delete. |
|
package/package.json
CHANGED
|
@@ -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) |
|
|
@@ -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,
|
|
5
|
+
read_chat, list_channel_messages, list_channel_replies, list_teams, search, search_users,
|
|
6
|
+
create_chat.'
|
|
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, search, search_users, create_chat.
|
|
19
20
|
|
|
20
21
|
## Usage
|
|
21
22
|
|
|
@@ -29,22 +30,23 @@ 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
|
|
33
|
+
| `<action>` (positional) | Yes | Action to perform. 'send': Send a message in Teams; '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 (string, one of: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_replies, list_teams, search, search_users, create_chat) |
|
|
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
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. (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]
|
|
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). (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. (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
|
+
| `--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
44
|
| `--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
45
|
| `--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
46
|
| `--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
|
-
| `--
|
|
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) |
|
|
47
|
+
| `--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
48
|
| `--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) |
|
|
49
|
+
| `--message_id` | No | [list_channel_replies] Root channel message ID whose replies should be listed. (string) |
|
|
48
50
|
| `--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
51
|
| `--unread_only` | No | [search] Set to true to search for unread messages only. Default is false. (boolean) |
|
|
50
52
|
| `--question` | No | [search] A specific question to answer based on the search results. (string) |
|
|
@@ -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,
|
|
5
|
-
|
|
6
|
-
get_attachment, group_list, group_search,
|
|
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:
|