# Overview

An agent gets far more useful once it can reach the tools your team already uses. For instance, your support agent can check GitHub to answer "Is the login bug fixed yet?"

## What connects to an agent

| Kind          | What it does                                                      | Learn more                                                           |
| ------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------- |
| Connector     | gives the agent tools to call, such as GitHub's `list_issues`     | [Catalog](https://getstream.io/agents/docs/connectors/catalog/)                          |
| Channel       | lets people talk to the agent in Slack, WhatsApp, iMessage or SMS | [Channels](https://getstream.io/agents/docs/connectors/channels/)                        |
| Your function | runs your own code when the agent calls it                        | [Tool calling and dispatch](https://getstream.io/agents/docs/tool-calling-and-dispatch/) |

Your function runs in your server, or in your app on the user's device or in their browser, and the agent gets only its answer.

## Quickstart

1. **Get the CLI and pick your app**

   The `getstream agents` commands are only in the beta CLI. Install it, then pick or create the Stream app your agent runs in:

   ```sh
   curl -fsSL https://getstream.io/cli/beta/install.sh | bash
   getstream init
   ```

   For more, see [Stream app setup](https://getstream.io/agents/docs/quickstart/#stream-app-setup).

2. **Connect GitHub**

   Connect the company's GitHub account as an app connection labelled `company`:

   ```sh
   getstream agents connections create github --label company
   ```

   GitHub's consent opens in your browser. Sign in as the company's GitHub account and click **Authorize**. The CLI prints `Connected: github / company`.

   To stay in the terminal, pass a GitHub token on stdin instead, such as the GitHub CLI's:

   ```sh
   gh auth token | getstream agents connections create github --label company --token -
   ```

3. **Name it in the agent**

   In your project folder, create `agents/assistant/agent.yaml`:

   ```yaml title="agents/assistant/agent.yaml"
   name: assistant # an internal assistant for your team
   mode: text
   llm: llm-fast
   connectors:
     - name: github
       connection: company # the label of a connection the app owns
   ```

4. **Ask**

   ```sh
   getstream agents test assistant --sync
   ```

   Ask: "What are the open issues in GetStream/awesome-ai-news?" The CLI prints `Tool github__list_issues ran`, and the agent lists the open issues.

## Whose account

A connector named alone, such as `- linear`, uses a user connection: each user's own account. Add `connection` to use an app connection, one account the app owns:

| Whose account   | In `agent.yaml`                  | Who connects it                                                | Example              | Learn more                                                    |
| --------------- | -------------------------------- | -------------------------------------------------------------- | -------------------- | ------------------------------------------------------------- |
| App connection  | `connection`, a label or an id   | you, once, with the CLI or in the Dashboard                    | the company's GitHub | [App connection](https://getstream.io/agents/docs/connectors/shared-account/)     |
| User connection | a name alone, such as `- linear` | each user, in the Dashboard test chat or on a page of your app | their Linear issues  | [User connection](https://getstream.io/agents/docs/connectors/each-user-account/) |

We recommend an app connection for company tools like GitHub, so your users never have to sign in. Use a user connection when the agent should act as that person, for instance to answer "Which Linear issues are assigned to me?"

## Going further

- [Catalog](https://getstream.io/agents/docs/connectors/catalog/): Every built-in connector, what it does, and how it signs in.
- [App connection](https://getstream.io/agents/docs/connectors/shared-account/): One account the app owns, for every conversation.
- [User connection](https://getstream.io/agents/docs/connectors/each-user-account/): Let each user connect their own account, from the dashboard or your own app.
- [Custom MCP servers](https://getstream.io/agents/docs/connectors/mcp/): Any MCP server: a public one, or one behind a key.
- [Tools](https://getstream.io/agents/docs/connectors/choosing-tools/): See a connection's tools and offer only the ones the agent needs.
- [Sandbox](https://getstream.io/agents/docs/connectors/sandbox/): Let code in the agent's sandbox call a connector's API.
- [Sign-in and OAuth clients](https://getstream.io/agents/docs/connectors/sign-in/): How each connector signs in, and how to use your own OAuth client.
- [Troubleshooting](https://getstream.io/agents/docs/connectors/troubleshooting/): Errors you may see, why, and what to do.
- [Channels](https://getstream.io/agents/docs/connectors/channels/): Every channel, what it needs, and which one to start with.

---

For the most recent version of this documentation, visit [https://getstream.io/agents/docs/connectors/](https://getstream.io/agents/docs/connectors/).