Skip to content

Commit 232de7e

Browse files
committed
feat(tools): added grain and circleback
1 parent ab3a3d1 commit 232de7e

39 files changed

+3261
-36
lines changed

apps/docs/components/icons.tsx

Lines changed: 43 additions & 0 deletions
Large diffs are not rendered by default.

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
BrainIcon,
1414
BrowserUseIcon,
1515
CalendlyIcon,
16+
CirclebackIcon,
1617
ClayIcon,
1718
ConfluenceIcon,
1819
CursorIcon,
@@ -40,6 +41,7 @@ import {
4041
GoogleSlidesIcon,
4142
GoogleVaultIcon,
4243
GrafanaIcon,
44+
GrainIcon,
4345
HubspotIcon,
4446
HuggingFaceIcon,
4547
HunterIOIcon,
@@ -128,6 +130,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
128130
asana: AsanaIcon,
129131
browser_use: BrowserUseIcon,
130132
calendly: CalendlyIcon,
133+
circleback: CirclebackIcon,
131134
clay: ClayIcon,
132135
confluence: ConfluenceIcon,
133136
cursor: CursorIcon,
@@ -154,6 +157,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
154157
google_slides: GoogleSlidesIcon,
155158
google_vault: GoogleVaultIcon,
156159
grafana: GrafanaIcon,
160+
grain: GrainIcon,
157161
hubspot: HubspotIcon,
158162
huggingface: HuggingFaceIcon,
159163
hunter: HunterIOIcon,
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: Circleback
3+
description: AI-powered meeting notes and action items
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="circleback"
10+
color="linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)"
11+
/>
12+
13+
## Usage Instructions
14+
15+
Receive meeting notes, action items, transcripts, and recordings when meetings are processed. Circleback uses webhooks to push data to your workflows.
16+
17+
18+
19+
20+
21+
## Notes
22+
23+
- Category: `triggers`
24+
- Type: `circleback`
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
---
2+
title: Grain
3+
description: Access meeting recordings, transcripts, and AI summaries
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="grain"
10+
color="#F6FAF9"
11+
/>
12+
13+
## Usage Instructions
14+
15+
Integrate Grain into your workflow. Access meeting recordings, transcripts, highlights, and AI-generated summaries. Can also trigger workflows based on Grain webhook events.
16+
17+
18+
19+
## Tools
20+
21+
### `grain_list_recordings`
22+
23+
List recordings from Grain with optional filters and pagination
24+
25+
#### Input
26+
27+
| Parameter | Type | Required | Description |
28+
| --------- | ---- | -------- | ----------- |
29+
| `cursor` | string | No | Pagination cursor for next page |
30+
| `beforeDatetime` | string | No | Only recordings before this ISO8601 timestamp |
31+
| `afterDatetime` | string | No | Only recordings after this ISO8601 timestamp |
32+
| `participantScope` | string | No | Filter: "internal" or "external" |
33+
| `titleSearch` | string | No | Search term to filter by recording title |
34+
| `teamId` | string | No | Filter by team UUID |
35+
| `meetingTypeId` | string | No | Filter by meeting type UUID |
36+
| `includeHighlights` | boolean | No | Include highlights/clips in response |
37+
| `includeParticipants` | boolean | No | Include participant list in response |
38+
| `includeAiSummary` | boolean | No | Include AI-generated summary |
39+
40+
#### Output
41+
42+
| Parameter | Type | Description |
43+
| --------- | ---- | ----------- |
44+
| `recordings` | array | Array of recording objects |
45+
46+
### `grain_get_recording`
47+
48+
Get details of a single recording by ID
49+
50+
#### Input
51+
52+
| Parameter | Type | Required | Description |
53+
| --------- | ---- | -------- | ----------- |
54+
| `recordingId` | string | Yes | The recording UUID |
55+
| `includeHighlights` | boolean | No | Include highlights/clips |
56+
| `includeParticipants` | boolean | No | Include participant list |
57+
| `includeAiSummary` | boolean | No | Include AI summary |
58+
| `includeCalendarEvent` | boolean | No | Include calendar event data |
59+
| `includeHubspot` | boolean | No | Include HubSpot associations |
60+
61+
#### Output
62+
63+
| Parameter | Type | Description |
64+
| --------- | ---- | ----------- |
65+
| `id` | string | Recording UUID |
66+
| `title` | string | Recording title |
67+
| `start_datetime` | string | ISO8601 start timestamp |
68+
| `end_datetime` | string | ISO8601 end timestamp |
69+
| `duration_ms` | number | Duration in milliseconds |
70+
| `media_type` | string | audio, transcript, or video |
71+
| `source` | string | Recording source \(zoom, meet, teams, etc.\) |
72+
| `url` | string | URL to view in Grain |
73+
| `thumbnail_url` | string | Thumbnail image URL |
74+
| `tags` | array | Array of tag strings |
75+
| `teams` | array | Teams the recording belongs to |
76+
| `meeting_type` | object | Meeting type info \(id, name, scope\) |
77+
| `highlights` | array | Highlights \(if included\) |
78+
| `participants` | array | Participants \(if included\) |
79+
| `ai_summary` | object | AI summary text \(if included\) |
80+
| `calendar_event` | object | Calendar event data \(if included\) |
81+
| `hubspot` | object | HubSpot associations \(if included\) |
82+
83+
### `grain_get_transcript`
84+
85+
Get the full transcript of a recording
86+
87+
#### Input
88+
89+
| Parameter | Type | Required | Description |
90+
| --------- | ---- | -------- | ----------- |
91+
| `recordingId` | string | Yes | The recording UUID |
92+
93+
#### Output
94+
95+
| Parameter | Type | Description |
96+
| --------- | ---- | ----------- |
97+
| `transcript` | array | Array of transcript sections |
98+
99+
### `grain_list_teams`
100+
101+
List all teams in the workspace
102+
103+
#### Input
104+
105+
| Parameter | Type | Required | Description |
106+
| --------- | ---- | -------- | ----------- |
107+
108+
#### Output
109+
110+
| Parameter | Type | Description |
111+
| --------- | ---- | ----------- |
112+
| `teams` | array | Array of team objects |
113+
114+
### `grain_list_meeting_types`
115+
116+
List all meeting types in the workspace
117+
118+
#### Input
119+
120+
| Parameter | Type | Required | Description |
121+
| --------- | ---- | -------- | ----------- |
122+
123+
#### Output
124+
125+
| Parameter | Type | Description |
126+
| --------- | ---- | ----------- |
127+
| `meeting_types` | array | Array of meeting type objects |
128+
129+
### `grain_create_hook`
130+
131+
Create a webhook to receive recording events
132+
133+
#### Input
134+
135+
| Parameter | Type | Required | Description |
136+
| --------- | ---- | -------- | ----------- |
137+
| `hookUrl` | string | Yes | Webhook endpoint URL \(must respond 2xx\) |
138+
| `filterBeforeDatetime` | string | No | Filter: recordings before this date |
139+
| `filterAfterDatetime` | string | No | Filter: recordings after this date |
140+
| `filterParticipantScope` | string | No | Filter: "internal" or "external" |
141+
| `filterTeamId` | string | No | Filter: specific team UUID |
142+
| `filterMeetingTypeId` | string | No | Filter: specific meeting type |
143+
| `includeHighlights` | boolean | No | Include highlights in webhook payload |
144+
| `includeParticipants` | boolean | No | Include participants in webhook payload |
145+
| `includeAiSummary` | boolean | No | Include AI summary in webhook payload |
146+
147+
#### Output
148+
149+
| Parameter | Type | Description |
150+
| --------- | ---- | ----------- |
151+
| `id` | string | Hook UUID |
152+
| `enabled` | boolean | Whether hook is active |
153+
| `hook_url` | string | The webhook URL |
154+
| `filter` | object | Applied filters |
155+
| `include` | object | Included fields |
156+
| `inserted_at` | string | ISO8601 creation timestamp |
157+
158+
### `grain_list_hooks`
159+
160+
List all webhooks for the account
161+
162+
#### Input
163+
164+
| Parameter | Type | Required | Description |
165+
| --------- | ---- | -------- | ----------- |
166+
167+
#### Output
168+
169+
| Parameter | Type | Description |
170+
| --------- | ---- | ----------- |
171+
| `hooks` | array | Array of hook objects |
172+
173+
### `grain_delete_hook`
174+
175+
Delete a webhook by ID
176+
177+
#### Input
178+
179+
| Parameter | Type | Required | Description |
180+
| --------- | ---- | -------- | ----------- |
181+
| `hookId` | string | Yes | The hook UUID to delete |
182+
183+
#### Output
184+
185+
| Parameter | Type | Description |
186+
| --------- | ---- | ----------- |
187+
| `success` | boolean | True when webhook was successfully deleted |
188+
189+
190+
191+
## Notes
192+
193+
- Category: `tools`
194+
- Type: `grain`
Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Memory
3-
description: Store and retrieve conversation history
3+
description: Add memory store
44
---
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
@@ -10,94 +10,95 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
1010
color="#F64F9E"
1111
/>
1212

13-
## Overview
13+
## Usage Instructions
14+
15+
Integrate Memory into the workflow. Can add, get a memory, get all memories, and delete memories.
1416

15-
The Memory block stores conversation history for agents. Each memory is identified by a `conversationId` that you provide. Multiple agents can share the same memory by using the same `conversationId`.
1617

17-
Memory stores only user and assistant messages. System messages are not stored—they are configured in the Agent block and prefixed at runtime.
1818

1919
## Tools
2020

2121
### `memory_add`
2222

23-
Add a message to memory. Creates a new memory if the `conversationId` doesn't exist, or appends to existing memory.
23+
Add a new memory to the database or append to existing memory with the same ID.
2424

2525
#### Input
2626

2727
| Parameter | Type | Required | Description |
2828
| --------- | ---- | -------- | ----------- |
29-
| `conversationId` | string | Yes | Unique identifier for the conversation (e.g., `user-123`, `session-abc`) |
30-
| `role` | string | Yes | Message role: `user` or `assistant` |
31-
| `content` | string | Yes | Message content |
29+
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). If a memory with this conversationId already exists, the new message will be appended to it. |
30+
| `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. |
31+
| `role` | string | Yes | Role for agent memory \(user, assistant, or system\) |
32+
| `content` | string | Yes | Content for agent memory |
3233

3334
#### Output
3435

3536
| Parameter | Type | Description |
3637
| --------- | ---- | ----------- |
37-
| `success` | boolean | Whether the operation succeeded |
38-
| `memories` | array | Updated memory array |
39-
| `error` | string | Error message if failed |
38+
| `success` | boolean | Whether the memory was added successfully |
39+
| `memories` | array | Array of memory objects including the new or updated memory |
40+
| `error` | string | Error message if operation failed |
4041

4142
### `memory_get`
4243

43-
Retrieve memory by conversation ID.
44+
Retrieve memory by conversationId. Returns matching memories.
4445

4546
#### Input
4647

4748
| Parameter | Type | Required | Description |
4849
| --------- | ---- | -------- | ----------- |
49-
| `conversationId` | string | Yes | Conversation identifier |
50+
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). Returns memories for this conversation. |
51+
| `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. |
5052

