Skip to content

Commit 0b28128

Browse files
emir-karabegwaleedlatif1icecrasher321
authored
feat(tools): google slides tool, terminal console virtualization, tool fixes (#2209)
* feat: google slides tool * fix oauth for slides, add remaining endpoints, update docs * optimize json dump viewer using react window * change slides to use google drive credentials * fix some tools * ack PR comments --------- Co-authored-by: waleed <[email protected]> Co-authored-by: Vikhyath Mondreti <[email protected]>
1 parent a50edf8 commit 0b28128

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+3396
-201
lines changed

apps/docs/components/icons.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,27 @@ export function GoogleDocsIcon(props: SVGProps<SVGSVGElement>) {
10841084
)
10851085
}
10861086

1087+
export function GoogleSlidesIcon(props: SVGProps<SVGSVGElement>) {
1088+
return (
1089+
<svg
1090+
{...props}
1091+
xmlns='http://www.w3.org/2000/svg'
1092+
viewBox='0 0 48 48'
1093+
width='96px'
1094+
height='96px'
1095+
>
1096+
<path
1097+
fill='#FFC107'
1098+
d='M37,45H11c-1.657,0-3-1.343-3-3V6c0-1.657,1.343-3,3-3h19l10,10v29C40,43.657,38.657,45,37,45z'
1099+
/>
1100+
<path fill='#FFECB3' d='M40 13L30 13 30 3z' />
1101+
<path fill='#FFA000' d='M30 13L40 23 40 13z' />
1102+
<path fill='#FFF8E1' d='M14 21H34V35H14z' />
1103+
<path fill='#FFA000' d='M16 23H32V26H16zM16 28H28V30H16z' />
1104+
</svg>
1105+
)
1106+
}
1107+
10871108
export function GoogleCalendarIcon(props: SVGProps<SVGSVGElement>) {
10881109
return (
10891110
<svg

apps/docs/components/ui/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import {
3434
GoogleFormsIcon,
3535
GoogleIcon,
3636
GoogleSheetsIcon,
37+
GoogleSlidesIcon,
3738
GoogleVaultIcon,
3839
GrafanaIcon,
3940
HubspotIcon,
@@ -192,6 +193,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
192193
hubspot: HubspotIcon,
193194
grafana: GrafanaIcon,
194195
google_vault: GoogleVaultIcon,
196+
google_slides: GoogleSlidesIcon,
195197
google_sheets: GoogleSheetsIcon,
196198
google_forms: GoogleFormsIcon,
197199
google_drive: GoogleDriveIcon,

apps/docs/content/docs/en/tools/ahrefs.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ Get the top pages of a target domain sorted by organic traffic. Returns page URL
149149
| `date` | string | No | Date for historical data in YYYY-MM-DD format \(defaults to today\) |
150150
| `limit` | number | No | Maximum number of results to return \(default: 100\) |
151151
| `offset` | number | No | Number of results to skip for pagination |
152+
| `select` | string | No | Comma-separated list of fields to return \(e.g., url,traffic,keywords,top_keyword,value\). Default: url,traffic,keywords,top_keyword,value |
152153
| `apiKey` | string | Yes | Ahrefs API Key |
153154

154155
#### Output
Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
---
2+
title: Google Slides
3+
description: Read, write, and create presentations
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="google_slides"
10+
color="#E0E0E0"
11+
/>
12+
13+
{/* MANUAL-CONTENT-START:intro */}
14+
[Google Slides](https://slides.google.com) is a dynamic cloud-based presentation application that allows users to create, edit, collaborate on, and present slideshows in real-time. As part of Google's productivity suite, Google Slides offers a flexible platform for designing engaging presentations, collaborating with others, and sharing content seamlessly through the cloud.
15+
16+
Learn how to integrate the Google Slides tools in Sim to effortlessly manage presentations as part of your automated workflows. With Sim, you can read, write, create, and update Google Slides presentations directly through your agents and automated processes, making it easy to deliver up-to-date information, generate custom reports, or produce branded decks programmatically.
17+
18+
With Google Slides, you can:
19+
20+
- **Create and edit presentations**: Design visually appealing slides with themes, layouts, and multimedia content
21+
- **Collaborate in real-time**: Work simultaneously with teammates, comment, assign tasks, and receive live feedback on presentations
22+
- **Present anywhere**: Display presentations online or offline, share links, or publish to the web
23+
- **Add images and rich content**: Insert images, graphics, charts, and videos to make your presentations engaging
24+
- **Integrate with other services**: Connect seamlessly with Google Drive, Docs, Sheets, and other third-party tools
25+
- **Access from any device**: Use Google Slides on desktops, laptops, tablets, and mobile devices for maximum flexibility
26+
27+
In Sim, the Google Slides integration enables your agents to interact directly with presentation files programmatically. Automate tasks like reading slide content, inserting new slides or images, replacing text throughout a deck, generating new presentations, and retrieving slide thumbnails. This empowers you to scale content creation, keep presentations up-to-date, and embed them into automated document workflows. By connecting Sim with Google Slides, you facilitate AI-driven presentation management—making it easy to generate, update, or extract information from presentations without manual effort.
28+
{/* MANUAL-CONTENT-END */}
29+
30+
31+
## Usage Instructions
32+
33+
Integrate Google Slides into the workflow. Can read, write, create presentations, replace text, add slides, add images, and get thumbnails.
34+
35+
36+
37+
## Tools
38+
39+
### `google_slides_read`
40+
41+
Read content from a Google Slides presentation
42+
43+
#### Input
44+
45+
| Parameter | Type | Required | Description |
46+
| --------- | ---- | -------- | ----------- |
47+
| `presentationId` | string | Yes | The ID of the presentation to read |
48+
49+
#### Output
50+
51+
| Parameter | Type | Description |
52+
| --------- | ---- | ----------- |
53+
| `slides` | json | Array of slides with their content |
54+
| `metadata` | json | Presentation metadata including ID, title, and URL |
55+
56+
### `google_slides_write`
57+
58+
Write or update content in a Google Slides presentation
59+
60+
#### Input
61+
62+
| Parameter | Type | Required | Description |
63+
| --------- | ---- | -------- | ----------- |
64+
| `presentationId` | string | Yes | The ID of the presentation to write to |
65+
| `content` | string | Yes | The content to write to the slide |
66+
| `slideIndex` | number | No | The index of the slide to write to \(defaults to first slide\) |
67+
68+
#### Output
69+
70+
| Parameter | Type | Description |
71+
| --------- | ---- | ----------- |
72+
| `updatedContent` | boolean | Indicates if presentation content was updated successfully |
73+
| `metadata` | json | Updated presentation metadata including ID, title, and URL |
74+
75+
### `google_slides_create`
76+
77+
Create a new Google Slides presentation
78+
79+
#### Input
80+
81+
| Parameter | Type | Required | Description |
82+
| --------- | ---- | -------- | ----------- |
83+
| `title` | string | Yes | The title of the presentation to create |
84+
| `content` | string | No | The content to add to the first slide |
85+
| `folderSelector` | string | No | Select the folder to create the presentation in |
86+
| `folderId` | string | No | The ID of the folder to create the presentation in \(internal use\) |
87+
88+
#### Output
89+
90+
| Parameter | Type | Description |
91+
| --------- | ---- | ----------- |
92+
| `metadata` | json | Created presentation metadata including ID, title, and URL |
93+
94+
### `google_slides_replace_all_text`
95+
96+
Find and replace all occurrences of text throughout a Google Slides presentation
97+
98+
#### Input
99+
100+
| Parameter | Type | Required | Description |
101+
| --------- | ---- | -------- | ----------- |
102+
| `presentationId` | string | Yes | The ID of the presentation |
103+
| `findText` | string | Yes | The text to find \(e.g., \{\{placeholder\}\}\) |
104+
| `replaceText` | string | Yes | The text to replace with |
105+
| `matchCase` | boolean | No | Whether the search should be case-sensitive \(default: true\) |
106+
| `pageObjectIds` | string | No | Comma-separated list of slide object IDs to limit replacements to specific slides \(leave empty for all slides\) |
107+
108+
#### Output
109+
110+
| Parameter | Type | Description |
111+
| --------- | ---- | ----------- |
112+
| `occurrencesChanged` | number | Number of text occurrences that were replaced |
113+
| `metadata` | json | Operation metadata including presentation ID and URL |
114+
115+
### `google_slides_add_slide`
116+
117+
Add a new slide to a Google Slides presentation with a specified layout
118+
119+
#### Input
120+
121+
| Parameter | Type | Required | Description |
122+
| --------- | ---- | -------- | ----------- |
123+
| `presentationId` | string | Yes | The ID of the presentation |
124+
| `layout` | string | No | The predefined layout for the slide \(BLANK, TITLE, TITLE_AND_BODY, TITLE_ONLY, SECTION_HEADER, etc.\). Defaults to BLANK. |
125+
| `insertionIndex` | number | No | The optional zero-based index indicating where to insert the slide. If not specified, the slide is added at the end. |
126+
| `placeholderIdMappings` | string | No | JSON array of placeholder mappings to assign custom object IDs to placeholders. Format: \[\{"layoutPlaceholder":\{"type":"TITLE"\},"objectId":"custom_title_id"\}\] |
127+
128+
#### Output
129+
130+
| Parameter | Type | Description |
131+
| --------- | ---- | ----------- |
132+
| `slideId` | string | The object ID of the newly created slide |
133+
| `metadata` | json | Operation metadata including presentation ID, layout, and URL |
134+
135+
### `google_slides_add_image`
136+
137+
Insert an image into a specific slide in a Google Slides presentation
138+
139+
#### Input
140+
141+
| Parameter | Type | Required | Description |
142+
| --------- | ---- | -------- | ----------- |
143+
| `presentationId` | string | Yes | The ID of the presentation |
144+
| `pageObjectId` | string | Yes | The object ID of the slide/page to add the image to |
145+
| `imageUrl` | string | Yes | The publicly accessible URL of the image \(must be PNG, JPEG, or GIF, max 50MB\) |
146+
| `width` | number | No | Width of the image in points \(default: 300\) |
147+
| `height` | number | No | Height of the image in points \(default: 200\) |
148+
| `positionX` | number | No | X position from the left edge in points \(default: 100\) |
149+
| `positionY` | number | No | Y position from the top edge in points \(default: 100\) |
150+
151+
#### Output
152+
153+
| Parameter | Type | Description |
154+
| --------- | ---- | ----------- |
155+
| `imageId` | string | The object ID of the newly created image |
156+
| `metadata` | json | Operation metadata including presentation ID and image URL |
157+
158+
### `google_slides_get_thumbnail`
159+
160+
Generate a thumbnail image of a specific slide in a Google Slides presentation
161+
162+
#### Input
163+
164+
| Parameter | Type | Required | Description |
165+
| --------- | ---- | -------- | ----------- |
166+
| `presentationId` | string | Yes | The ID of the presentation |
167+
| `pageObjectId` | string | Yes | The object ID of the slide/page to get a thumbnail for |
168+
| `thumbnailSize` | string | No | The size of the thumbnail: SMALL \(200px\), MEDIUM \(800px\), or LARGE \(1600px\). Defaults to MEDIUM. |
169+
| `mimeType` | string | No | The MIME type of the thumbnail image: PNG or GIF. Defaults to PNG. |
170+
171+
#### Output
172+
173+
| Parameter | Type | Description |
174+
| --------- | ---- | ----------- |
175+
| `contentUrl` | string | URL to the thumbnail image \(valid for 30 minutes\) |
176+
| `width` | number | Width of the thumbnail in pixels |
177+
| `height` | number | Height of the thumbnail in pixels |
178+
| `metadata` | json | Operation metadata including presentation ID and page object ID |
179+
180+
181+
182+
## Notes
183+
184+
- Category: `tools`
185+
- Type: `google_slides`

apps/docs/content/docs/en/tools/incidentio.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,8 @@ Update an existing schedule in incident.io
364364
| `id` | string | Yes | The ID of the schedule to update |
365365
| `name` | string | No | New name for the schedule |
366366
| `timezone` | string | No | New timezone for the schedule \(e.g., America/New_York\) |
367+
| `config` | string | No | Schedule configuration as JSON string with rotations. Example: \{"rotations": \[\{"name": "Primary", "users": \[\{"id": "user_id"\}\], "handover_start_at": "2024-01-01T09:00:00Z", "handovers": \[\{"interval": 1, "interval_type": "weekly"\}\]\}\]\} |
368+
| `Example` | string | No | No description |
367369

368370
#### Output
369371

apps/docs/content/docs/en/tools/intercom.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ Create or update a company in Intercom
170170
| `plan` | string | No | The company plan name |
171171
| `size` | number | No | The number of employees in the company |
172172
| `industry` | string | No | The industry the company operates in |
173-
| `monthly_spend` | number | No | How much revenue the company generates for your business |
173+
| `monthly_spend` | number | No | How much revenue the company generates for your business. Note: This field truncates floats to whole integers \(e.g., 155.98 becomes 155\) |
174174
| `custom_attributes` | string | No | Custom attributes as JSON object |
175175

176176
#### Output
@@ -199,7 +199,7 @@ Retrieve a single company by ID from Intercom
199199

200200
### `intercom_list_companies`
201201

202-
List all companies from Intercom with pagination support
202+
List all companies from Intercom with pagination support. Note: This endpoint has a limit of 10,000 companies that can be returned using pagination. For datasets larger than 10,000 companies, use the Scroll API instead.
203203

204204
#### Input
205205

@@ -262,7 +262,7 @@ Reply to a conversation as an admin in Intercom
262262
| `conversationId` | string | Yes | Conversation ID to reply to |
263263
| `message_type` | string | Yes | Message type: "comment" or "note" |
264264
| `body` | string | Yes | The text body of the reply |
265-
| `admin_id` | string | Yes | The ID of the admin authoring the reply |
265+
| `admin_id` | string | No | The ID of the admin authoring the reply. If not provided, a default admin \(Operator/Fin\) will be used. |
266266
| `attachment_urls` | string | No | Comma-separated list of image URLs \(max 10\) |
267267

268268
#### Output

0 commit comments

Comments
 (0)