> ## Documentation Index
> Fetch the complete documentation index at: https://corsair-feat-reconnect-error.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Google Docs plugin for Corsair

Use **Google Docs** through Corsair: one client, typed API calls, local DB sync, and incoming webhooks.

Google Docs exposes document creation and editing, text operations, structure (headers, footers, footnotes, named ranges, bullets), tables, images, styling, and batch updates for serverless document workflows. Use Corsair permissions for destructive actions such as deleting content ranges, headers, footers, named ranges, table rows, or table columns.

**What you get:**

* 35 typed API operations
* 1 synced entity (`documents`) for fast `.search()` / `.list()`
* 1 incoming webhook event types

## Setup

<Steps>
  <Step title="Install">
    <CodeGroup>
      ```bash npm theme={null}
      npm install corsair @corsair-dev/googledocs
      ```

      ```bash yarn theme={null}
      yarn add corsair @corsair-dev/googledocs
      ```

      ```bash pnpm theme={null}
      pnpm install corsair @corsair-dev/googledocs
      ```

      ```bash bun theme={null}
      bun add corsair @corsair-dev/googledocs
      ```
    </CodeGroup>
  </Step>

  <Step title="Add the plugin">
    ```ts corsair.ts theme={null}
    import Database from 'better-sqlite3';
    import { createCorsair } from 'corsair';
    import { googledocs } from '@corsair-dev/googledocs';

    export const corsair = createCorsair({
    	plugins: [
    		googledocs(),
    	],
    	database: new Database('corsair.db'),
    	kek: process.env.CORSAIR_KEK!,
    	hub: {
    		projectApiKey: process.env.CORSAIR_DEV_API_KEY!,
    		signingSecret: process.env.CORSAIR_DEV_SIGNING_SECRET!,
    	},
    });
    ```

    Multi-tenancy is the default — scope calls with `corsair.withTenant(id)`. See [Quick start](/quick-start) for KEK + Hub keys, and [Multi-tenancy](/concepts/multi-tenancy) for account isolation.
  </Step>

  <Step title="Choose authentication">
    <Tabs>
      <Tab title="OAuth 2.0 (Recommended)">
        Open [hub.corsair.dev](https://hub.corsair.dev/dashboard), navigate to your project, and enter the **client ID** and **client secret** from your Google Docs OAuth app.

        ```ts theme={null}
        googledocs()
        ```

        More: [OAuth 2.0](/concepts/oauth)
      </Tab>
    </Tabs>
  </Step>

  <Step title="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](/management/connect).

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

## Example API calls

**`documents.exportDocumentAsPdf`**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.googledocs.api.documents.exportDocumentAsPdf({});
```

**`documents.copyDocument`**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.googledocs.api.documents.copyDocument({});
```

See the full list on the [API](/plugins/googledocs/api) page.

## Query synced data

Synced entities support `tenant.googledocs.db.<entity>.search()` and `.list()`: `documents`.

See [Database](/plugins/googledocs/database) for filters and operators.

## Webhooks

This plugin registers **1** webhook event type. Configure the provider to POST to your Corsair HTTP handler, then use `webhookHooks` on the plugin factory.

See [Webhooks](/plugins/googledocs/webhooks) for every event path and payload shape, and [Webhooks concept](/concepts/webhooks) for routing.

## What's next

<CardGroup cols={2}>
  <Card title="API reference" href="/plugins/googledocs/api">
    Every `googledocs.api.*` operation with input and output types.
  </Card>

  <Card title="Database" href="/plugins/googledocs/database">
    Synced entities, search filters, and operators.
  </Card>

  <Card title="Webhooks" href="/plugins/googledocs/webhooks">
    Event paths, payloads, and `webhookHooks` examples.
  </Card>

  <Card title="Connect / OAuth" href="/management/connect">
    createLink, Hub delivery, and tenant connect flows.
  </Card>

  <Card title="Use with agents" href="/mcp-adapters/mcp-adapters">
    Expose this plugin's operations as MCP tools.
  </Card>
</CardGroup>
