@keystrokehq/skills 0.0.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/AGENTS-blurb.md +123 -0
- package/LICENSE +21 -0
- package/README.md +63 -0
- package/keystroke-agent-authoring/SKILL.md +225 -0
- package/keystroke-agent-authoring/evals/evals.json +29 -0
- package/keystroke-agent-authoring/references/messaging-gateways.md +242 -0
- package/keystroke-agent-authoring/references/patterns.md +417 -0
- package/keystroke-agent-authoring/references/prebuilt-integrations.md +879 -0
- package/keystroke-agent-authoring/references/sandbox-and-mcp.md +214 -0
- package/keystroke-agent-authoring/references/source-map.md +182 -0
- package/keystroke-agent-authoring/references/testing.md +85 -0
- package/keystroke-cli-workspace/SKILL.md +93 -0
- package/keystroke-cli-workspace/evals/evals.json +23 -0
- package/keystroke-cli-workspace/references/command-map.md +50 -0
- package/keystroke-cli-workspace/references/credentials-and-connect.md +79 -0
- package/keystroke-cli-workspace/references/project-lifecycle.md +85 -0
- package/keystroke-credential-binding/SKILL.md +509 -0
- package/keystroke-credential-binding/evals/evals.json +29 -0
- package/keystroke-credential-binding/references/cli.md +85 -0
- package/keystroke-credential-binding/references/patterns.md +878 -0
- package/keystroke-credential-binding/references/source-map.md +69 -0
- package/keystroke-data-toolkit/SKILL.md +59 -0
- package/keystroke-data-toolkit/evals/evals.json +23 -0
- package/keystroke-data-toolkit/references/usage.md +79 -0
- package/keystroke-task-authoring/SKILL.md +124 -0
- package/keystroke-task-authoring/evals/evals.json +23 -0
- package/keystroke-task-authoring/references/patterns.md +132 -0
- package/keystroke-task-authoring/references/source-map.md +61 -0
- package/keystroke-trigger-authoring/SKILL.md +189 -0
- package/keystroke-trigger-authoring/evals/evals.json +29 -0
- package/keystroke-trigger-authoring/references/patterns.md +265 -0
- package/keystroke-trigger-authoring/references/source-map.md +128 -0
- package/keystroke-trigger-authoring/references/testing.md +148 -0
- package/keystroke-workflow-as-tool-debugging/SKILL.md +52 -0
- package/keystroke-workflow-as-tool-debugging/evals/evals.json +23 -0
- package/keystroke-workflow-as-tool-debugging/references/playbook.md +77 -0
- package/keystroke-workflow-authoring/SKILL.md +234 -0
- package/keystroke-workflow-authoring/evals/evals.json +29 -0
- package/keystroke-workflow-authoring/references/patterns.md +265 -0
- package/keystroke-workflow-authoring/references/prebuilt-integrations.md +811 -0
- package/keystroke-workflow-authoring/references/runtime-helpers.md +264 -0
- package/keystroke-workflow-authoring/references/source-map.md +108 -0
- package/keystroke-workflow-authoring/references/testing.md +108 -0
- package/package.json +26 -0
|
@@ -0,0 +1,879 @@
|
|
|
1
|
+
# Prebuilt Integration Operations For Agents
|
|
2
|
+
|
|
3
|
+
Before writing a custom `Tool`, inspect the current integration packages first.
|
|
4
|
+
|
|
5
|
+
Use this rule:
|
|
6
|
+
|
|
7
|
+
- most integration packages export shared `Operation` instances
|
|
8
|
+
- in agent code, pass those operations directly in the agent's `tools` array
|
|
9
|
+
- only write a custom `Tool` when no current integration export fits
|
|
10
|
+
- `Step`, `Tool`, and `Operation` are aliases for the same class from `@keystrokehq/core`
|
|
11
|
+
|
|
12
|
+
Important distinction:
|
|
13
|
+
|
|
14
|
+
- integration packages such as Slack, Apollo, Attio, Google, HubSpot, Kalshi, Linear, Perplexity, Polymarket, and Scrapin export real `Operation` instances that work in `tools: [...]`
|
|
15
|
+
|
|
16
|
+
## Agent install, import, and usage pattern
|
|
17
|
+
|
|
18
|
+
Install the package that exports the operation:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
pnpm add @keystroke/integration-slack
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Import the named operation you want:
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import { sendMessage } from '@keystroke/integration-slack/platform/messages';
|
|
28
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
29
|
+
import { Agent } from '@keystrokehq/core';
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Pass the operation to the agent:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
const notifierAgent = new Agent({
|
|
36
|
+
id: 'notifier-agent',
|
|
37
|
+
name: 'Notifier Agent',
|
|
38
|
+
systemPrompt: 'Send the requested Slack message.',
|
|
39
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
40
|
+
credentialSets: [anthropic],
|
|
41
|
+
tools: [sendMessage],
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Replace `sendMessage` with any of the integration operation exports listed below.
|
|
46
|
+
|
|
47
|
+
## `@keystroke/integration-ai`
|
|
48
|
+
|
|
49
|
+
Install:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
pnpm add @keystroke/integration-ai
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Generated operations
|
|
56
|
+
|
|
57
|
+
Prefer subpath imports from `@keystroke/integration-ai/generate`.
|
|
58
|
+
|
|
59
|
+
Import and use:
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
63
|
+
import { Agent } from '@keystrokehq/core';
|
|
64
|
+
import { generateObject, generateText } from '@keystroke/integration-ai/generate';
|
|
65
|
+
|
|
66
|
+
const researchAgent = new Agent({
|
|
67
|
+
id: 'research-agent',
|
|
68
|
+
name: 'Research Agent',
|
|
69
|
+
systemPrompt: 'Research the prompt and return a concise answer.',
|
|
70
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
71
|
+
credentialSets: [anthropic],
|
|
72
|
+
tools: [generateText, generateObject],
|
|
73
|
+
});
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
- `generateObject`: Operation that generates structured object output from a model prompt.
|
|
77
|
+
- `generateText`: Operation that generates plain-text output from a model prompt.
|
|
78
|
+
|
|
79
|
+
### Agent helpers
|
|
80
|
+
|
|
81
|
+
- `ai`: Shared AI credential set.
|
|
82
|
+
- `anthropic`: Anthropic credential set.
|
|
83
|
+
- `openai`: OpenAI credential set.
|
|
84
|
+
|
|
85
|
+
## `@keystroke/integration-apollo`
|
|
86
|
+
|
|
87
|
+
Install:
|
|
88
|
+
|
|
89
|
+
```sh
|
|
90
|
+
pnpm add @keystroke/integration-apollo
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Prefer domain subpath imports such as `@keystroke/integration-apollo/accounts` or `@keystroke/integration-apollo/contacts`.
|
|
94
|
+
|
|
95
|
+
Import and use:
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
99
|
+
import { Agent } from '@keystrokehq/core';
|
|
100
|
+
import { createAccount } from '@keystroke/integration-apollo/accounts';
|
|
101
|
+
import { searchContacts } from '@keystroke/integration-apollo/contacts';
|
|
102
|
+
|
|
103
|
+
const salesAgent = new Agent({
|
|
104
|
+
id: 'sales-agent',
|
|
105
|
+
name: 'Sales Agent',
|
|
106
|
+
systemPrompt: 'Look up Apollo contacts and create accounts when needed.',
|
|
107
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
108
|
+
credentialSets: [anthropic],
|
|
109
|
+
tools: [searchContacts, createAccount],
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Accounts
|
|
114
|
+
|
|
115
|
+
- `bulkCreateAccounts`: Create many Apollo accounts in one call.
|
|
116
|
+
- `createAccount`: Create a single Apollo account.
|
|
117
|
+
- `searchAccounts`: Search Apollo accounts.
|
|
118
|
+
- `updateAccount`: Update an Apollo account.
|
|
119
|
+
- `updateAccountOwner`: Change the owner of an Apollo account.
|
|
120
|
+
- `updateAccountStage`: Change the stage of an Apollo account.
|
|
121
|
+
|
|
122
|
+
### Contacts
|
|
123
|
+
|
|
124
|
+
- `bulkCreateContacts`: Create many Apollo contacts in one call.
|
|
125
|
+
- `createContact`: Create a single Apollo contact.
|
|
126
|
+
- `listContactStages`: List Apollo contact stages.
|
|
127
|
+
- `searchContacts`: Search Apollo contacts.
|
|
128
|
+
- `updateContact`: Update an Apollo contact.
|
|
129
|
+
- `updateContactStage`: Change the stage of an Apollo contact.
|
|
130
|
+
|
|
131
|
+
### Deals
|
|
132
|
+
|
|
133
|
+
- `createDeal`: Create an Apollo deal.
|
|
134
|
+
- `getDeal`: Fetch an Apollo deal by ID.
|
|
135
|
+
- `listDeals`: List Apollo deals.
|
|
136
|
+
- `updateDeal`: Update an Apollo deal.
|
|
137
|
+
|
|
138
|
+
### Enrichment
|
|
139
|
+
|
|
140
|
+
- `bulkEnrichOrganizations`: Enrich many organizations with Apollo data.
|
|
141
|
+
- `bulkEnrichPeople`: Enrich many people with Apollo data.
|
|
142
|
+
- `enrichOrganization`: Enrich one organization with Apollo data.
|
|
143
|
+
- `enrichPerson`: Enrich one person with Apollo data.
|
|
144
|
+
|
|
145
|
+
### Search
|
|
146
|
+
|
|
147
|
+
- `searchOrganizations`: Search organizations in Apollo.
|
|
148
|
+
- `searchPeople`: Search people in Apollo.
|
|
149
|
+
|
|
150
|
+
### Sequences
|
|
151
|
+
|
|
152
|
+
- `addContactsToSequence`: Add contacts to an Apollo sequence.
|
|
153
|
+
- `searchSequences`: Search Apollo sequences.
|
|
154
|
+
- `updateSequenceContactStatus`: Update a contact's status in an Apollo sequence.
|
|
155
|
+
|
|
156
|
+
### Tasks
|
|
157
|
+
|
|
158
|
+
- `createTasks`: Create Apollo tasks.
|
|
159
|
+
- `searchTasks`: Search Apollo tasks.
|
|
160
|
+
|
|
161
|
+
## `@keystroke/integration-attio`
|
|
162
|
+
|
|
163
|
+
Install:
|
|
164
|
+
|
|
165
|
+
```sh
|
|
166
|
+
pnpm add @keystroke/integration-attio
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Prefer domain subpath imports such as `@keystroke/integration-attio/records` or `@keystroke/integration-attio/lists`.
|
|
170
|
+
|
|
171
|
+
Import and use:
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
175
|
+
import { Agent } from '@keystrokehq/core';
|
|
176
|
+
import { createRecord, queryRecords } from '@keystroke/integration-attio/records';
|
|
177
|
+
|
|
178
|
+
const crmAgent = new Agent({
|
|
179
|
+
id: 'crm-agent',
|
|
180
|
+
name: 'CRM Agent',
|
|
181
|
+
systemPrompt: 'Update Attio records and summarize what changed.',
|
|
182
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
183
|
+
credentialSets: [anthropic],
|
|
184
|
+
tools: [queryRecords, createRecord],
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Lists
|
|
189
|
+
|
|
190
|
+
- `addListEntry`: Add an entry to an Attio list.
|
|
191
|
+
- `deleteListEntry`: Remove an entry from an Attio list.
|
|
192
|
+
- `getList`: Fetch an Attio list by ID.
|
|
193
|
+
- `listLists`: List Attio lists.
|
|
194
|
+
- `queryListEntries`: Query entries in an Attio list.
|
|
195
|
+
- `updateListEntry`: Update an Attio list entry.
|
|
196
|
+
- `upsertListEntry`: Create or update an Attio list entry.
|
|
197
|
+
|
|
198
|
+
### Notes
|
|
199
|
+
|
|
200
|
+
- `createNote`: Create an Attio note.
|
|
201
|
+
- `deleteNote`: Delete an Attio note.
|
|
202
|
+
- `getNote`: Fetch an Attio note by ID.
|
|
203
|
+
- `listNotes`: List Attio notes.
|
|
204
|
+
|
|
205
|
+
### Objects
|
|
206
|
+
|
|
207
|
+
- `getObject`: Fetch an Attio object definition.
|
|
208
|
+
- `listAttributes`: List attributes for an Attio object.
|
|
209
|
+
- `listObjects`: List Attio objects.
|
|
210
|
+
|
|
211
|
+
### Records
|
|
212
|
+
|
|
213
|
+
- `createRecord`: Create an Attio record.
|
|
214
|
+
- `deleteRecord`: Delete an Attio record.
|
|
215
|
+
- `getRecord`: Fetch an Attio record by ID.
|
|
216
|
+
- `queryRecords`: Query Attio records.
|
|
217
|
+
- `updateRecord`: Update an Attio record.
|
|
218
|
+
- `upsertRecord`: Create or update an Attio record.
|
|
219
|
+
|
|
220
|
+
### Tasks
|
|
221
|
+
|
|
222
|
+
- `createTask`: Create an Attio task.
|
|
223
|
+
- `deleteTask`: Delete an Attio task.
|
|
224
|
+
- `getTask`: Fetch an Attio task by ID.
|
|
225
|
+
- `listTasks`: List Attio tasks.
|
|
226
|
+
- `updateTask`: Update an Attio task.
|
|
227
|
+
|
|
228
|
+
## `@keystroke/integration-daytona`
|
|
229
|
+
|
|
230
|
+
Install:
|
|
231
|
+
|
|
232
|
+
```sh
|
|
233
|
+
pnpm add @keystroke/integration-daytona
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Import example:
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
import { DaytonaSandbox } from '@keystroke/integration-daytona';
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
This package does not currently export agent operations.
|
|
243
|
+
|
|
244
|
+
It exports sandbox helpers instead:
|
|
245
|
+
|
|
246
|
+
- `cloneFiles`: Copy files into or out of a Daytona-backed sandbox.
|
|
247
|
+
- `DaytonaSandbox`: Create a Daytona-backed sandbox for agents.
|
|
248
|
+
- `DaytonaSandboxProvider`: Configure the Daytona sandbox provider.
|
|
249
|
+
|
|
250
|
+
## `@keystroke/integration-github`
|
|
251
|
+
|
|
252
|
+
Install:
|
|
253
|
+
|
|
254
|
+
```sh
|
|
255
|
+
pnpm add @keystroke/integration-github
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Prefer domain subpath imports such as `@keystroke/integration-github/issues`, `@keystroke/integration-github/pull-requests`, or `@keystroke/integration-github/repos`.
|
|
259
|
+
|
|
260
|
+
Import and use:
|
|
261
|
+
|
|
262
|
+
```ts
|
|
263
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
264
|
+
import { Agent } from '@keystrokehq/core';
|
|
265
|
+
import { getIssue } from '@keystroke/integration-github/issues';
|
|
266
|
+
import { listPullRequests } from '@keystroke/integration-github/pull-requests';
|
|
267
|
+
|
|
268
|
+
const githubAgent = new Agent({
|
|
269
|
+
id: 'github-agent',
|
|
270
|
+
name: 'GitHub Agent',
|
|
271
|
+
systemPrompt: 'Inspect GitHub state and answer with evidence from tools.',
|
|
272
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
273
|
+
credentialSets: [anthropic],
|
|
274
|
+
tools: [getIssue, listPullRequests],
|
|
275
|
+
});
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Common operation groups:
|
|
279
|
+
|
|
280
|
+
- actions: `listWorkflows`, `listWorkflowRuns`, `getWorkflowRun`, `triggerWorkflow`, `rerunWorkflowRun`, `cancelWorkflowRun`
|
|
281
|
+
- contents: `getFileContent`, `createOrUpdateFile`, `deleteFile`
|
|
282
|
+
- git: `compareBranches`, `createBranch`, `deleteBranch`
|
|
283
|
+
- issues: `getIssue`, `listIssues`, `createIssue`, `updateIssue`, `addIssueComment`
|
|
284
|
+
- pull requests: `getPullRequest`, `listPullRequests`, `createPullRequest`, `mergePullRequest`, `requestPullRequestReview`
|
|
285
|
+
- releases: `getRelease`, `listReleases`, `createRelease`, `deleteRelease`
|
|
286
|
+
- repos: `getRepository`, `listRepositories`, `listBranches`, `listTags`
|
|
287
|
+
- search: `searchCode`, `searchIssues`, `searchRepositories`
|
|
288
|
+
- users and orgs: `getAuthenticatedUser`, `getUser`, `listOrganizations`, `listOrgMembers`
|
|
289
|
+
|
|
290
|
+
The package also exposes `connection`, `client`, and `schemas` support surfaces on explicit subpaths. Keep internal provider-app wiring off agent-facing imports.
|
|
291
|
+
|
|
292
|
+
## `@keystroke/integration-google`
|
|
293
|
+
|
|
294
|
+
Install:
|
|
295
|
+
|
|
296
|
+
```sh
|
|
297
|
+
pnpm add @keystroke/integration-google
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Prefer domain subpath imports such as `@keystroke/integration-google/gmail`, `@keystroke/integration-google/sheets`, or `@keystroke/integration-google/calendar`.
|
|
301
|
+
|
|
302
|
+
Import and use:
|
|
303
|
+
|
|
304
|
+
```ts
|
|
305
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
306
|
+
import { Agent } from '@keystrokehq/core';
|
|
307
|
+
import { listCalendarEventsTool, createCalendarEventTool } from '@keystroke/integration-google/calendar';
|
|
308
|
+
import { getEmailTool, sendEmailTool } from '@keystroke/integration-google/gmail';
|
|
309
|
+
import { readSpreadsheetTabTool } from '@keystroke/integration-google/sheets';
|
|
310
|
+
|
|
311
|
+
const googleAgent = new Agent({
|
|
312
|
+
id: 'google-agent',
|
|
313
|
+
name: 'Google Agent',
|
|
314
|
+
systemPrompt: 'Read emails, send replies, manage calendar events, and look up spreadsheet data.',
|
|
315
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
316
|
+
credentialSets: [anthropic],
|
|
317
|
+
tools: [getEmailTool, sendEmailTool, listCalendarEventsTool, createCalendarEventTool, readSpreadsheetTabTool],
|
|
318
|
+
});
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Calendar
|
|
322
|
+
|
|
323
|
+
- `listCalendarsTool`: List all calendars accessible by the authenticated user.
|
|
324
|
+
- `listCalendarEventsTool`: List events from a Google Calendar with optional time range and search filters.
|
|
325
|
+
- `getCalendarEventTool`: Retrieve a single event by ID from a Google Calendar.
|
|
326
|
+
- `createCalendarEventTool`: Create a new event in a Google Calendar. Requires approval.
|
|
327
|
+
- `updateCalendarEventTool`: Update an existing event in a Google Calendar. Requires approval.
|
|
328
|
+
- `deleteCalendarEventTool`: Delete an event from a Google Calendar. Requires approval.
|
|
329
|
+
|
|
330
|
+
### Gmail
|
|
331
|
+
|
|
332
|
+
- `sendEmailTool`: Send an email through Gmail. Requires approval.
|
|
333
|
+
- `getEmailTool`: Retrieve a single email message by ID from Gmail.
|
|
334
|
+
- `listEmailsTool`: List email messages from Gmail with optional filters.
|
|
335
|
+
- `labelEmailTool`: Add or remove labels on a Gmail message. Requires approval.
|
|
336
|
+
|
|
337
|
+
### Sheets
|
|
338
|
+
|
|
339
|
+
- `createSpreadsheetTool`: Create a new Google Sheets spreadsheet. Requires approval.
|
|
340
|
+
- `addSpreadsheetTabTool`: Add a new tab (sheet) to an existing spreadsheet. Requires approval.
|
|
341
|
+
- `readSpreadsheetTabTool`: Read values from a spreadsheet range or tab.
|
|
342
|
+
- `writeSpreadsheetRangeTool`: Write or update values in a spreadsheet range. Requires approval.
|
|
343
|
+
|
|
344
|
+
This package also exports polling triggers (`gmailNewUnreadInboxEmails`, `calendarNewOrUpdatedEvents`) and non-Tool workflow step variants (`sendEmail`, `getEmail`, `listEmails`, `labelEmail`, `createSpreadsheet`, `addSpreadsheetTab`, `readSpreadsheetTab`, `writeSpreadsheetRange`, `listCalendars`, `listCalendarEvents`, `getCalendarEvent`, `createCalendarEvent`, `updateCalendarEvent`, `deleteCalendarEvent`). Those step variants are not agent tools.
|
|
345
|
+
|
|
346
|
+
## `@keystroke/integration-hubspot`
|
|
347
|
+
|
|
348
|
+
Install:
|
|
349
|
+
|
|
350
|
+
```sh
|
|
351
|
+
pnpm add @keystroke/integration-hubspot
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
Prefer explicit subpaths such as `@keystroke/integration-hubspot/connection`,
|
|
355
|
+
`@keystroke/integration-hubspot/triggers`, and domain paths like
|
|
356
|
+
`@keystroke/integration-hubspot/companies` or `@keystroke/integration-hubspot/contacts`.
|
|
357
|
+
|
|
358
|
+
Import and use:
|
|
359
|
+
|
|
360
|
+
```ts
|
|
361
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
362
|
+
import { Agent } from '@keystrokehq/core';
|
|
363
|
+
import { createCompany } from '@keystroke/integration-hubspot/companies';
|
|
364
|
+
import { searchContacts } from '@keystroke/integration-hubspot/contacts';
|
|
365
|
+
|
|
366
|
+
const hubspotAgent = new Agent({
|
|
367
|
+
id: 'hubspot-agent',
|
|
368
|
+
name: 'HubSpot Agent',
|
|
369
|
+
systemPrompt: 'Look up HubSpot contacts and create companies when asked.',
|
|
370
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
371
|
+
credentialSets: [anthropic],
|
|
372
|
+
tools: [searchContacts, createCompany],
|
|
373
|
+
});
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### Companies
|
|
377
|
+
|
|
378
|
+
- `archiveCompany`: Archive a HubSpot company.
|
|
379
|
+
- `createCompany`: Create a HubSpot company.
|
|
380
|
+
- `getCompany`: Fetch a HubSpot company by ID.
|
|
381
|
+
- `listCompanies`: List HubSpot companies.
|
|
382
|
+
- `searchCompanies`: Search HubSpot companies.
|
|
383
|
+
- `updateCompany`: Update a HubSpot company.
|
|
384
|
+
|
|
385
|
+
### Contacts
|
|
386
|
+
|
|
387
|
+
- `archiveContact`: Archive a HubSpot contact.
|
|
388
|
+
- `createContact`: Create a HubSpot contact.
|
|
389
|
+
- `getContact`: Fetch a HubSpot contact by ID.
|
|
390
|
+
- `listContacts`: List HubSpot contacts.
|
|
391
|
+
- `searchContacts`: Search HubSpot contacts.
|
|
392
|
+
- `updateContact`: Update a HubSpot contact.
|
|
393
|
+
|
|
394
|
+
### Deals
|
|
395
|
+
|
|
396
|
+
- `archiveDeal`: Archive a HubSpot deal.
|
|
397
|
+
- `createDeal`: Create a HubSpot deal.
|
|
398
|
+
- `getDeal`: Fetch a HubSpot deal by ID.
|
|
399
|
+
- `listDeals`: List HubSpot deals.
|
|
400
|
+
- `searchDeals`: Search HubSpot deals.
|
|
401
|
+
- `updateDeal`: Update a HubSpot deal.
|
|
402
|
+
|
|
403
|
+
### Tickets
|
|
404
|
+
|
|
405
|
+
- `archiveTicket`: Archive a HubSpot ticket.
|
|
406
|
+
- `createTicket`: Create a HubSpot ticket.
|
|
407
|
+
- `getTicket`: Fetch a HubSpot ticket by ID.
|
|
408
|
+
- `listTickets`: List HubSpot tickets.
|
|
409
|
+
- `searchTickets`: Search HubSpot tickets.
|
|
410
|
+
- `updateTicket`: Update a HubSpot ticket.
|
|
411
|
+
|
|
412
|
+
This package also exports triggers, verification helpers, and example workflows from its root entrypoint. Those are not agent tools.
|
|
413
|
+
|
|
414
|
+
## `@keystroke/integration-kalshi`
|
|
415
|
+
|
|
416
|
+
Install:
|
|
417
|
+
|
|
418
|
+
```sh
|
|
419
|
+
pnpm add @keystroke/integration-kalshi
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
Prefer domain subpath imports such as `@keystroke/integration-kalshi/markets` or `@keystroke/integration-kalshi/portfolio`.
|
|
423
|
+
|
|
424
|
+
Import and use:
|
|
425
|
+
|
|
426
|
+
```ts
|
|
427
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
428
|
+
import { Agent } from '@keystrokehq/core';
|
|
429
|
+
import { getMarkets } from '@keystroke/integration-kalshi/markets';
|
|
430
|
+
import { createOrder } from '@keystroke/integration-kalshi/portfolio';
|
|
431
|
+
|
|
432
|
+
const traderAgent = new Agent({
|
|
433
|
+
id: 'trader-agent',
|
|
434
|
+
name: 'Trader Agent',
|
|
435
|
+
systemPrompt: 'Inspect Kalshi markets and place orders only when instructed.',
|
|
436
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
437
|
+
credentialSets: [anthropic],
|
|
438
|
+
tools: [getMarkets, createOrder],
|
|
439
|
+
});
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### API keys
|
|
443
|
+
|
|
444
|
+
- `getApiKeys`: List Kalshi API keys.
|
|
445
|
+
- `createApiKey`: Create a Kalshi API key.
|
|
446
|
+
- `generateApiKey`: Generate a new Kalshi API key secret.
|
|
447
|
+
- `deleteApiKey`: Delete a Kalshi API key.
|
|
448
|
+
|
|
449
|
+
### Communications
|
|
450
|
+
|
|
451
|
+
- `getRFQs`: List Kalshi RFQs.
|
|
452
|
+
- `getRFQ`: Fetch a Kalshi RFQ by ID.
|
|
453
|
+
- `createRFQ`: Create a Kalshi RFQ.
|
|
454
|
+
- `deleteRFQ`: Delete a Kalshi RFQ.
|
|
455
|
+
- `getQuotes`: List Kalshi quotes.
|
|
456
|
+
- `getQuote`: Fetch a Kalshi quote by ID.
|
|
457
|
+
- `createQuote`: Create a Kalshi quote.
|
|
458
|
+
- `acceptQuote`: Accept a Kalshi quote.
|
|
459
|
+
- `confirmQuote`: Confirm a Kalshi quote.
|
|
460
|
+
- `deleteQuote`: Delete a Kalshi quote.
|
|
461
|
+
- `getCommunicationsID`: Fetch a Kalshi communication object by ID.
|
|
462
|
+
|
|
463
|
+
### Events
|
|
464
|
+
|
|
465
|
+
- `getEvents`: List Kalshi events.
|
|
466
|
+
- `getEvent`: Fetch a Kalshi event by ID.
|
|
467
|
+
- `getEventMetadata`: Fetch metadata for a Kalshi event.
|
|
468
|
+
- `getMultivariateEvents`: List Kalshi multivariate events.
|
|
469
|
+
- `getEventForecastPercentilesHistory`: Get forecast percentile history for an event.
|
|
470
|
+
- `getMarketCandlesticksByEvent`: Get market candlestick data for an event.
|
|
471
|
+
|
|
472
|
+
### Exchange
|
|
473
|
+
|
|
474
|
+
- `getExchangeStatus`: Get the current Kalshi exchange status.
|
|
475
|
+
- `getExchangeAnnouncements`: List Kalshi exchange announcements.
|
|
476
|
+
- `getExchangeSchedule`: Get the Kalshi exchange schedule.
|
|
477
|
+
- `getSeriesFeeChanges`: List Kalshi series fee changes.
|
|
478
|
+
|
|
479
|
+
### Incentive programs
|
|
480
|
+
|
|
481
|
+
- `getIncentivePrograms`: List Kalshi incentive programs.
|
|
482
|
+
|
|
483
|
+
### Live data
|
|
484
|
+
|
|
485
|
+
- `getLiveData`: Fetch one Kalshi live-data feed.
|
|
486
|
+
- `getLiveDatas`: List Kalshi live-data feeds.
|
|
487
|
+
|
|
488
|
+
### Market lifecycle
|
|
489
|
+
|
|
490
|
+
- `getHistoricalMarkets`: List historical Kalshi markets.
|
|
491
|
+
- `getHistoricalMarket`: Fetch a historical Kalshi market by ID.
|
|
492
|
+
- `getHistoricalOrders`: List historical Kalshi orders.
|
|
493
|
+
- `getFillsHistorical`: List historical Kalshi fills.
|
|
494
|
+
- `getMarketCandlesticksHistorical`: Get historical candlestick data for a market.
|
|
495
|
+
- `getHistoricalCutoff`: Get Kalshi's historical-data cutoff details.
|
|
496
|
+
|
|
497
|
+
### Markets
|
|
498
|
+
|
|
499
|
+
- `getMarkets`: List Kalshi markets.
|
|
500
|
+
- `getMarket`: Fetch a Kalshi market by ID.
|
|
501
|
+
- `getMarketOrderbook`: Get the order book for a Kalshi market.
|
|
502
|
+
- `getMarketCandlesticks`: Get candlestick data for a Kalshi market.
|
|
503
|
+
- `batchGetMarketCandlesticks`: Get candlestick data for many Kalshi markets.
|
|
504
|
+
- `getTrades`: List Kalshi trades.
|
|
505
|
+
|
|
506
|
+
### Milestones
|
|
507
|
+
|
|
508
|
+
- `getMilestones`: List Kalshi milestones.
|
|
509
|
+
- `getMilestone`: Fetch a Kalshi milestone by ID.
|
|
510
|
+
|
|
511
|
+
### Multivariate collections
|
|
512
|
+
|
|
513
|
+
- `getMultivariateEventCollections`: List Kalshi multivariate event collections.
|
|
514
|
+
- `getMultivariateEventCollection`: Fetch a Kalshi multivariate event collection by ID.
|
|
515
|
+
- `getMultivariateEventCollectionLookupHistory`: Get lookup history for a multivariate event collection.
|
|
516
|
+
- `lookupTickersForMarketInMultivariateEventCollection`: Look up tickers for a market in a multivariate collection.
|
|
517
|
+
- `createMarketInMultivariateEventCollection`: Create a market inside a multivariate event collection.
|
|
518
|
+
|
|
519
|
+
### Portfolio
|
|
520
|
+
|
|
521
|
+
- `getBalance`: Get Kalshi account balance.
|
|
522
|
+
- `getFills`: List Kalshi fills.
|
|
523
|
+
- `getPositions`: List Kalshi positions.
|
|
524
|
+
- `getSettlements`: List Kalshi settlements.
|
|
525
|
+
- `getSubaccountBalances`: List balances for Kalshi subaccounts.
|
|
526
|
+
- `getSubaccountTransfers`: List Kalshi subaccount transfers.
|
|
527
|
+
- `createSubaccount`: Create a Kalshi subaccount.
|
|
528
|
+
- `applySubaccountTransfer`: Move funds between Kalshi subaccounts.
|
|
529
|
+
- `getPortfolioRestingOrderTotalValue`: Get the total value of resting portfolio orders.
|
|
530
|
+
- `getOrders`: List Kalshi orders.
|
|
531
|
+
- `getOrder`: Fetch a Kalshi order by ID.
|
|
532
|
+
- `createOrder`: Create a Kalshi order.
|
|
533
|
+
- `cancelOrder`: Cancel a Kalshi order.
|
|
534
|
+
- `amendOrder`: Amend a Kalshi order.
|
|
535
|
+
- `decreaseOrder`: Reduce the remaining size of a Kalshi order.
|
|
536
|
+
- `batchCreateOrders`: Create many Kalshi orders in one call.
|
|
537
|
+
- `batchCancelOrders`: Cancel many Kalshi orders in one call.
|
|
538
|
+
- `getOrderQueuePosition`: Get the queue position of one order.
|
|
539
|
+
- `getOrderQueuePositions`: Get queue positions for multiple orders.
|
|
540
|
+
- `getOrderGroups`: List Kalshi order groups.
|
|
541
|
+
- `getOrderGroup`: Fetch a Kalshi order group by ID.
|
|
542
|
+
- `createOrderGroup`: Create a Kalshi order group.
|
|
543
|
+
- `deleteOrderGroup`: Delete a Kalshi order group.
|
|
544
|
+
- `resetOrderGroup`: Reset a Kalshi order group.
|
|
545
|
+
- `triggerOrderGroup`: Trigger a Kalshi order group.
|
|
546
|
+
- `updateOrderGroupLimit`: Update a Kalshi order-group limit.
|
|
547
|
+
|
|
548
|
+
### Primary markets
|
|
549
|
+
|
|
550
|
+
- `getFCMOrders`: List primary-market FCM orders.
|
|
551
|
+
- `getFCMPositions`: List primary-market FCM positions.
|
|
552
|
+
|
|
553
|
+
### Rate limits
|
|
554
|
+
|
|
555
|
+
- `getAccountApiLimits`: Fetch account API rate-limit information.
|
|
556
|
+
|
|
557
|
+
### Series
|
|
558
|
+
|
|
559
|
+
- `getSeries`: Fetch a Kalshi series by ID.
|
|
560
|
+
- `getSeriesList`: List Kalshi series.
|
|
561
|
+
- `getTagsForSeriesCategories`: List tags for Kalshi series categories.
|
|
562
|
+
|
|
563
|
+
### Structured targets
|
|
564
|
+
|
|
565
|
+
- `getStructuredTargets`: List Kalshi structured targets.
|
|
566
|
+
- `getStructuredTarget`: Fetch a Kalshi structured target by ID.
|
|
567
|
+
|
|
568
|
+
### User data
|
|
569
|
+
|
|
570
|
+
- `getUserDataTimestamp`: Get the latest Kalshi user-data timestamp.
|
|
571
|
+
|
|
572
|
+
This package also exports triggers and plain helper functions such as `getTopOfBook` and `listActiveMarkets`. Those helpers are not agent operations unless you wrap them yourself.
|
|
573
|
+
|
|
574
|
+
## `@keystroke/integration-linear`
|
|
575
|
+
|
|
576
|
+
Install:
|
|
577
|
+
|
|
578
|
+
```sh
|
|
579
|
+
pnpm add @keystroke/integration-linear
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
Prefer domain subpath imports such as `@keystroke/integration-linear/issues` or `@keystroke/integration-linear/users`.
|
|
583
|
+
|
|
584
|
+
Import and use:
|
|
585
|
+
|
|
586
|
+
```ts
|
|
587
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
588
|
+
import { Agent } from '@keystrokehq/core';
|
|
589
|
+
import { createIssue, searchIssues } from '@keystroke/integration-linear/issues';
|
|
590
|
+
|
|
591
|
+
const triageAgent = new Agent({
|
|
592
|
+
id: 'triage-agent',
|
|
593
|
+
name: 'Triage Agent',
|
|
594
|
+
systemPrompt: 'Search Linear issues and create new ones when needed.',
|
|
595
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
596
|
+
credentialSets: [anthropic],
|
|
597
|
+
tools: [searchIssues, createIssue],
|
|
598
|
+
});
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
### Comments
|
|
602
|
+
|
|
603
|
+
- `createComment`: Create a Linear comment.
|
|
604
|
+
- `getComment`: Fetch a Linear comment by ID.
|
|
605
|
+
- `listComments`: List Linear comments.
|
|
606
|
+
|
|
607
|
+
### Initiatives
|
|
608
|
+
|
|
609
|
+
- `createInitiative`: Create a Linear initiative.
|
|
610
|
+
- `listInitiatives`: List Linear initiatives.
|
|
611
|
+
- `updateInitiative`: Update a Linear initiative.
|
|
612
|
+
|
|
613
|
+
### Issues
|
|
614
|
+
|
|
615
|
+
- `createIssue`: Create a Linear issue.
|
|
616
|
+
- `getIssue`: Fetch a Linear issue by ID.
|
|
617
|
+
- `removeLabelFromIssue`: Remove a label from a Linear issue.
|
|
618
|
+
- `searchIssues`: Search Linear issues.
|
|
619
|
+
- `updateIssue`: Update a Linear issue.
|
|
620
|
+
|
|
621
|
+
### Projects
|
|
622
|
+
|
|
623
|
+
- `createProject`: Create a Linear project.
|
|
624
|
+
- `getProject`: Fetch a Linear project by ID.
|
|
625
|
+
- `getProjectUpdate`: Fetch a Linear project update by ID.
|
|
626
|
+
- `listProjects`: List Linear projects.
|
|
627
|
+
- `listProjectUpdates`: List updates for a Linear project.
|
|
628
|
+
|
|
629
|
+
### Teams and workflow state
|
|
630
|
+
|
|
631
|
+
- `getTeam`: Fetch a Linear team by ID.
|
|
632
|
+
- `getWorkflowState`: Fetch a Linear workflow state by ID.
|
|
633
|
+
- `listIssueLabels`: List Linear issue labels.
|
|
634
|
+
- `listProjectLabels`: List Linear project labels.
|
|
635
|
+
- `listProjectStatuses`: List Linear project statuses.
|
|
636
|
+
- `listTeams`: List Linear teams.
|
|
637
|
+
- `listWorkflowStates`: List Linear workflow states.
|
|
638
|
+
|
|
639
|
+
### Users
|
|
640
|
+
|
|
641
|
+
- `getUser`: Fetch a Linear user by ID.
|
|
642
|
+
- `listUsers`: List Linear users.
|
|
643
|
+
|
|
644
|
+
### Views
|
|
645
|
+
|
|
646
|
+
- `getCustomView`: Fetch a Linear custom view by ID.
|
|
647
|
+
- `getViewIssues`: List issues from a Linear view.
|
|
648
|
+
- `listViews`: List Linear views.
|
|
649
|
+
|
|
650
|
+
### Webhooks
|
|
651
|
+
|
|
652
|
+
- `createWebhook`: Create a Linear webhook.
|
|
653
|
+
- `deleteWebhook`: Delete a Linear webhook.
|
|
654
|
+
- `listWebhooks`: List Linear webhooks.
|
|
655
|
+
|
|
656
|
+
## `@keystroke/integration-perplexity`
|
|
657
|
+
|
|
658
|
+
Install:
|
|
659
|
+
|
|
660
|
+
```sh
|
|
661
|
+
pnpm add @keystroke/integration-perplexity
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
Prefer subpath imports such as `@keystroke/integration-perplexity/search`, `@keystroke/integration-perplexity/stream`, and `@keystroke/integration-perplexity/generate`.
|
|
665
|
+
|
|
666
|
+
Import and use:
|
|
667
|
+
|
|
668
|
+
```ts
|
|
669
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
670
|
+
import { Agent } from '@keystrokehq/core';
|
|
671
|
+
import { generateText } from '@keystroke/integration-perplexity/generate';
|
|
672
|
+
import { research, search } from '@keystroke/integration-perplexity/search';
|
|
673
|
+
|
|
674
|
+
const researchAgent = new Agent({
|
|
675
|
+
id: 'perplexity-research-agent',
|
|
676
|
+
name: 'Perplexity Research Agent',
|
|
677
|
+
systemPrompt: 'Research the topic and cite the strongest findings.',
|
|
678
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
679
|
+
credentialSets: [anthropic],
|
|
680
|
+
tools: [search, research, generateText],
|
|
681
|
+
});
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
- `generateText`: Generate text with Perplexity.
|
|
685
|
+
- `research`: Run a deeper Perplexity research task.
|
|
686
|
+
- `search`: Run a Perplexity search query.
|
|
687
|
+
- `streamSearch`: Stream Perplexity search results.
|
|
688
|
+
|
|
689
|
+
## `@keystroke/integration-polymarket`
|
|
690
|
+
|
|
691
|
+
Install:
|
|
692
|
+
|
|
693
|
+
```sh
|
|
694
|
+
pnpm add @keystroke/integration-polymarket
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
Prefer domain subpath imports such as `@keystroke/integration-polymarket/markets` or `@keystroke/integration-polymarket/discovery`.
|
|
698
|
+
|
|
699
|
+
Import and use:
|
|
700
|
+
|
|
701
|
+
```ts
|
|
702
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
703
|
+
import { Agent } from '@keystrokehq/core';
|
|
704
|
+
import { getMarket } from '@keystroke/integration-polymarket/markets';
|
|
705
|
+
import { search } from '@keystroke/integration-polymarket/discovery';
|
|
706
|
+
|
|
707
|
+
const marketAgent = new Agent({
|
|
708
|
+
id: 'market-agent',
|
|
709
|
+
name: 'Market Agent',
|
|
710
|
+
systemPrompt: 'Search Polymarket and summarize the most relevant market.',
|
|
711
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
712
|
+
credentialSets: [anthropic],
|
|
713
|
+
tools: [search, getMarket],
|
|
714
|
+
});
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
### Data
|
|
718
|
+
|
|
719
|
+
- `getLiveVolume`: Get live trading volume for a market.
|
|
720
|
+
- `getMarketHolders`: List holders for a market.
|
|
721
|
+
- `getOpenInterest`: Get open interest for a market.
|
|
722
|
+
- `getUserPositions`: List positions for a user.
|
|
723
|
+
- `listTrades`: List trades.
|
|
724
|
+
|
|
725
|
+
### Discovery
|
|
726
|
+
|
|
727
|
+
- `getProfile`: Fetch a Polymarket profile.
|
|
728
|
+
- `getSeries`: Fetch a Polymarket series by ID.
|
|
729
|
+
- `getSportsMarketTypes`: List sports market types.
|
|
730
|
+
- `getSportsMetadata`: Fetch sports metadata.
|
|
731
|
+
- `getSportsTeams`: List sports teams.
|
|
732
|
+
- `listSeries`: List Polymarket series.
|
|
733
|
+
- `listTags`: List Polymarket tags.
|
|
734
|
+
- `search`: Search Polymarket markets and entities.
|
|
735
|
+
|
|
736
|
+
### Events
|
|
737
|
+
|
|
738
|
+
- `getEvent`: Fetch a Polymarket event by ID.
|
|
739
|
+
- `getEventBySlug`: Fetch a Polymarket event by slug.
|
|
740
|
+
- `getEventTags`: List tags for a Polymarket event.
|
|
741
|
+
- `listEvents`: List Polymarket events.
|
|
742
|
+
|
|
743
|
+
### Markets
|
|
744
|
+
|
|
745
|
+
- `getMarket`: Fetch a Polymarket market by ID.
|
|
746
|
+
- `getMarketBySlug`: Fetch a Polymarket market by slug.
|
|
747
|
+
- `getMarketTags`: List tags for a Polymarket market.
|
|
748
|
+
- `listMarkets`: List Polymarket markets.
|
|
749
|
+
|
|
750
|
+
### Order book
|
|
751
|
+
|
|
752
|
+
- `batchGetOrderBooks`: Fetch order books for many markets.
|
|
753
|
+
- `batchGetSpreads`: Fetch spreads for many markets.
|
|
754
|
+
- `getOrderBook`: Fetch an order book for one market.
|
|
755
|
+
|
|
756
|
+
### Pricing
|
|
757
|
+
|
|
758
|
+
- `batchGetPrices`: Fetch prices for many markets.
|
|
759
|
+
- `getMidpoint`: Fetch the midpoint price for a market.
|
|
760
|
+
- `getPrice`: Fetch the current price for a market.
|
|
761
|
+
- `getPriceHistory`: Fetch historical price data for a market.
|
|
762
|
+
- `listPrices`: List prices across markets.
|
|
763
|
+
|
|
764
|
+
## `@keystroke/integration-scrapin`
|
|
765
|
+
|
|
766
|
+
Install:
|
|
767
|
+
|
|
768
|
+
```sh
|
|
769
|
+
pnpm add @keystroke/integration-scrapin
|
|
770
|
+
```
|
|
771
|
+
|
|
772
|
+
Prefer domain subpath imports such as `@keystroke/integration-scrapin/persons` or `@keystroke/integration-scrapin/companies`.
|
|
773
|
+
|
|
774
|
+
Import and use:
|
|
775
|
+
|
|
776
|
+
```ts
|
|
777
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
778
|
+
import { Agent } from '@keystrokehq/core';
|
|
779
|
+
import { getCompanyProfile } from '@keystroke/integration-scrapin/companies';
|
|
780
|
+
import { searchPersons } from '@keystroke/integration-scrapin/persons';
|
|
781
|
+
|
|
782
|
+
const prospectingAgent = new Agent({
|
|
783
|
+
id: 'prospecting-agent',
|
|
784
|
+
name: 'Prospecting Agent',
|
|
785
|
+
systemPrompt: 'Research the company and find the most relevant people.',
|
|
786
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
787
|
+
credentialSets: [anthropic],
|
|
788
|
+
tools: [getCompanyProfile, searchPersons],
|
|
789
|
+
});
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
### Companies
|
|
793
|
+
|
|
794
|
+
- `getCompanyProfile`: Fetch a company profile.
|
|
795
|
+
- `searchCompanyByDomain`: Find a company by domain.
|
|
796
|
+
|
|
797
|
+
### Company activities
|
|
798
|
+
|
|
799
|
+
- `getCompanyPost`: Fetch one company post.
|
|
800
|
+
- `getCompanyPosts`: List company posts.
|
|
801
|
+
- `getPostComments`: List comments for a post.
|
|
802
|
+
- `getPostReactions`: List reactions for a post.
|
|
803
|
+
- `getPostReposts`: List reposts for a post.
|
|
804
|
+
|
|
805
|
+
### Jobs
|
|
806
|
+
|
|
807
|
+
- `searchJobs`: Search jobs.
|
|
808
|
+
|
|
809
|
+
### Person activities
|
|
810
|
+
|
|
811
|
+
- `getPersonComments`: List comments for a person's content.
|
|
812
|
+
- `getPersonPost`: Fetch one person post.
|
|
813
|
+
- `getPersonPosts`: List person posts.
|
|
814
|
+
- `getPersonReactions`: List reactions for a person's content.
|
|
815
|
+
|
|
816
|
+
### Persons
|
|
817
|
+
|
|
818
|
+
- `getPersonProfile`: Fetch a person profile.
|
|
819
|
+
- `matchPerson`: Match a person from partial identifying data.
|
|
820
|
+
- `resolvePersonByEmail`: Resolve a person from an email address.
|
|
821
|
+
- `searchPersons`: Search people.
|
|
822
|
+
|
|
823
|
+
## `@keystroke/integration-slack`
|
|
824
|
+
|
|
825
|
+
Install:
|
|
826
|
+
|
|
827
|
+
```sh
|
|
828
|
+
pnpm add @keystroke/integration-slack
|
|
829
|
+
```
|
|
830
|
+
|
|
831
|
+
Prefer mode/domain imports such as `@keystroke/integration-slack/platform/messages` or `@keystroke/integration-slack/platform/users`.
|
|
832
|
+
|
|
833
|
+
Import and use:
|
|
834
|
+
|
|
835
|
+
```ts
|
|
836
|
+
import { anthropic } from '@keystroke/integration-ai';
|
|
837
|
+
import { Agent } from '@keystrokehq/core';
|
|
838
|
+
import { sendMessage } from '@keystroke/integration-slack/platform/messages';
|
|
839
|
+
import { listUsers } from '@keystroke/integration-slack/platform/users';
|
|
840
|
+
|
|
841
|
+
const slackAgent = new Agent({
|
|
842
|
+
id: 'slack-agent',
|
|
843
|
+
name: 'Slack Agent',
|
|
844
|
+
systemPrompt: 'Look up the right Slack user and send the requested message.',
|
|
845
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
846
|
+
credentialSets: [anthropic],
|
|
847
|
+
tools: [listUsers, sendMessage],
|
|
848
|
+
});
|
|
849
|
+
```
|
|
850
|
+
|
|
851
|
+
### Channels
|
|
852
|
+
|
|
853
|
+
- `archiveChannel`: Archive a Slack channel.
|
|
854
|
+
- `createChannel`: Create a Slack channel.
|
|
855
|
+
- `getChannelInfo`: Fetch Slack channel metadata.
|
|
856
|
+
- `inviteToChannel`: Invite users to a Slack channel.
|
|
857
|
+
- `listChannels`: List Slack channels.
|
|
858
|
+
- `setChannelTopic`: Set a Slack channel topic.
|
|
859
|
+
|
|
860
|
+
### Messages
|
|
861
|
+
|
|
862
|
+
- `deleteMessage`: Delete a Slack message.
|
|
863
|
+
- `getPermalink`: Get a permalink for a Slack message.
|
|
864
|
+
- `sendEphemeral`: Send an ephemeral Slack message.
|
|
865
|
+
- `sendMessage`: Send a Slack message.
|
|
866
|
+
- `updateMessage`: Update a Slack message.
|
|
867
|
+
|
|
868
|
+
### Reactions
|
|
869
|
+
|
|
870
|
+
- `addReaction`: Add a reaction to a Slack message.
|
|
871
|
+
- `removeReaction`: Remove a reaction to a Slack message.
|
|
872
|
+
|
|
873
|
+
### Users
|
|
874
|
+
|
|
875
|
+
- `getUserInfo`: Fetch Slack user details.
|
|
876
|
+
- `listUsers`: List Slack users.
|
|
877
|
+
- `lookupUserByEmail`: Find a Slack user by email address.
|
|
878
|
+
|
|
879
|
+
This package also exports Slack triggers and verification helpers from its root entrypoint. Those are not agent tools.
|