Skip to content

Commit 20a8d85

Browse files
waleedlatif1claude
andauthored
improvement(integrations): validate and expand devin, cursor, and greptile (#4820)
* improvement(integrations): validate and expand devin, cursor, and greptile - devin: fix missing org_id path segment on all session endpoints, add 7 session sub-resource tools (list messages/attachments, get/append/replace tags, archive, terminate), pagination, and is_archived output - cursor: add get_api_key_info, list_models, list_repositories tools - greptile: align block and docs - normalize array outputs to default [] and tighten types * refactor(cursor): simplify list_repositories v2 array normalization Collapse the redundant `?? []` + `Array.isArray` double-guard into a single Array.isArray check, per PR review feedback. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(devin): scope session-tag mapping to tag ops and normalize array tag inputs - Only map sessionTags into the tools tags param for append/replace operations, preventing stale sessionTags state from clobbering create_session tags - Fall back to a wired tags value when sessionTags is empty for tag operations - Normalize tag inputs (string or wired string[]) via normalizeTags so array values from other blocks no longer throw on .split Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(cursor): restore base64 file data in legacy download_artifact metadata The legacy CursorBlock exposes only content + metadata (no v2 file output), so metadata.data was the only way legacy-block workflows could access downloaded artifact bytes. Restore the base64 data field and document it in the outputs/type instead of dropping it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(devin): coerce terminateArchive to archive flag for boolean-wired input * docs(integrations): regenerate tool docs for new devin and cursor operations --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 911586a commit 20a8d85

29 files changed

Lines changed: 1646 additions & 99 deletions

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

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,57 @@ Download a generated artifact file from a cloud agent. Returns the file for exec
211211
| --------- | ---- | ----------- |
212212
| `file` | file | Downloaded artifact file stored in execution files |
213213

214+
### `cursor_list_models`
215+
216+
List the models available for launching cloud agents. Returns API-aligned fields only.
217+
218+
#### Input
219+
220+
| Parameter | Type | Required | Description |
221+
| --------- | ---- | -------- | ----------- |
222+
| `apiKey` | string | Yes | Cursor API key |
223+
224+
#### Output
225+
226+
| Parameter | Type | Description |
227+
| --------- | ---- | ----------- |
228+
| `models` | array | Array of available model names |
229+
230+
### `cursor_list_repositories`
231+
232+
List the GitHub repositories accessible to the authenticated user. Returns API-aligned fields only.
233+
234+
#### Input
235+
236+
| Parameter | Type | Required | Description |
237+
| --------- | ---- | -------- | ----------- |
238+
| `apiKey` | string | Yes | Cursor API key |
239+
240+
#### Output
241+
242+
| Parameter | Type | Description |
243+
| --------- | ---- | ----------- |
244+
| `repositories` | array | Array of accessible repositories |
245+
|`owner` | string | Repository owner |
246+
|`name` | string | Repository name |
247+
|`repository` | string | Repository URL |
248+
249+
### `cursor_get_api_key_info`
250+
251+
Retrieve details about the API key currently in use. Returns API-aligned fields only.
252+
253+
#### Input
254+
255+
| Parameter | Type | Required | Description |
256+
| --------- | ---- | -------- | ----------- |
257+
| `apiKey` | string | Yes | Cursor API key |
258+
259+
#### Output
260+
261+
| Parameter | Type | Description |
262+
| --------- | ---- | ----------- |
263+
| `apiKeyName` | string | Name of the API key |
264+
| `createdAt` | string | API key creation timestamp |
265+
| `userEmail` | string | Email of the key owner |
266+
214267

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

Lines changed: 189 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ Create a new Devin session with a prompt. Devin will autonomously work on the ta
5050
| Parameter | Type | Required | Description |
5151
| --------- | ---- | -------- | ----------- |
5252
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
53+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
5354
| `prompt` | string | Yes | The task prompt for Devin to work on |
5455
| `playbookId` | string | No | Optional playbook ID to guide the session |
5556
| `maxAcuLimit` | number | No | Maximum ACU limit for the session |
@@ -67,10 +68,11 @@ Create a new Devin session with a prompt. Devin will autonomously work on the ta
6768
| `createdAt` | number | Unix timestamp when the session was created |
6869
| `updatedAt` | number | Unix timestamp when the session was last updated |
6970
| `acusConsumed` | number | ACUs consumed by the session |
70-
| `tags` | json | Tags associated with the session |
71-
| `pullRequests` | json | Pull requests created during the session |
71+
| `tags` | json | Tags associated with the session \(array of strings\) |
72+
| `pullRequests` | json | Pull requests created during the session \(\[\{pr_url, pr_state\}\]\) |
7273
| `structuredOutput` | json | Structured output from the session |
7374
| `playbookId` | string | Associated playbook ID |
75+
| `isArchived` | boolean | Whether the session is archived |
7476

7577
### `devin_get_session`
7678

@@ -81,6 +83,7 @@ Retrieve details of an existing Devin session including status, tags, pull reque
8183
| Parameter | Type | Required | Description |
8284
| --------- | ---- | -------- | ----------- |
8385
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
86+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
8487
| `sessionId` | string | Yes | The session ID to retrieve |
8588

8689
#### Output
@@ -95,10 +98,11 @@ Retrieve details of an existing Devin session including status, tags, pull reque
9598
| `createdAt` | number | Unix timestamp when the session was created |
9699
| `updatedAt` | number | Unix timestamp when the session was last updated |
97100
| `acusConsumed` | number | ACUs consumed by the session |
98-
| `tags` | json | Tags associated with the session |
99-
| `pullRequests` | json | Pull requests created during the session |
101+
| `tags` | json | Tags associated with the session \(array of strings\) |
102+
| `pullRequests` | json | Pull requests created during the session \(\[\{pr_url, pr_state\}\]\) |
100103
| `structuredOutput` | json | Structured output from the session |
101104
| `playbookId` | string | Associated playbook ID |
105+
| `isArchived` | boolean | Whether the session is archived |
102106

103107
### `devin_list_sessions`
104108

@@ -109,7 +113,9 @@ List Devin sessions in the organization. Returns up to 100 sessions by default.
109113
| Parameter | Type | Required | Description |
110114
| --------- | ---- | -------- | ----------- |
111115
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
116+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
112117
| `limit` | number | No | Maximum number of sessions to return \(1-200, default: 100\) |
118+
| `after` | string | No | Pagination cursor \(endCursor from a previous response\) to fetch the next page |
113119

114120
#### Output
115121

@@ -123,7 +129,14 @@ List Devin sessions in the organization. Returns up to 100 sessions by default.
123129
|`title` | string | Session title |
124130
|`createdAt` | number | Creation timestamp \(Unix\) |
125131
|`updatedAt` | number | Last updated timestamp \(Unix\) |
126-
|`tags` | json | Session tags |
132+
|`tags` | json | Session tags \(array of strings\) |
133+
|`acusConsumed` | number | ACUs consumed by the session |
134+
|`pullRequests` | json | Pull requests created during the session \(\[\{pr_url, pr_state\}\]\) |
135+
|`playbookId` | string | Associated playbook ID |
136+
|`isArchived` | boolean | Whether the session is archived |
137+
| `endCursor` | string | Pagination cursor for the next page, or null if last page |
138+
| `hasNextPage` | boolean | Whether more sessions are available |
139+
| `total` | number | Total number of sessions, if provided |
127140

128141
### `devin_send_message`
129142

@@ -134,6 +147,7 @@ Send a message to a Devin session. If the session is suspended, it will be autom
134147
| Parameter | Type | Required | Description |
135148
| --------- | ---- | -------- | ----------- |
136149
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
150+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
137151
| `sessionId` | string | Yes | The session ID to send the message to |
138152
| `message` | string | Yes | The message to send to Devin |
139153

@@ -149,9 +163,177 @@ Send a message to a Devin session. If the session is suspended, it will be autom
149163
| `createdAt` | number | Unix timestamp when the session was created |
150164
| `updatedAt` | number | Unix timestamp when the session was last updated |
151165
| `acusConsumed` | number | ACUs consumed by the session |
152-
| `tags` | json | Tags associated with the session |
153-
| `pullRequests` | json | Pull requests created during the session |
166+
| `tags` | json | Tags associated with the session \(array of strings\) |
167+
| `pullRequests` | json | Pull requests created during the session \(\[\{pr_url, pr_state\}\]\) |
154168
| `structuredOutput` | json | Structured output from the session |
155169
| `playbookId` | string | Associated playbook ID |
170+
| `isArchived` | boolean | Whether the session is archived |
171+
172+
### `devin_list_session_messages`
173+
174+
List the messages exchanged in a Devin session, including messages from both the user and Devin.
175+
176+
#### Input
177+
178+
| Parameter | Type | Required | Description |
179+
| --------- | ---- | -------- | ----------- |
180+
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
181+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
182+
| `sessionId` | string | Yes | The session ID to list messages for |
183+
| `limit` | number | No | Maximum number of messages to return \(1-200, default: 100\) |
184+
| `after` | string | No | Pagination cursor \(endCursor from a previous response\) to fetch the next page |
185+
186+
#### Output
187+
188+
| Parameter | Type | Description |
189+
| --------- | ---- | ----------- |
190+
| `messages` | array | Messages exchanged in the session |
191+
|`eventId` | string | Unique identifier for the message event |
192+
|`source` | string | Origin of the message \(devin or user\) |
193+
|`message` | string | The message content |
194+
|`createdAt` | number | Unix timestamp when the message was created |
195+
| `endCursor` | string | Pagination cursor for the next page, or null if last page |
196+
| `hasNextPage` | boolean | Whether more messages are available |
197+
| `total` | number | Total number of messages, if provided |
198+
199+
### `devin_list_session_attachments`
200+
201+
List the files uploaded to or produced by a Devin session.
202+
203+
#### Input
204+
205+
| Parameter | Type | Required | Description |
206+
| --------- | ---- | -------- | ----------- |
207+
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
208+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
209+
| `sessionId` | string | Yes | The session ID to list attachments for |
210+
211+
#### Output
212+
213+
| Parameter | Type | Description |
214+
| --------- | ---- | ----------- |
215+
| `attachments` | array | Attachments associated with the session |
216+
|`attachmentId` | string | Unique identifier for the attachment |
217+
|`name` | string | Attachment file name |
218+
|`url` | string | URL to download the attachment |
219+
|`source` | string | Origin of the attachment \(devin or user\) |
220+
|`contentType` | string | MIME type of the attachment |
221+
222+
### `devin_get_session_tags`
223+
224+
Retrieve the tags currently applied to a Devin session.
225+
226+
#### Input
227+
228+
| Parameter | Type | Required | Description |
229+
| --------- | ---- | -------- | ----------- |
230+
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
231+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
232+
| `sessionId` | string | Yes | The session ID to retrieve tags for |
233+
234+
#### Output
235+
236+
| Parameter | Type | Description |
237+
| --------- | ---- | ----------- |
238+
| `tags` | json | Tags applied to the session \(array of strings\) |
239+
240+
### `devin_append_session_tags`
241+
242+
Add tags to a Devin session without removing existing tags (max 50 tags total).
243+
244+
#### Input
245+
246+
| Parameter | Type | Required | Description |
247+
| --------- | ---- | -------- | ----------- |
248+
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
249+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
250+
| `sessionId` | string | Yes | The session ID to add tags to |
251+
| `tags` | string | Yes | Tags to append to the session \(comma-separated string or array of strings\) |
252+
253+
#### Output
254+
255+
| Parameter | Type | Description |
256+
| --------- | ---- | ----------- |
257+
| `tags` | json | Updated list of tags on the session \(array of strings\) |
258+
259+
### `devin_replace_session_tags`
260+
261+
Replace all tags on a Devin session with a new set of tags (max 50 tags).
262+
263+
#### Input
264+
265+
| Parameter | Type | Required | Description |
266+
| --------- | ---- | -------- | ----------- |
267+
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
268+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
269+
| `sessionId` | string | Yes | The session ID to replace tags on |
270+
| `tags` | string | Yes | Tags that will overwrite the existing tags \(comma-separated string or array of strings\) |
271+
272+
#### Output
273+
274+
| Parameter | Type | Description |
275+
| --------- | ---- | ----------- |
276+
| `tags` | json | Updated list of tags on the session \(array of strings\) |
277+
278+
### `devin_archive_session`
279+
280+
Archive a Devin session. Archived sessions can still be viewed but cannot be modified or resumed.
281+
282+
#### Input
283+
284+
| Parameter | Type | Required | Description |
285+
| --------- | ---- | -------- | ----------- |
286+
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
287+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
288+
| `sessionId` | string | Yes | The session ID to archive |
289+
290+
#### Output
291+
292+
| Parameter | Type | Description |
293+
| --------- | ---- | ----------- |
294+
| `sessionId` | string | Unique identifier for the session |
295+
| `url` | string | URL to view the session in the Devin UI |
296+
| `status` | string | Session status \(new, claimed, running, exit, error, suspended, resuming\) |
297+
| `statusDetail` | string | Detailed status \(working, waiting_for_user, waiting_for_approval, finished, inactivity, etc.\) |
298+
| `title` | string | Session title |
299+
| `createdAt` | number | Unix timestamp when the session was created |
300+
| `updatedAt` | number | Unix timestamp when the session was last updated |
301+
| `acusConsumed` | number | ACUs consumed by the session |
302+
| `tags` | json | Tags associated with the session \(array of strings\) |
303+
| `pullRequests` | json | Pull requests created during the session \(\[\{pr_url, pr_state\}\]\) |
304+
| `structuredOutput` | json | Structured output from the session |
305+
| `playbookId` | string | Associated playbook ID |
306+
| `isArchived` | boolean | Whether the session is archived |
307+
308+
### `devin_terminate_session`
309+
310+
Terminate a Devin session. Optionally archive the session instead of permanently terminating it.
311+
312+
#### Input
313+
314+
| Parameter | Type | Required | Description |
315+
| --------- | ---- | -------- | ----------- |
316+
| `apiKey` | string | Yes | Devin API key \(service user credential starting with cog_\) |
317+
| `orgId` | string | Yes | Devin organization ID \(prefixed with org-\) |
318+
| `sessionId` | string | Yes | The session ID to terminate |
319+
| `archive` | boolean | No | Archive the session instead of permanently terminating it \(default: false\) |
320+
321+
#### Output
322+
323+
| Parameter | Type | Description |
324+
| --------- | ---- | ----------- |
325+
| `sessionId` | string | Unique identifier for the session |
326+
| `url` | string | URL to view the session in the Devin UI |
327+
| `status` | string | Session status \(new, claimed, running, exit, error, suspended, resuming\) |
328+
| `statusDetail` | string | Detailed status \(working, waiting_for_user, waiting_for_approval, finished, inactivity, etc.\) |
329+
| `title` | string | Session title |
330+
| `createdAt` | number | Unix timestamp when the session was created |
331+
| `updatedAt` | number | Unix timestamp when the session was last updated |
332+
| `acusConsumed` | number | ACUs consumed by the session |
333+
| `tags` | json | Tags associated with the session \(array of strings\) |
334+
| `pullRequests` | json | Pull requests created during the session \(\[\{pr_url, pr_state\}\]\) |
335+
| `structuredOutput` | json | Structured output from the session |
336+
| `playbookId` | string | Associated playbook ID |
337+
| `isArchived` | boolean | Whether the session is archived |
156338

157339

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
77

88
<BlockInfoCard
99
type="greptile"
10-
color="#e5e5e5"
10+
color="#5DE195"
1111
/>
1212

1313
{/* MANUAL-CONTENT-START:intro */}

apps/sim/app/(landing)/integrations/data/integrations.json

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3052,9 +3052,21 @@
30523052
{
30533053
"name": "Download Artifact",
30543054
"description": "Download a generated artifact file from a cloud agent."
3055+
},
3056+
{
3057+
"name": "List Models",
3058+
"description": "List the models available for launching cloud agents."
3059+
},
3060+
{
3061+
"name": "List Repositories",
3062+
"description": "List the GitHub repositories accessible to the authenticated user."
3063+
},
3064+
{
3065+
"name": "Get API Key Info",
3066+
"description": "Retrieve details about the API key currently in use."
30553067
}
30563068
],
3057-
"operationCount": 9,
3069+
"operationCount": 12,
30583070
"triggers": [],
30593071
"triggerCount": 0,
30603072
"authType": "api-key",
@@ -3298,9 +3310,37 @@
32983310
{
32993311
"name": "Send Message",
33003312
"description": "Send a message to a Devin session. If the session is suspended, it will be automatically resumed. Returns the updated session state."
3313+
},
3314+
{
3315+
"name": "List Session Messages",
3316+
"description": "List the messages exchanged in a Devin session, including messages from both the user and Devin."
3317+
},
3318+
{
3319+
"name": "List Session Attachments",
3320+
"description": "List the files uploaded to or produced by a Devin session."
3321+
},
3322+
{
3323+
"name": "Get Session Tags",
3324+
"description": "Retrieve the tags currently applied to a Devin session."
3325+
},
3326+
{
3327+
"name": "Append Session Tags",
3328+
"description": "Add tags to a Devin session without removing existing tags (max 50 tags total)."
3329+
},
3330+
{
3331+
"name": "Replace Session Tags",
3332+
"description": "Replace all tags on a Devin session with a new set of tags (max 50 tags)."
3333+
},
3334+
{
3335+
"name": "Archive Session",
3336+
"description": "Archive a Devin session. Archived sessions can still be viewed but cannot be modified or resumed."
3337+
},
3338+
{
3339+
"name": "Terminate Session",
3340+
"description": "Terminate a Devin session. Optionally archive the session instead of permanently terminating it."
33013341
}
33023342
],
3303-
"operationCount": 4,
3343+
"operationCount": 11,
33043344
"triggers": [],
33053345
"triggerCount": 0,
33063346
"authType": "api-key",
@@ -6470,7 +6510,7 @@
64706510
"name": "Greptile",
64716511
"description": "AI-powered codebase search and Q&A",
64726512
"longDescription": "Query and search codebases using natural language with Greptile. Get AI-generated answers about your code, find relevant files, and understand complex codebases.",
6473-
"bgColor": "#e5e5e5",
6513+
"bgColor": "#5DE195",
64746514
"iconName": "GreptileIcon",
64756515
"docsUrl": "https://docs.sim.ai/tools/greptile",
64766516
"operations": [

0 commit comments

Comments
 (0)