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