5153
#### Output
5254

5355
| Parameter | Type | Description |
5456
| --------- | ---- | ----------- |
55-
| `success` | boolean | Whether the operation succeeded |
56-
| `memories` | array | Array of messages with `role` and `content` |
57-
| `error` | string | Error message if failed |
57+
| `success` | boolean | Whether the memory was retrieved successfully |
58+
| `memories` | array | Array of memory objects with conversationId and data fields |
59+
| `message` | string | Success or error message |
60+
| `error` | string | Error message if operation failed |
5861

5962
### `memory_get_all`
6063

61-
Retrieve all memories for the current workspace.
64+
Retrieve all memories from the database
65+
66+
#### Input
67+
68+
| Parameter | Type | Required | Description |
69+
| --------- | ---- | -------- | ----------- |
6270

6371
#### Output
6472

6573
| Parameter | Type | Description |
6674
| --------- | ---- | ----------- |
67-
| `success` | boolean | Whether the operation succeeded |
68-
| `memories` | array | All memory objects with `conversationId` and `data` fields |
69-
| `error` | string | Error message if failed |
75+
| `success` | boolean | Whether all memories were retrieved successfully |
76+
| `memories` | array | Array of all memory objects with key, conversationId, and data fields |
77+
| `message` | string | Success or error message |
78+
| `error` | string | Error message if operation failed |
7079

