> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> CRM integration for accounts, contacts, leads, activities, tasks, products, quotes, and invoices.

Use **Nutshell** through Corsair: one client, typed API calls.

Authenticate with the Nutshell user's email as the HTTP Basic username and that user's API key as the password. Requests use the HTTPS REST API at `https://app.nutshell.com/rest`.

This plugin implements the documented REST operations. Nutshell's legacy JSON-RPC API is not included. Its webhooks are outbound notifications configured in Nutshell, not inbound operations for this integration.

**What you get:**

* 114 typed API operations

## Setup

**1. Install**

```bash npm theme={null}
npm install corsair @corsair-dev/nutshell better-sqlite3
npm install --save-dev @types/better-sqlite3
```

```bash yarn theme={null}
yarn add corsair @corsair-dev/nutshell better-sqlite3
yarn add --dev @types/better-sqlite3
```

```bash pnpm theme={null}
pnpm install corsair @corsair-dev/nutshell better-sqlite3
pnpm install --save-dev @types/better-sqlite3
```

```bash bun theme={null}
bun add corsair @corsair-dev/nutshell better-sqlite3
bun add --dev @types/better-sqlite3
```

**2. Add the plugin**

```ts corsair.ts theme={null}
import Database from 'better-sqlite3';
import { createCorsair } from 'corsair';
import { nutshell } from '@corsair-dev/nutshell';

export const corsair = createCorsair({
	plugins: [
		nutshell(),
	],
	database: new Database('corsair.db'),
	kek: process.env.CORSAIR_KEK!,
	multiTenancy: true,
	hub: {
		projectApiKey: process.env.CORSAIR_API_KEY!,
		signingSecret: process.env.CORSAIR_SIGNING_SECRET!,
	},
});
```

With `multiTenancy: true`, scope calls with `corsair.withTenant(id)`. See [Quick start](https://docs.corsair.dev/quick-start.md) for KEK + Hub keys, and [Multi-tenancy](https://docs.corsair.dev/concepts/multi-tenancy.md) for account isolation.

**3. Choose authentication**

> [tab] API Key (Recommended)
>
> No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.
>
> ```ts theme={null}
> nutshell()
> ```
>
> More: [API Key](https://docs.corsair.dev/concepts/api-key)

**4. Connect a tenant**

Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see [Connect / OAuth](https://docs.corsair.dev/management/connect).

```ts theme={null}
const { connectUrl } = await corsair.manage.connect.createLink({
	plugin: 'nutshell',
	tenantId: 'acme',
});
// redirect the user's browser to connectUrl
```

## Example API calls

**`accounts.customFieldAttributes`**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.nutshell.api.accounts.customFieldAttributes({});
```

**`accounts.create`**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.nutshell.api.accounts.create({});
```

See the full list on the [API](https://docs.corsair.dev/plugins/nutshell/api.md) page.

## What's next

> [card] [API reference](https://docs.corsair.dev/plugins/nutshell/api.md)
>
> Every `nutshell.api.*` operation with input and output types.

> [card] [Connect / OAuth](https://docs.corsair.dev/management/connect)
>
> createLink, Hub delivery, and tenant connect flows.

> [card] [Use with agents](https://docs.corsair.dev/mcp-adapters/mcp-adapters)
>
> Expose this plugin's operations as MCP tools.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.