Integrations
Connect your accounts once and the agent can act in them — read a Slack thread, draft a Gmail reply, open a GitHub PR, update a Notion page, file a Linear issue, or push a HubSpot deal. Aura Workshop reaches 100+ services two ways: direct OAuth for a curated set of first-party providers, and the Composio cloud path for the long tail of ~100 toolkits. Both land connected accounts in the same place, and both turn into tools the agent picks up automatically. Beyond hosted integrations, you can wire in any MCP server — stdio or HTTP — to add tools of your own.
Connecting an account
Everything lives under Settings → Integrations. Each provider shows a Connect button; connecting is a standard OAuth consent flow, so you never paste API keys for supported providers.
- Click Connect on a provider.
- Your browser opens that provider's consent screen.
- Approve the requested scopes.
- Aura stores the connection and the token auto-injects into any matching skills, MCP servers, and bot listeners.
Disconnecting revokes the token and un-injects it everywhere it was in use. Connections are
recorded in the connections table with a source of local
or cloud depending on the mode you connected through.
http://localhost:18800/oauth/callback (some providers use the
secureinsights.ai HTTPS bouncer instead). The client IDs for supported providers
ship with the app — there is nothing to register yourself.
Local vs. Cloud (oauth_mode)
The oauth_mode setting decides how a connection is brokered. Both modes populate
the same connections table and feed the same consumers — the difference is where
the token lives and how the toolset is exposed.
| Local (direct OAuth) | Cloud (Composio) | |
|---|---|---|
| Coverage | 18 first-party providers with our own OAuth client IDs. | ~100 toolkits through Composio's managed auth. |
| Where the token lives | Your encrypted local database (access + refresh tokens, AES-256-GCM). | Held by Composio; Aura keeps only a thin reference row. |
| How tools appear | Tokens injected into skills / HTTP MCP headers at run time; refreshed in the background. | The toolkit is mounted as an MCP server per account, scoped by an x-composio-user-id header. |
| Auth style | PKCE (S256) with a state token; 10-minute flow TTL. | Composio-hosted consent URL; connection resolved on return. |
Pick whichever fits: Local mode keeps credentials entirely on your machine; Cloud mode trades that for far broader coverage without registering apps yourself. You can use both at once — the mode is chosen per connection.
Supported services
The direct-OAuth providers ship with the app and connect fully locally:
| Group | Providers |
|---|---|
| Tier 1 | Google (Gmail, Calendar, Drive, Docs/Sheets), Microsoft 365, Slack, Discord, GitHub, Linear, Notion, Atlassian (Jira / Confluence) |
| Tier 2 | Zoom, HubSpot, Salesforce, Pipedrive, Intercom, Asana, ClickUp, Todoist, Harvest, Airtable |
The Composio cloud path adds roughly 100 more toolkits across communication, project management, CRM, calendars, knowledge bases, files, and developer tools — the same surface the bundled skills draw on. Toolkits split into managed-OAuth, API-key, and connect-on-demand styles, and Aura picks the right connect flow for each.
How connections become tools
A connection is only useful if the agent can call it. Aura wires each connection into three kinds of consumer, automatically:
-
Skills — a skill's YAML frontmatter can declare
requires_connection: slack(or any provider id). At run time the framework finds the active connection and injects it — as environment variables for stdio/bash steps or anAuthorization: Bearerheader for HTTP calls — so the skill just works once the account is connected. See Skills & Agent Tools. -
MCP servers — a server can also declare
requires_connection; its tools inherit the injected token. In Cloud mode, connecting a Composio toolkit is mounting an MCP server for that account, so its tools appear in the agent's toolset with no extra config. - Listeners — bot integrations (Slack, Discord, Telegram, …) resolve their bot token from the connection at start time, and for Composio-managed bots Aura auto-mounts the bot's own toolkit so the agent can act as that bot. See Automation & Workflows.
Background token refresh keeps everything live — direct-OAuth tokens are refreshed shortly before they expire, so long-running agents and schedules don't fall over on an expired token.
MCP servers
Model Context Protocol (MCP) servers extend the agent with tools beyond the built-ins by connecting to external services and data sources. Add and manage them under Settings → MCPs. Aura speaks two transports:
| Transport | How it works |
|---|---|
| stdio | Launches a local process (Node.js, Python, a compiled binary) and speaks JSON-RPC over stdin/stdout. A rolling stderr buffer is kept so a crash surfaces the real traceback, not just a "broken pipe". |
| HTTP | POSTs to a remote MCP endpoint and parses JSON or SSE. Auth resolves from custom headers, then an OAuth token, then a session id, with a 30-second connect/request timeout. |
Adding a server
- Go to Settings → MCPs and click Add MCP Server.
- Name it and choose the transport.
- stdio: enter the launch command (e.g.
npx) and its arguments, plus any environment variables to pass to the child process. - HTTP: enter the server URL and, optionally, OAuth credentials or custom headers (Bearer token, API key, etc.).
- Pick an isolation mode (see below) and click Connect. A status dot shows connected (green) or disconnected (red).
On connect, tool definitions are cached so they appear instantly in the tool picker without re-querying the server each task. You can also import server configs from JSON (standard MCP schema) to share setups across machines or teammates.
# Add an MCP server (stdio transport)
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "File System MCP",
"transport": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"],
"env": {},
"isolation": "shared"
}' \
http://localhost:18800/api/mcp/servers
# Add an MCP server (HTTP transport with custom auth header)
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Cloud MCP",
"transport": "http",
"url": "https://mcp.example.com/mcp",
"headers": { "Authorization": "Bearer my-token" },
"isolation": "per_task"
}' \
http://localhost:18800/api/mcp/servers
Isolation modes
| Mode | Behaviour |
|---|---|
| shared | One connection is reused across all tasks. Efficient, but state persists between tasks. |
| per_task | Each task gets its own server instance for complete state isolation. For stdio servers,
the child is spawned per task with AURA_TASK_ID, AURA_WORKSPACE_DIR,
and a task-scoped data directory, then killed when the task ends. HTTP servers stay
shared. |
Plugins
Installed CLI tools can register as MCP servers without any code changes via a plugin
manifest that carries either a stdio command + args or an HTTP URL + transport. Manage these
under Settings → Plugins, or programmatically via /api/plugins.
Aura as an MCP server
The relationship runs both ways: Aura Workshop also exposes its own tools as an MCP
server at POST /api/mcp/v1, so external MCP clients — such as Claude Code, Cursor,
Kiro, Kilo, or Vibe — can call back into Aura. The exposed surface covers the core file and
search tools: bash, read_file, write_file,
edit_file, glob, grep, list_dir,
web_search, and web_fetch.
Point your client's MCP config at your Aura instance's /api/mcp/v1 endpoint and
authenticate with your AURA_WEB_TOKEN. For the full endpoint reference, see the
API Reference.