Connections
Integrations your users link once, everything else reuses.
Each user links their accounts with OAuth or an API key. The kit keeps the credentials and exposes the accounts as two tools, over a central API and MCP, to agents, workflows, Brain and your own systems.
Providers, and the doors around them.
Embed it, or run it once for everything.
Inside the agent serverOne option on the module you already run.
PilotooModule.forRoot({
connections: {
providers: [githubProvider(), myProvider],
tools: true, // connections_search, connections_execute
publicApi: true, // /api/tools/* and /mcp
},
});In your own NestJS appControllers and providers, without the agent server.
@Module({
controllers: [...connectionControllers],
providers: [
...connectionProviders(
{ providers: [githubProvider(), gmailProvider()], publicApi: true },
{ env: 'ENV', postgres: DatabaseService, toolRegistry: 'TOOL_REGISTRY' },
),
],
})
export class AppModule {}As one central serviceMany servers, desktops and MCP clients share the same accounts.
CONNECTIONS_REMOTE_URL=https://connect.example.com
CONNECTIONS_REMOTE_TOKEN=<access token>Built so a credential never leaks into a prompt.
- The model never sees a token
Credentials stay encrypted in a vault on the server; callers use two tools.
- Refreshed before expiry
A lease serialises refreshes, so one account is refreshed once.
- Several accounts per provider
Each user may link more than one, and an admin may link one for the whole organisation.
- Roles decide who may connect
Separate roles for using the tools and for administering providers.
- Audited
An audit log for admins, pruned on a schedule you set.
- Your gateways
Wrap a service of your own as a provider, by URL or worker.
Who calls the accounts.
Turn on a block to see how it uses the connections.
WebDesktopMobileYour systems · HTTPAny MCP client