# Manage Integrations

Integrations are the foundation of every Swytchcode project.

An integration contains everything Swytchcode needs to understand how to communicate with an external service, including available APIs, methods, workflows, request schemas, authentication requirements, and documentation.

Before an AI agent can execute an action against a service like GitHub, Stripe, Slack, or Notion, the corresponding integration must first be added to your project.

---

## What is an integration?

An integration is a packaged definition of an external API.

Instead of manually writing HTTP requests, authentication logic, and request schemas, Swytchcode provides prebuilt integrations that expose those APIs as structured tools.

For example, the GitHub integration can expose methods such as:

- List pull requests
- Create an issue
- Merge a pull request
- List repositories
- Read commits

Your AI agent doesn't need to understand GitHub's REST API. It only needs to call the appropriate tool, and Swytchcode handles the execution.

---

## How integrations fit into your project

Every Swytchcode project starts empty.

You choose which integrations your project should use.

```text
Initialize Project
│
▼
Download Integration
│
▼
Install Integration
│
▼
Enable Tools
│
▼
Execute APIs
```

Installing an integration does not automatically allow every API method to be executed.

It simply makes the integration available inside your project.

You decide which tools your AI agent is allowed to use in the next step.

---

## Discover available integrations

Before installing an integration, you can search the registry.

```bash
swy search github
```

The CLI returns matching integrations along with basic information such as:

- Integration name
- Description
- Available version
- Supported authentication methods

Searching helps you discover available services before downloading them.

Browse the full, up-to-date list of supported APIs at [swytchcode.com/apis](https://www.swytchcode.com/apis).

---

## Install an integration

To install an integration, use the `get` command.

```bash
swy get github
```

The CLI downloads the latest integration bundle and prepares it for use inside your project.

Once the download completes, the integration becomes available for enabling tools and executing methods.

You can install multiple integrations in the same project.

```bash
swy get github

swy get stripe

swy get slack
```

Your AI agent can work with all installed integrations.

---

## Bootstrap integrations from `tooling.json`

`swy bootstrap` doesn't install new integrations - it re-fetches the ones your project already declares.

```bash
swy bootstrap
```

It reads `tooling.json.integrations` and, for each `project.library` entry with a version, makes sure the corresponding bundle is on disk, fetching anything that's missing.

This is the command a teammate or CI job runs after cloning a repo: `tooling.json` is checked into version control, but the downloaded bundles under `.swytchcode/integrations/` typically aren't, so `swy bootstrap` reconstructs them without changing what's enabled.

---

## View installed integrations

To see which integrations are currently available in your project, list the installed integrations.

```bash
swy list integrations
```

This command shows every integration that has been downloaded into your workspace.

Use this whenever you want to verify what your project currently supports.

---

## Update integrations

API providers frequently introduce new endpoints, fix bugs, or improve existing APIs. Keeping integrations up to date ensures your project stays compatible with the latest API changes.

For workflows, `swy sync` checks the backend for changes without touching `tooling.json`:

```bash
swy sync github
```

It re-fetches the workflow list, downloads the full bundle again if anything changed, and re-hashes your enabled methods against the versions stored in `tooling.json`. If a method has drifted, it warns you to refresh it explicitly:

```text
⚠ method github.issues.create has changed: run swy add github.issues.create to refresh tooling.json
```

`sync` reports changes but never installs a new workflow on its own - run `swy add workflow <canonical_id>` once you've reviewed what changed. To pull a newer version of an integration itself, re-run `swy get `.

---

## Integration metadata

Each installed integration includes metadata that describes the API.

This metadata can include:

- Available methods
- Available workflows
- Request schemas
- Response schemas
- Authentication requirements
- Documentation
- Version information

Swytchcode uses this information to help AI agents discover tools, validate requests, and execute APIs correctly.

Developers normally don't need to edit this metadata manually.

---

## Installed integrations vs enabled tools

It's important to understand the difference between an installed integration and an enabled tool.

Installing an integration only downloads the available API definitions.

It does **not** automatically give your AI agent permission to execute every API operation.

For example:

```text
GitHub Integration
│
├── Create Issue
├── Close Issue
├── Merge Pull Request
├── Delete Repository
└── List Pull Requests
```

Your project might only enable:

```text
GitHub
│
├── Create Issue
└── List Pull Requests
```

This gives you complete control over what your AI agent is allowed to execute.

Tool management is covered in the next guide.

---

## Authentication and integrations

Some integrations require authentication before they can be used.

For example:

- GitHub
- Slack
- Google
- Notion
- Stripe

Before executing any tools, connect your account using the authentication commands.

Once authenticated, Swytchcode securely manages credentials and uses them whenever the integration is executed.

---

## Best practices

Only install the integrations your project actually needs.

Keeping your project focused makes it easier to understand, reduces unnecessary tool discovery, and simplifies maintenance.

Update integrations regularly to stay compatible with upstream API changes.

Avoid downloading duplicate integrations across multiple projects unless each project requires its own isolated configuration.

---

## Common workflow

Most projects manage integrations using the following workflow.

```text
Search Registry
│
▼
Install Integration
│
▼
Authenticate
│
▼
Enable Tools
│
▼
Execute
```

Once an integration has been installed and authenticated, you're ready to choose which tools your AI agent can access.

---

Installing an integration makes its methods available to your project. The next step is to enable the specific tools your application should be allowed to execute.

## What's next?

- [Manage Tools](https://docs.swytchcode.com/cli/tools/) - Enable the specific tools your application should be allowed to execute.
- [Execute Tools](https://docs.swytchcode.com/cli/exec/) - Run an enabled tool once your tool list is ready.
- [Authentication](https://docs.swytchcode.com/cli/authentication/) - Connect provider accounts before executing tools.
- [Projects](https://docs.swytchcode.com/cli/projects/) - How Swytchcode organizes project configuration.
- [Execution Pipeline](https://docs.swytchcode.com/guides/execution-pipeline/) - How every request is validated, authenticated, and executed.
- [Runtime SDK overview](https://docs.swytchcode.com/runtime-sdk/) - JavaScript and Python SDKs for tool execution.
- [Policy Rules](https://docs.swytchcode.com/policies/policy-rules/) - Define runtime policies to control tool execution.