7180
### `memory_delete`
7281

73-
Delete memory by conversation ID.
82+
Delete memories by conversationId.
7483

7584
#### Input
7685

7786
| Parameter | Type | Required | Description |
7887
| --------- | ---- | -------- | ----------- |
79-
| `conversationId` | string | Yes | Conversation identifier to delete |
88+
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). Deletes all memories for this conversation. |
89+
| `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. |
8090

8191
#### Output
8292

8393
| Parameter | Type | Description |
8494
| --------- | ---- | ----------- |
85-
| `success` | boolean | Whether the operation succeeded |
86-
| `message` | string | Confirmation message |
87-
| `error` | string | Error message if failed |
88-
89-
## Agent Memory Types
95+
| `success` | boolean | Whether the memory was deleted successfully |
96+
| `message` | string | Success or error message |
97+
| `error` | string | Error message if operation failed |
9098

91-
When using memory with an Agent block, you can configure how conversation history is managed:
9299

93-
| Type | Description |
94-
| ---- | ----------- |
95-
| **Full Conversation** | Stores all messages, limited by model's context window (uses 90% to leave room for response) |
96-
| **Sliding Window (Messages)** | Keeps the last N messages (default: 10) |
97-
| **Sliding Window (Tokens)** | Keeps messages that fit within a token limit (default: 4000) |
98100

99101
## Notes
100102

101-
- Memory is scoped per workspace—workflows in the same workspace share the memory store
102-
- Use unique `conversationId` values to keep conversations separate (e.g., session IDs, user IDs, or UUIDs)
103-
- System messages belong in the Agent block configuration, not in memory
103+
- Category: `blocks`
104+
- Type: `memory`

0 commit comments

Comments
 (0)