One gateway
How Era reaches every app: native connectors, vendors' MCP servers and Era channels — one catalogue, one permission rule, usable from chat, workflows, the SDK, the CLI and MCP.
Every app Era can use goes through one gateway. It doesn't matter whether you call a tool from the desktop chat, a workflow step, the SDK or an MCP client: the same connection, the same permission check and the same error messages apply.
Three ways Era reaches an app
| Kind | What it is | Examples |
|---|---|---|
| Native connector | Era calls the app's API itself. Each app has typed tools (steps) and, for many apps, triggers. | HubSpot, Slack, Notion, GitHub, Stripe, Google Sheets, Wikipedia |
| Remote MCP server | Era signs in to the vendor's own MCP server with OAuth and uses whatever tools that server offers. | Notion, Linear, Stripe, Atlassian, Cloudflare |
| Era channel | Era's own inbox channels. | WhatsApp, Instagram |
When an app is reachable more than one way, it is still one entry in Apps (/apps). The coverage row at the top of that page shows the totals: apps, actions (tools), triggers, and what you have connected.
Who may run what
The same rule applies to every tool:
-
Every app stands for an Era module.
- CRMs → Sales
- Payment and accounting apps → Finance
- HR apps → People
- Help desks and customer messaging → Inbox
- Mailing and social tools → Campaigns
- Databases → Data
- Analytics → Reports
- Anything else (docs, developer tools, search…) → Apps
- If that module is switched off in your workspace, the app falls under Apps.
-
A step that only reads needs view access to that module. A step that changes something needs edit access. A step counts as read-only only when it is:
- a GET request, or
- named as a read (get, list, search…) without a changing verb.
Anything else counts as a change.
-
Who "the person" is depends on where the step runs:
- App or desktop: the signed-in member.
- Workflow: its Run as person (whoever deployed its trigger, otherwise its owner). Never a system user.
- API key or OAuth token: the key's scopes ∩ the member's current role.
-
Which connection is used: a connection of that app that the person may use — their own, one shared with them, or the company's.
- Era never falls back to another app.
- If nothing is connected, the call fails with "App is not connected".
Example: a sales member can use HubSpot through the company's shared connection. They cannot read Stripe payments with it, because Stripe needs Finance access.
Triggers
An app's triggers appear as workflow trigger blocks. They come in two kinds:
- Instant (webhook): the app calls Era. When the app signs its deliveries, Era verifies the signature with the secret you set before it starts the workflow.
- Scheduled check (polling): Era asks the app at a sensible interval, for example RSS, Gmail, Outlook and IMAP.
Use it from code
import { createEra } from '@getera/sdk'
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const { data, coverage } = await era.apps.list({ q: 'crm' }) // the catalogue
const tools = await era.apps.tools('hubspot') // tools + argument schemas
await era.apps.hubspot.hubspot_get_contacts({ limit: 10 }) // one tool by name
await era.apps.call('wikipedia', 'wikipedia_search', { query: 'Istanbul' })HTTP endpoints:
GET /api/v1/appslists the apps.GET /api/v1/apps/{app}returns one app with its tools and triggers.GET /api/v1/apps/{app}/toolslists the app's tools.POST /api/v1/apps/{app}/tools/{tool}runs a tool. Send{ "arguments": { … }, "connection": "auto" | "mine" | "workspace" | "<id>" }.
Over MCP (Claude Code, Codex, Cursor), the gateway is three tools instead of thousands:
apps__searchfinds an app.apps__toolslists its tools.apps__callruns one.
In a workflow, use the Era connected app step (pick the app, name the tool, give the arguments) or the app's own block.
More apps through Composio or Pipedream (optional)
To reach apps Era doesn't have natively, an owner can add a provider key under Apps → Secrets:
- Composio:
COMPOSIO_API_KEY - Pipedream Connect:
PIPEDREAM_CLIENT_ID,PIPEDREAM_CLIENT_SECRETandPIPEDREAM_PROJECT_ID. Optionally setPIPEDREAM_ENVIRONMENT.
Those apps are addressed as composio:<toolkit> or pipedream:<app> everywhere an app id goes. Searching works like this: GET /api/v1/apps?provider=composio&q=….
They follow the same permission rule as every other app. Each member connects their own account at the provider; only a manager can add a company account.
This is off by default: Era ships no provider key.