---
title: Connected apps
description: The apps the owner has connected or could connect, and a card that asks them to connect one. 2 tools.
group: integrations
tools: [integrations.list, integrations.connect]
source: [packages/agents/src/tools/toolkits.ts, packages/integrations/src/catalog.ts]
generated: true
---

> Roadstar docs for agents. Every page, as markdown: https://docs.roadstar.app/llms.txt

Beyond mail, Drive, Calendar and QuickBooks, the owner can connect other apps. Each connected app adds a group of its own, named after the app, with that app's tools. They don't have pages here: browse them with `browse_tools`, as any group.

`list` shows what is connected, what could be, and what isn't ready yet. When work needs an app that isn't connected, `connect` puts a card in front of the owner. Say in a line what it will let you do, and carry on with the rest of the work.

## How to use it

What `find_tools` sends with these tools, word for word:

> The owner's connected apps and the ones they could connect. When work needs an app that isn't connected, offer the card with connect, saying in a line what it lets you do.

## Tools

| Tool | What it does | Owner's yes |
| --- | --- | --- |
| [integrations.list](#list) | The apps connected now, the ones the owner could connect, and those not ready yet | No |
| [integrations.connect](#connect) | Offer the owner a card that connects an app, by its key from list | No |

## list

`integrations.list` · The apps connected now, the ones the owner could connect, and those not ready yet.

**Owner's yes:** No. Nothing of the owner's changes.

No input.

Returns:

```ts
{
  apps: {
    name: string;
    app: string;
    tools: number;
  }[];
  connected: {
    status?: "needs_reconnect" | "removing" | "removed";
    integration: string;
    account: string | null;
  }[];
  canConnect: {
    integration: string;
    app: string;
  }[];
  notYet: string[];
}
```

## connect

`integrations.connect` · Offer the owner a card that connects an app, by its key from list.

**Owner's yes:** No. It makes something new.\
**Your work:** not listed on Home; the change shows on the record itself.

| Input | Type | Required | What it is | Limits |
| --- | --- | --- | --- | --- |
| `integration` | text | yes |  | 1–100 characters |
| `why` | text | no | One line to the owner | up to 200 characters |

Returns:

```ts
{
  error: string;
  message: string;
  notYet?: never;
  card?: never;
} | {
  notYet: string;
  error?: never;
  message?: never;
  card?: never;
} | {
  card: string;
  error?: never;
  message?: never;
  notYet?: never;
}
```
