- Actions you can call as workflow steps or agent tools.
- Credentials you can connect through the web app or CLI.
Two built-in paths
Built-in apps currently fall into two broad paths.
Some app names overlap with gateway surfaces. Slack is the common case: connect
slackbot to act as the bot (send messages and any other Slack action) and for External Channels; connect slack only when actions must appear as the installing user. Connecting slack does not register a gateway workspace.
Managed app connections
Managed app connections are the default path for many catalog integrations. In code, generated actions declare a credential for the app. At runtime, Keystroke resolves that credential and routes the tool call through the hosted platform MCP layer. From your workflow or agent, they still look like normal actions: import the generated action from the app package and call.run() or attach it as a tool.
Managed catalog apps that use Keystroke’s platform MCP layer are a hosted-cloud feature.
Static API key apps
Some built-in apps use a normal API key. Exa is the common example. Store the key in the credential vault, then use the package’s actions or MCP tools.Gateway apps
Gateway apps connect a messaging surface to an agent. Slack is the shipped gateway today. Connect the Keystroke Slack App (catalog slugslackbot — not a Personal Slack Account) so the bot OAuth is mirrored into the gateway workspace, then bind channels to agents.
Use the agent’s External Channels panel in the web app, or the CLI:
Use built-in actions
Built-in actions are normal actions. You can use them as workflow steps or agent tools, and their credentials resolve the same way as yours. Import generated tools from@keystrokehq/<app>/actions. For VM sandbox credentials only, import the app from the package root (import { github } from "@keystrokehq/github") and use github.credential — project builds tree-shake unused actions.
Before composing an action, check the connected credentials and execute it once against the intended account. This verifies real IDs, permissions, custom fields, and the mutating path—not only the action schema.
.scope("user"), assign a user credential to the step or tool. See using credentials in code.
Downloadable file results
Some managed catalog tools return downloadable files as{ name, s3url, mimetype }. For text-like MIME types, Keystroke fetches the file and adds a text field so agents can read the content directly. The s3url is kept.
If content is not inlined (binary files, oversized files, or a failed fetch), the result includes a note telling the agent to use the built-in web_fetch tool on the s3url.
Next steps
Connect and manage apps
Connect catalog apps and manage their credential instances.
Using credentials in code
Learn how built-in actions resolve credentials at runtime.
Integrations catalog
Browse available apps and actions.
Custom apps and MCP
Register connectable apps and author them with
defineApp.