Example requests
Ask your coding agent which service you want to use. It can wire up the app, credential, and actions that need it.“Connect our HubSpot account so our SDR agent can read and update deals.”
“Connect Slackbot so the team can message the data analyst agent in Slack, and schedule regular reports.”
“Read the Pylon documentation, create a custom API integration, and add actions that match the endpoints our support agent needs.”
Apps vs credentials
An app is a service Keystroke can connect to: Granola, Google Workspace, Slack, Salesforce, Snowflake, and the rest of the integration catalog. A credential is one connected account for that app: an API key, OAuth connection, or managed connection instance. A single app can have several credentials, for example one organization-wide Hubspot connection and a project-level Hubspot connection with additional Hubspot permissions.“Integration” is synonymous with “app”. An app is the user-facing thing you connect, and credential is the runtime binding your code consumes.
Connect apps and credentials
Keystroke supports several connection paths, depending on what you’re building.
You can browse our 1,000+ built-in integrations in the app catalog, or jump to custom apps and MCP to learn more about connecting custom apps and MCP servers.
Credential scopes
Every credential instance is available at one of three scopes:
When building agents and workflows, Keystroke will automatically resolve credentials for each action (agent tools or workflow steps) in this order:
- An explicit selection (a credential assignment on the step, tool, or poll consumer).
- A pinned scope from
.scope("organization"),.scope("project"), or.scope("user"). - The project default.
- The organization default.
- Throw a missing-credentials error.
.scope("user") on the action, then assign that user’s credential to the workflow step, agent tool, or poll consumer. See using credentials in code.
Credentials on the platform
Credentials live in the platform: they’re scoped to your organization, project, or user, and materialized on demand when a deployed project runs. Deploying does not upload.env or local secrets, so connect credentials against your cloud project with the web app or CLI.
How code consumes credentials
Credentials are declared on actions, not on agents or workflows directly. For a new credentialed custom integration, define the app once and create actions from it:defineApp binds the credential for you. Built-in catalog packages export actions the same way. See custom apps and MCP for catalog registration and the Connect flow, and using credentials in code for scopes and resolution.
Agents and workflows consume credentials indirectly when they call that action as a tool or step.
Platform API keys
App credentials are different from Keystroke platform API keys. Platform API keys authenticate your own systems to Keystroke’s platform API and are managed under Settings → API keys or withkeystroke api-key. App credentials authenticate Keystroke runs to third-party apps.
LLM provider keys
App credentials are also different from LLM provider API keys. To run model inference on your own OpenAI, Anthropic, Google, Groq, or xAI keys (BYOK), connect them under Settings → Managed services or withkeystroke managed-services connect — not through the apps catalog. See Managed services.
Next steps
Connect and manage apps
Use the web app and CLI to connect, scope, rotate, and revoke credentials.
Built-in integrations
Use catalog apps and their generated actions.
Using credentials in code
Declare credentials on actions and control resolution with scopes.
Custom apps and MCP
Register connectable apps and author them with
defineApp.