> ## 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.

# API

> API reference for Basecamp OAuth: every `basecamp.api.*` operation with input and output types.

Every `basecamp.api.*` operation is listed below with parameter shapes and return types from the plugin Zod schemas.

<Info>
  **New to Corsair?** See [API access](/concepts/api), [authentication](/concepts/auth), and [error handling](/concepts/error-handling).
</Info>

## Automatic Check Ins

### getBucketsQuestionAnswers

`automaticCheckIns.getBucketsQuestionAnswers`

Tool to retrieve a specific question answer by ID from a Basecamp project. Use when you need to fetch details about an automatic check-in question answer including its content, creator, and associated comments.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.automaticCheckIns.getBucketsQuestionAnswers({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `answerId` | `number` | Yes      | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `subscription_url`    | `string`   | No       | —           |
| `comments_count`      | `number`   | No       | —           |
| `comments_url`        | `string`   | No       | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `group_on`            | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsQuestionnaires

`automaticCheckIns.getBucketsQuestionnaires`

Tool to retrieve a specific questionnaire (automatic check-ins) from a Basecamp project. Use when you need to fetch details about a questionnaire including its questions count and metadata.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.automaticCheckIns.getBucketsQuestionnaires({});
```

**Input**

| Name              | Type     | Required | Description |
| ----------------- | -------- | -------- | ----------- |
| `questionnaireId` | `number` | Yes      | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `questions_url`      | `string`  | No       | —           |
| `questions_count`    | `number`  | No       | —           |
| `name`               | `string`  | Yes      | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsQuestionnairesQuestions

`automaticCheckIns.getBucketsQuestionnairesQuestions`

Tool to retrieve a paginated list of questions from a questionnaire in a Basecamp project. Use when you need to fetch questions from a specific questionnaire.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.automaticCheckIns.getBucketsQuestionnairesQuestions({});
```

**Input**

| Name              | Type     | Required | Description |
| ----------------- | -------- | -------- | ----------- |
| `questionnaireId` | `number` | Yes      | —           |
| `page`            | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      paused?: boolean,
      schedule?: {
        frequency?: string,
        days?: any[],
        hour?: number,
        minute?: number,
        week_instance?: number | null,
        week_interval?: number | null,
        month_interval?: number | null,
        start_date?: string,
        end_date?: string | null
      },
      answers_count?: number,
      answers_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsQuestions

`automaticCheckIns.getBucketsQuestions`

Tool to retrieve a specific check-in question by ID from a Basecamp project. Use when you already know the question ID and need its details without listing all questions from a questionnaire.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.automaticCheckIns.getBucketsQuestions({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `questionId` | `number` | Yes      | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `subscription_url`   | `string`  | No       | —           |
| `parent`             | `object`  | Yes      | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `paused`             | `boolean` | No       | —           |
| `schedule`           | `object`  | No       | —           |
| `answers_count`      | `number`  | No       | —           |
| `answers_url`        | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="schedule full type">
    ```ts theme={null}
    {
      frequency?: string,
      days?: number[],
      hour?: number,
      minute?: number,
      week_instance?: number | null,
      week_interval?: number | null,
      month_interval?: number | null,
      start_date?: string,
      end_date?: string | null
    }
    ```
  </Accordion>
</AccordionGroup>

***

### listQuestions

`automaticCheckIns.listQuestions`

Tool to get all questions in a questionnaire from a Basecamp project. Use when you need to fetch questions from a specific questionnaire.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.automaticCheckIns.listQuestions({});
```

**Input**

| Name              | Type     | Required | Description |
| ----------------- | -------- | -------- | ----------- |
| `questionnaireId` | `number` | Yes      | —           |
| `page`            | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      paused?: boolean,
      schedule?: {
        frequency?: string,
        days?: any[],
        hour?: number,
        minute?: number,
        week_instance?: number | null,
        week_interval?: number | null,
        month_interval?: number | null,
        start_date?: string,
        end_date?: string | null
      },
      answers_count?: number,
      answers_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Campfire And Chatbots

### createChatbot

`campfireAndChatbots.createChatbot`

Tool to create a new chatbot in a Basecamp Campfire chat. Use when you need to add an automated bot to a chat room for posting messages and responding to commands.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.createChatbot({});
```

**Input**

| Name           | Type     | Required | Description |
| -------------- | -------- | -------- | ----------- |
| `bucketId`     | `number` | Yes      | —           |
| `campfireId`   | `number` | Yes      | —           |
| `service_name` | `string` | Yes      | —           |
| `command_url`  | `string` | No       | —           |

**Output**

| Name           | Type     | Required | Description |
| -------------- | -------- | -------- | ----------- |
| `id`           | `number` | Yes      | —           |
| `created_at`   | `string` | Yes      | —           |
| `updated_at`   | `string` | Yes      | —           |
| `service_name` | `string` | Yes      | —           |
| `command_url`  | `string` | No       | —           |
| `url`          | `string` | No       | —           |
| `app_url`      | `string` | No       | —           |
| `lines_url`    | `string` | No       | —           |

***

### createChatbotLine

`campfireAndChatbots.createChatbotLine`

Tool to post a message as a chatbot to a Basecamp Campfire. Use when you need to post messages via a chatbot integration without OAuth authentication.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.createChatbotLine({});
```

**Input**

| Name            | Type     | Required | Description |
| --------------- | -------- | -------- | ----------- |
| `chatbotKey`    | `string` | Yes      | —           |
| `bucketId`      | `number` | Yes      | —           |
| `campfireId`    | `number` | Yes      | —           |
| `content_param` | `string` | No       | —           |
| `content`       | `string` | No       | —           |

**Output:** `undefined`

***

### deleteCampfireLine

`campfireAndChatbots.deleteCampfireLine`

Tool to delete a Campfire line from a chat conversation. Use when removing a specific message from a Basecamp Campfire chat.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.deleteCampfireLine({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `campfireId` | `number` | Yes      | —           |
| `lineId`     | `number` | Yes      | —           |

**Output:** `undefined`

***

### deleteChatbot

`campfireAndChatbots.deleteChatbot`

Tool to delete a chatbot from a Campfire chat. Use when removing a chatbot from the account. Note: Deletion is account-wide and only account administrators can delete chatbots.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.deleteChatbot({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `bucketId`   | `number` | Yes      | —           |
| `campfireId` | `number` | Yes      | —           |
| `chatbotId`  | `number` | Yes      | —           |

**Output:** `undefined`

***

### getBucketsChatsIntegrations

`campfireAndChatbots.getBucketsChatsIntegrations`

Tool to retrieve all chatbot integrations from a Campfire chat. Use when you need to get the list of chatbots accessible to the account with chat-specific line URLs for posting messages.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.getBucketsChatsIntegrations({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `bucketId`   | `number` | Yes      | —           |
| `campfireId` | `number` | Yes      | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      created_at: string,
      updated_at: string,
      service_name: string,
      command_url?: string | null,
      url?: string,
      app_url?: string,
      lines_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsChatsLines

`campfireAndChatbots.getBucketsChatsLines`

Tool to retrieve a paginated list of Campfire lines from a specific chat. Use when you need to fetch messages from a Campfire conversation in a Basecamp project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.getBucketsChatsLines({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `campfireId` | `number` | Yes      | —           |
| `sort`       | `string` | No       | —           |
| `direction`  | `string` | No       | —           |
| `page`       | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      content?: string | null,
      attachments?: {
        title?: string | null,
        url?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null
      }[],
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getCampfire

`campfireAndChatbots.getCampfire`

Tool to retrieve a specific Campfire (chat room) by ID from a Basecamp project. Use when you need to get complete Campfire details including metadata, URLs, topic, and creator information.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.getCampfire({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `campfireId` | `number` | Yes      | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `subscription_url`   | `string`  | No       | —           |
| `position`           | `number`  | No       | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `topic`              | `string`  | No       | —           |
| `lines_url`          | `string`  | No       | —           |
| `files_url`          | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getCampfireLine

`campfireAndChatbots.getCampfireLine`

Tool to retrieve a specific Campfire line by ID from a Basecamp project. Use when you need to fetch a single message from a chat transcript.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.getCampfireLine({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `campfireId` | `number` | Yes      | —           |
| `lineId`     | `number` | Yes      | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `content`            | `string`   | No       | —           |
| `attachments`        | `object[]` | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `boosts_count`       | `number`   | No       | —           |
| `boosts_url`         | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="attachments full type">
    ```ts theme={null}
    {
      title?: string | null,
      url?: string,
      filename?: string,
      content_type?: string,
      byte_size?: number,
      download_url?: string
    }[]
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getChatbot

`campfireAndChatbots.getChatbot`

Tool to get a specific chatbot by ID from a Basecamp Campfire chat. Use when you need to retrieve details about a chatbot, including its service name, command URL, and lines URL.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.getChatbot({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `bucketId`   | `number` | Yes      | —           |
| `campfireId` | `number` | Yes      | —           |
| `chatbotId`  | `number` | Yes      | —           |

**Output**

| Name           | Type     | Required | Description |
| -------------- | -------- | -------- | ----------- |
| `id`           | `number` | Yes      | —           |
| `created_at`   | `string` | Yes      | —           |
| `updated_at`   | `string` | Yes      | —           |
| `service_name` | `string` | Yes      | —           |
| `command_url`  | `string` | No       | —           |
| `url`          | `string` | No       | —           |
| `app_url`      | `string` | No       | —           |
| `lines_url`    | `string` | No       | —           |

***

### getChats

`campfireAndChatbots.getChats`

Tool to retrieve a paginated list of all active Campfires (chats) visible to the current user. Use when you need to list all available chat rooms in Basecamp.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.getChats({});
```

**Input**

| Name   | Type     | Required | Description |
| ------ | -------- | -------- | ----------- |
| `page` | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      position?: number | null,
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      topic?: string,
      lines_url?: string,
      files_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listCampfireLines

`campfireAndChatbots.listCampfireLines`

Tool to get all lines (messages) in a Campfire chat. Use when you need to fetch paginated messages from a Campfire conversation in a Basecamp project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.listCampfireLines({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `campfireId` | `number` | Yes      | —           |
| `sort`       | `string` | No       | —           |
| `direction`  | `string` | No       | —           |
| `page`       | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      content?: string | null,
      attachments?: {
        title?: string | null,
        url?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null
      }[],
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listChatbots

`campfireAndChatbots.listChatbots`

Tool to get all chatbots for a chat/campfire. Use when you need to retrieve the list of chatbot integrations with their line URLs for posting messages.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.listChatbots({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `bucketId`   | `number` | Yes      | —           |
| `campfireId` | `number` | Yes      | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      created_at: string,
      updated_at: string,
      service_name: string,
      command_url?: string | null,
      url?: string,
      app_url?: string,
      lines_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsChatsLines

`campfireAndChatbots.postBucketsChatsLines`

Tool to create a line in a Basecamp Campfire chat. Use when you need to post a message to a specific Campfire chat within a project.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.postBucketsChatsLines({});
```

**Input**

| Name           | Type     | Required | Description |
| -------------- | -------- | -------- | ----------- |
| `campfireId`   | `number` | Yes      | —           |
| `content`      | `string` | No       | —           |
| `content_type` | `string` | No       | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `content`            | `string`   | No       | —           |
| `attachments`        | `object[]` | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `boosts_count`       | `number`   | No       | —           |
| `boosts_url`         | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="attachments full type">
    ```ts theme={null}
    {
      title?: string | null,
      url?: string,
      filename?: string,
      content_type?: string,
      byte_size?: number,
      download_url?: string
    }[]
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### postIntegrationsChatbotKeyBucketsChatsLines

`campfireAndChatbots.postIntegrationsChatbotKeyBucketsChatsLines`

Tool to create a line in a Basecamp Campfire chat using a chatbot key. Use when you need to post messages via a chatbot integration without OAuth authentication.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.postIntegrationsChatbotKeyBucketsChatsLines({});
```

**Input**

| Name            | Type     | Required | Description |
| --------------- | -------- | -------- | ----------- |
| `chatbotKey`    | `string` | Yes      | —           |
| `bucketId`      | `number` | Yes      | —           |
| `campfireId`    | `number` | Yes      | —           |
| `content_param` | `string` | No       | —           |
| `content`       | `string` | No       | —           |

**Output:** `undefined`

***

### putBucketsChatsIntegrations

`campfireAndChatbots.putBucketsChatsIntegrations`

Tool to update an existing chatbot integration in a Basecamp Campfire chat. Use when you need to change the service name or command URL of a chatbot.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.putBucketsChatsIntegrations({});
```

**Input**

| Name           | Type     | Required | Description |
| -------------- | -------- | -------- | ----------- |
| `bucketId`     | `number` | Yes      | —           |
| `campfireId`   | `number` | Yes      | —           |
| `chatbotId`    | `number` | Yes      | —           |
| `service_name` | `string` | Yes      | —           |
| `command_url`  | `string` | No       | —           |

**Output**

| Name           | Type     | Required | Description |
| -------------- | -------- | -------- | ----------- |
| `id`           | `number` | Yes      | —           |
| `created_at`   | `string` | Yes      | —           |
| `updated_at`   | `string` | Yes      | —           |
| `service_name` | `string` | Yes      | —           |
| `command_url`  | `string` | No       | —           |
| `url`          | `string` | No       | —           |
| `app_url`      | `string` | No       | —           |
| `lines_url`    | `string` | No       | —           |

***

### updateChatbot

`campfireAndChatbots.updateChatbot`

Tool to update a chatbot's service name or command URL in a Basecamp Campfire chat. Use when you need to modify an existing chatbot integration.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.campfireAndChatbots.updateChatbot({});
```

**Input**

| Name           | Type     | Required | Description |
| -------------- | -------- | -------- | ----------- |
| `bucketId`     | `number` | Yes      | —           |
| `campfireId`   | `number` | Yes      | —           |
| `chatbotId`    | `number` | Yes      | —           |
| `service_name` | `string` | Yes      | —           |
| `command_url`  | `string` | No       | —           |

**Output**

| Name           | Type     | Required | Description |
| -------------- | -------- | -------- | ----------- |
| `id`           | `number` | Yes      | —           |
| `created_at`   | `string` | Yes      | —           |
| `updated_at`   | `string` | Yes      | —           |
| `service_name` | `string` | Yes      | —           |
| `command_url`  | `string` | No       | —           |
| `url`          | `string` | No       | —           |
| `app_url`      | `string` | No       | —           |
| `lines_url`    | `string` | No       | —           |

***

## Card Tables

### createCard

`cardTables.createCard`

Tool to create a new card in a column of a Basecamp card table. Use when you need to add a card to a card table column with optional content and due date.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.createCard({});
```

**Input**

| Name       | Type      | Required | Description |
| ---------- | --------- | -------- | ----------- |
| `columnId` | `number`  | Yes      | —           |
| `title`    | `string`  | No       | —           |
| `content`  | `string`  | No       | —           |
| `due_on`   | `string`  | No       | —           |
| `notify`   | `boolean` | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `due_on`                  | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `completed_at`            | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `completer`               | `object`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `steps`                   | `object[]` | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="completer full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### createCardStep

`cardTables.createCardStep`

Tool to create a step within a card in a Basecamp card table. Use when you need to add a subtask or checklist item to an existing card with optional due date and assignees.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.createCardStep({});
```

**Input**

| Name           | Type       | Required | Description |
| -------------- | ---------- | -------- | ----------- |
| `cardId`       | `number`   | Yes      | —           |
| `title`        | `string`   | No       | —           |
| `due_on`       | `string`   | No       | —           |
| `assignee_ids` | `number[]` | No       | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `due_on`             | `string`   | No       | —           |
| `completed`          | `boolean`  | No       | —           |
| `completed_at`       | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `completer`          | `object`   | No       | —           |
| `assignees`          | `object[]` | No       | —           |
| `completion_url`     | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="completer full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### deleteBucketsCardTablesColumnsOnHold

`cardTables.deleteBucketsCardTablesColumnsOnHold`

Tool to remove the on-hold section from a card table column. Use when you need to delete the on-hold section from a column in a Basecamp project's card table.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.cardTables.deleteBucketsCardTablesColumnsOnHold({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |
| `columnId` | `number` | Yes      | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `color`              | `string`   | No       | —           |
| `description`        | `string`   | No       | —           |
| `cards_count`        | `number`   | No       | —           |
| `comments_count`     | `number`   | No       | —           |
| `cards_url`          | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `subscribers`        | `object[]` | No       | —           |
| `on_hold`            | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="on_hold full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      inherits_status: boolean,
      title?: string | null,
      created_at: string,
      updated_at: string,
      cards_count: number,
      cards_url: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsCardTablesListsCards

`cardTables.getBucketsCardTablesListsCards`

Tool to retrieve a paginated list of cards from a card table column. Use when you need to fetch cards from a specific list/column within a Basecamp project's card table.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.cardTables.getBucketsCardTablesListsCards({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `columnId` | `number` | Yes      | —           |
| `page`     | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      position?: number | null,
      content?: string | null,
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      comments_count?: number,
      comments_url?: string,
      completion_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      completer?: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      assignees?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      }[],
      completion_subscribers?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      }[],
      steps?: {
        id: string | number,
        status?: string | null,
        visible_to_clients?: boolean | null,
        created_at?: string | null,
        updated_at?: string | null,
        title?: string | null,
        inherits_status?: boolean | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bookmark_url?: string | null,
        position?: number | null,
        due_on?: string | null,
        completed?: boolean | null,
        completed_at?: any,
        parent?: {
        } | null,
        bucket?: {
        } | null,
        creator?: {
        } | null,
        completer?: any,
        assignees?: any,
        completion_url?: string | null
      }[],
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getCard

`cardTables.getCard`

Tool to get a specific card by ID from a card table. Use when you need to retrieve complete card details including title, description, status, assignees, steps, and metadata.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.cardTables.getCard({});
```

**Input**

| Name     | Type     | Required | Description |
| -------- | -------- | -------- | ----------- |
| `cardId` | `number` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `due_on`                  | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `completed_at`            | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `completer`               | `object`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `steps`                   | `object[]` | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="completer full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getCardTable

`cardTables.getCardTable`

Tool to retrieve a card table (Kanban board) for a project. Use when you need to fetch information about a specific card table including its columns, cards count, and subscribers.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.cardTables.getCardTable({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `cardTableId` | `number` | Yes      | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `subscription_url`   | `string`   | No       | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `subscribers`        | `object[]` | No       | —           |
| `lists`              | `object[]` | No       | —           |
| `wormholes`          | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="lists full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      color?: string | null,
      description?: string | null,
      cards_count?: number,
      comments_count?: number,
      cards_url?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      subscribers?: any[],
      on_hold?: {
        id: string | number,
        status?: string | null,
        inherits_status?: boolean | null,
        title?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        cards_count?: number | null,
        cards_url?: string | null
      }
    }[]
    ```
  </Accordion>

  <Accordion title="wormholes full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      color?: string | null,
      linked: boolean,
      destination_url?: string | null
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getCardTableColumn

`cardTables.getCardTableColumn`

Tool to get a specific column from a card table within a Basecamp project. Use when you need to fetch details about a card table column by its ID.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.cardTables.getCardTableColumn({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `columnId` | `number` | Yes      | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `color`              | `string`   | No       | —           |
| `description`        | `string`   | No       | —           |
| `cards_count`        | `number`   | No       | —           |
| `comments_count`     | `number`   | No       | —           |
| `cards_url`          | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `subscribers`        | `object[]` | No       | —           |
| `on_hold`            | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="on_hold full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      inherits_status: boolean,
      title?: string | null,
      created_at: string,
      updated_at: string,
      cards_count: number,
      cards_url: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### listCards

`cardTables.listCards`

Tool to get all cards in a column from a Basecamp card table. Use when you need to retrieve cards from a specific column/list within a project's card table.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.cardTables.listCards({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `columnId` | `number` | Yes      | —           |
| `page`     | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      position?: number | null,
      content?: string | null,
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      comments_count?: number,
      comments_url?: string,
      completion_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      completer?: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      assignees?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      }[],
      completion_subscribers?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      }[],
      steps?: {
        id: string | number,
        status?: string | null,
        visible_to_clients?: boolean | null,
        created_at?: string | null,
        updated_at?: string | null,
        title?: string | null,
        inherits_status?: boolean | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bookmark_url?: string | null,
        position?: number | null,
        due_on?: string | null,
        completed?: boolean | null,
        completed_at?: any,
        parent?: {
        } | null,
        bucket?: {
        } | null,
        creator?: {
        } | null,
        completer?: any,
        assignees?: any,
        completion_url?: string | null
      }[],
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### moveCard

`cardTables.moveCard`

Tool to move a card to a different column within a Basecamp card table. Use when you need to relocate a card from one column to another in a project.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.moveCard({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `cardId`    | `number` | Yes      | —           |
| `column_id` | `number` | Yes      | —           |
| `position`  | `number` | No       | —           |

**Output:** `undefined`

***

### moveCardTableColumn

`cardTables.moveCardTableColumn`

Tool to reorder columns within a Basecamp card table. Use when you need to change the position of a column in a card table by specifying the column to move and its new position.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.moveCardTableColumn({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `cardTableId` | `number` | Yes      | —           |
| `source_id`   | `number` | Yes      | —           |
| `target_id`   | `number` | Yes      | —           |
| `position`    | `number` | No       | —           |

**Output:** `undefined`

***

### postBucketsCardTablesCardsMoves

`cardTables.postBucketsCardTablesCardsMoves`

Tool to move a card to a different column within a Basecamp card table. Use when you need to relocate a card from one column to another in a project.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.postBucketsCardTablesCardsMoves({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `cardId`    | `number` | Yes      | —           |
| `column_id` | `number` | Yes      | —           |
| `position`  | `number` | No       | —           |

**Output:** `undefined`

***

### postBucketsCardTablesCardsPositions

`cardTables.postBucketsCardTablesCardsPositions`

Tool to reposition a step within a card in a Basecamp card table. Use when you need to change the order of steps/subtasks within a card by moving a step to a specific position.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.postBucketsCardTablesCardsPositions({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `cardId`    | `number` | Yes      | —           |
| `source_id` | `number` | Yes      | —           |
| `position`  | `number` | No       | —           |

**Output:** `undefined`

***

### postBucketsCardTablesColumns

`cardTables.postBucketsCardTablesColumns`

Tool to create a column within a Basecamp card table. Use when you need to add a new column to organize cards in a card table project.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.postBucketsCardTablesColumns({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `cardTableId` | `number` | Yes      | —           |
| `title`       | `string` | No       | —           |
| `description` | `string` | No       | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `color`              | `string`   | No       | —           |
| `description`        | `string`   | No       | —           |
| `cards_count`        | `number`   | No       | —           |
| `comments_count`     | `number`   | No       | —           |
| `cards_url`          | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `subscribers`        | `object[]` | No       | —           |
| `on_hold`            | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="on_hold full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      inherits_status: boolean,
      title?: string | null,
      created_at: string,
      updated_at: string,
      cards_count: number,
      cards_url: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsCardTablesColumnsOnHold

`cardTables.postBucketsCardTablesColumnsOnHold`

Tool to create an on-hold section in a card table column. Use when you need to add an on-hold area to organize cards that are temporarily paused or waiting.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.postBucketsCardTablesColumnsOnHold({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |
| `columnId` | `number` | Yes      | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `color`              | `string`   | No       | —           |
| `description`        | `string`   | No       | —           |
| `cards_count`        | `number`   | No       | —           |
| `comments_count`     | `number`   | No       | —           |
| `cards_url`          | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `subscribers`        | `object[]` | No       | —           |
| `on_hold`            | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="on_hold full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      inherits_status: boolean,
      title?: string | null,
      created_at: string,
      updated_at: string,
      cards_count: number,
      cards_url: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsCardTablesMoves

`cardTables.postBucketsCardTablesMoves`

Tool to reposition a column within a Basecamp card table. Use when you need to change the order of columns in a card table.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.postBucketsCardTablesMoves({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `cardTableId` | `number` | Yes      | —           |
| `source_id`   | `number` | Yes      | —           |
| `target_id`   | `number` | Yes      | —           |
| `position`    | `number` | No       | —           |

**Output:** `undefined`

***

### putBucketsCardTablesCards

`cardTables.putBucketsCardTablesCards`

Tool to update an existing card in a Basecamp card table. Use when you need to modify a card's title, content, due date, or assignees. Omitted parameters remain unchanged.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.putBucketsCardTablesCards({});
```

**Input**

| Name           | Type       | Required | Description |
| -------------- | ---------- | -------- | ----------- |
| `cardId`       | `number`   | Yes      | —           |
| `title`        | `string`   | No       | —           |
| `content`      | `string`   | No       | —           |
| `due_on`       | `string`   | No       | —           |
| `assignee_ids` | `number[]` | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `due_on`                  | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `completed_at`            | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `completer`               | `object`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `steps`                   | `object[]` | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="completer full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsCardTablesColumns

`cardTables.putBucketsCardTablesColumns`

Tool to update a card table column in a Basecamp project. Use when you need to modify a column's title or description. Omitted parameters remain unchanged.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.putBucketsCardTablesColumns({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `columnId`    | `number` | Yes      | —           |
| `title`       | `string` | No       | —           |
| `description` | `string` | No       | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `color`              | `string`   | No       | —           |
| `description`        | `string`   | No       | —           |
| `cards_count`        | `number`   | No       | —           |
| `comments_count`     | `number`   | No       | —           |
| `cards_url`          | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `subscribers`        | `object[]` | No       | —           |
| `on_hold`            | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="on_hold full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      inherits_status: boolean,
      title?: string | null,
      created_at: string,
      updated_at: string,
      cards_count: number,
      cards_url: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsCardTablesColumnsColor

`cardTables.putBucketsCardTablesColumnsColor`

Tool to update a card table column's visual color designation in a Basecamp project. Use when you need to change the color of a specific column for better visual organization.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.putBucketsCardTablesColumnsColor({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |
| `columnId` | `number` | Yes      | —           |
| `color`    | `string` | No       | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `color`              | `string`   | No       | —           |
| `description`        | `string`   | No       | —           |
| `cards_count`        | `number`   | No       | —           |
| `comments_count`     | `number`   | No       | —           |
| `cards_url`          | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `subscribers`        | `object[]` | No       | —           |
| `on_hold`            | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="on_hold full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      inherits_status: boolean,
      title?: string | null,
      created_at: string,
      updated_at: string,
      cards_count: number,
      cards_url: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsCardTablesSteps

`cardTables.putBucketsCardTablesSteps`

Tool to update an existing card table step in Basecamp. Use when you need to modify a step's title, due date, or assignees. Omitted parameters remain unchanged.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.putBucketsCardTablesSteps({});
```

**Input**

| Name           | Type       | Required | Description |
| -------------- | ---------- | -------- | ----------- |
| `stepId`       | `number`   | Yes      | —           |
| `title`        | `string`   | No       | —           |
| `due_on`       | `string`   | No       | —           |
| `assignee_ids` | `number[]` | No       | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `due_on`             | `string`   | No       | —           |
| `completed`          | `boolean`  | No       | —           |
| `completed_at`       | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `completer`          | `object`   | No       | —           |
| `assignees`          | `object[]` | No       | —           |
| `completion_url`     | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="completer full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsCardTablesStepsCompletions

`cardTables.putBucketsCardTablesStepsCompletions`

Tool to mark a card table step as completed or uncompleted in Basecamp. Use when you need to toggle the completion status of a step by setting completion to "on" or "off".

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.putBucketsCardTablesStepsCompletions({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `stepId`     | `number` | Yes      | —           |
| `completion` | `string` | Yes      | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `due_on`             | `string`   | No       | —           |
| `completed`          | `boolean`  | No       | —           |
| `completed_at`       | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `completer`          | `object`   | No       | —           |
| `assignees`          | `object[]` | No       | —           |
| `completion_url`     | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="completer full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### repositionCardStep

`cardTables.repositionCardStep`

Tool to change the position of a step within a card. Use when you need to reorder steps in a card table card by moving a step to a specific position.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.repositionCardStep({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `cardId`    | `number` | Yes      | —           |
| `source_id` | `number` | Yes      | —           |
| `position`  | `number` | No       | —           |

**Output:** `undefined`

***

### unwatchCardTableColumn

`cardTables.unwatchCardTableColumn`

Tool to stop watching a card table column. Use when you want to unsubscribe from a specific column and no longer receive notifications about changes to it.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.unwatchCardTableColumn({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `columnId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### updateCard

`cardTables.updateCard`

Tool to update a card's details in a Basecamp card table. Use when you need to modify a card's title, content, due date, or assignees.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.updateCard({});
```

**Input**

| Name           | Type       | Required | Description |
| -------------- | ---------- | -------- | ----------- |
| `cardId`       | `number`   | Yes      | —           |
| `title`        | `string`   | No       | —           |
| `content`      | `string`   | No       | —           |
| `due_on`       | `string`   | No       | —           |
| `assignee_ids` | `number[]` | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `due_on`                  | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `completed_at`            | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `completer`               | `object`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `steps`                   | `object[]` | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="completer full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### updateCardTableColumn

`cardTables.updateCardTableColumn`

Tool to update a card table column's properties in a Basecamp project. Use when you need to modify a column's title or description.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.updateCardTableColumn({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `columnId`    | `number` | Yes      | —           |
| `title`       | `string` | No       | —           |
| `description` | `string` | No       | —           |

**Output**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `id`                 | `number`   | Yes      | —           |
| `status`             | `string`   | Yes      | —           |
| `visible_to_clients` | `boolean`  | Yes      | —           |
| `created_at`         | `string`   | Yes      | —           |
| `updated_at`         | `string`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `inherits_status`    | `boolean`  | Yes      | —           |
| `type`               | `string`   | Yes      | —           |
| `url`                | `string`   | Yes      | —           |
| `app_url`            | `string`   | Yes      | —           |
| `bookmark_url`       | `string`   | No       | —           |
| `position`           | `number`   | No       | —           |
| `color`              | `string`   | No       | —           |
| `description`        | `string`   | No       | —           |
| `cards_count`        | `number`   | No       | —           |
| `comments_count`     | `number`   | No       | —           |
| `cards_url`          | `string`   | No       | —           |
| `parent`             | `object`   | Yes      | —           |
| `bucket`             | `object`   | Yes      | —           |
| `creator`            | `object`   | Yes      | —           |
| `subscribers`        | `object[]` | No       | —           |
| `on_hold`            | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="on_hold full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      inherits_status: boolean,
      title?: string | null,
      created_at: string,
      updated_at: string,
      cards_count: number,
      cards_url: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### watchCardTableColumn

`cardTables.watchCardTableColumn`

Tool to start watching a card table column in a Basecamp project. Use when you need to subscribe to a specific column to receive notifications about changes.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.cardTables.watchCardTableColumn({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `columnId` | `number` | Yes      | —           |

**Output:** `undefined`

***

## Documents And Files

### createDocument

`documentsAndFiles.createDocument`

Tool to create a new document in a Basecamp vault. Use when you need to publish a document in a specific project vault with title, HTML content, and optional publication status.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.createDocument({});
```

**Input**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `vaultId`            | `number`   | Yes      | —           |
| `title`              | `string`   | No       | —           |
| `content`            | `string`   | No       | —           |
| `status`             | `string`   | No       | —           |
| `subscriptions`      | `number[]` | No       | —           |
| `visible_to_clients` | `boolean`  | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `subscription_url`    | `string`   | No       | —           |
| `comments_count`      | `number`   | No       | —           |
| `comments_url`        | `string`   | No       | —           |
| `position`            | `number`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### createUpload

`documentsAndFiles.createUpload`

Tool to create a new upload (file) in a Basecamp vault. Use when you need to create an upload entry for a previously uploaded attachment in a specific project vault.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.createUpload({});
```

**Input**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `vaultId`            | `number`   | Yes      | —           |
| `attachable_sgid`    | `string`   | Yes      | —           |
| `description`        | `string`   | No       | —           |
| `base_name`          | `string`   | No       | —           |
| `subscriptions`      | `number[]` | No       | —           |
| `visible_to_clients` | `boolean`  | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `content_type`            | `string`   | No       | —           |
| `byte_size`               | `number`   | No       | —           |
| `width`                   | `number`   | No       | —           |
| `height`                  | `number`   | No       | —           |
| `download_url`            | `string`   | No       | —           |
| `filename`                | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### createVault

`documentsAndFiles.createVault`

Tool to create a new vault (folder) within an existing parent vault in a Basecamp project. Use when you need to organize documents and files hierarchically by creating nested vaults.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.createVault({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |
| `title`   | `string` | No       | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `position`           | `number`  | No       | —           |
| `parent`             | `object`  | No       | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `documents_count`    | `number`  | No       | —           |
| `documents_url`      | `string`  | No       | —           |
| `uploads_count`      | `number`  | No       | —           |
| `uploads_url`        | `string`  | No       | —           |
| `vaults_count`       | `number`  | No       | —           |
| `vaults_url`         | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsUploads

`documentsAndFiles.getBucketsUploads`

Tool to retrieve a specific upload by ID from a Basecamp project vault. Use when you need to fetch details about an uploaded file including its metadata, download URL, and dimensions.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.getBucketsUploads({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `uploadId` | `number` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `content_type`            | `string`   | No       | —           |
| `byte_size`               | `number`   | No       | —           |
| `width`                   | `number`   | No       | —           |
| `height`                  | `number`   | No       | —           |
| `download_url`            | `string`   | No       | —           |
| `filename`                | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsVaults

`documentsAndFiles.getBucketsVaults`

Tool to retrieve a specific vault from a Basecamp project. Use when you need details about a vault including its documents, uploads, and nested vaults.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.getBucketsVaults({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `position`           | `number`  | No       | —           |
| `parent`             | `object`  | No       | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `documents_count`    | `number`  | No       | —           |
| `documents_url`      | `string`  | No       | —           |
| `uploads_count`      | `number`  | No       | —           |
| `uploads_url`        | `string`  | No       | —           |
| `vaults_count`       | `number`  | No       | —           |
| `vaults_url`         | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsVaultsDocuments

`documentsAndFiles.getBucketsVaultsDocuments`

Tool to retrieve a paginated list of active documents from a vault in a Basecamp project. Use when you need to fetch all documents stored in a specific vault.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.getBucketsVaultsDocuments({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |
| `page`    | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      comments_count?: number,
      comments_url?: string,
      position?: number | null,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      content?: string | null,
      content_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsVaultsUploads

`documentsAndFiles.getBucketsVaultsUploads`

Tool to retrieve a paginated list of active uploads from a vault in a Basecamp project. Use when you need to fetch all uploaded files stored in a specific vault.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.getBucketsVaultsUploads({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |
| `page`    | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      comments_count?: number,
      comments_url?: string,
      position?: number | null,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      content_type?: string,
      byte_size?: number,
      width?: number,
      height?: number,
      download_url?: string,
      filename?: string,
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsVaultsVaults

`documentsAndFiles.getBucketsVaultsVaults`

Tool to retrieve a paginated list of vaults nested within a parent vault in a Basecamp project. Use when you need to fetch child vaults from a specific vault.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.getBucketsVaultsVaults({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |
| `page`    | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      parent?: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      documents_count?: number,
      documents_url?: string,
      uploads_count?: number,
      uploads_url?: string,
      vaults_count?: number,
      vaults_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getDocument

`documentsAndFiles.getDocument`

Tool to get a specific document by ID from a Basecamp project bucket. Use when you need to retrieve complete document details including title, content, creator, metadata, and comments count.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.getDocument({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `documentId` | `number` | Yes      | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `subscription_url`    | `string`   | No       | —           |
| `comments_count`      | `number`   | No       | —           |
| `comments_url`        | `string`   | No       | —           |
| `position`            | `number`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getUpload

`documentsAndFiles.getUpload`

Tool to get a specific upload by ID from a Basecamp project. Use when you need to retrieve details about an uploaded file including metadata, download URL, and dimensions.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.getUpload({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `uploadId` | `number` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `content_type`            | `string`   | No       | —           |
| `byte_size`               | `number`   | No       | —           |
| `width`                   | `number`   | No       | —           |
| `height`                  | `number`   | No       | —           |
| `download_url`            | `string`   | No       | —           |
| `filename`                | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getVault

`documentsAndFiles.getVault`

Tool to retrieve a specific vault by ID from a Basecamp project. Use when you need details about a vault including its documents, uploads, and nested vaults.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.getVault({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `position`           | `number`  | No       | —           |
| `parent`             | `object`  | No       | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `documents_count`    | `number`  | No       | —           |
| `documents_url`      | `string`  | No       | —           |
| `uploads_count`      | `number`  | No       | —           |
| `uploads_url`        | `string`  | No       | —           |
| `vaults_count`       | `number`  | No       | —           |
| `vaults_url`         | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### listUploads

`documentsAndFiles.listUploads`

Tool to retrieve all active uploads from a vault in a Basecamp project. Use when you need to list all uploaded files stored in a specific vault.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.listUploads({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |
| `page`    | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      comments_count?: number,
      comments_url?: string,
      position?: number | null,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      content_type?: string,
      byte_size?: number,
      width?: number,
      height?: number,
      download_url?: string,
      filename?: string,
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listVaults

`documentsAndFiles.listVaults`

Tool to retrieve all vaults (folders) nested within a parent vault in a Basecamp project. Use when you need to list child vaults from a specific vault.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.listVaults({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |
| `page`    | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      parent?: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      documents_count?: number,
      documents_url?: string,
      uploads_count?: number,
      uploads_url?: string,
      vaults_count?: number,
      vaults_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postAttachments

`documentsAndFiles.postAttachments`

Tool to upload a file to Basecamp system. Use when you need to upload a file to get an attachable\_sgid reference for use in other operations like creating messages or todos with attachments.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.postAttachments({});
```

**Input**

| Name            | Type     | Required | Description |
| --------------- | -------- | -------- | ----------- |
| `name`          | `string` | Yes      | —           |
| `contentBase64` | `string` | Yes      | —           |

**Output**

| Name              | Type     | Required | Description |
| ----------------- | -------- | -------- | ----------- |
| `attachable_sgid` | `string` | No       | —           |

***

### putBucketsDocuments

`documentsAndFiles.putBucketsDocuments`

Tool to update an existing document in a Basecamp project bucket. Use when you need to modify a document's title, content, or both. Omitted parameters remain unchanged.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.putBucketsDocuments({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `documentId` | `number` | Yes      | —           |
| `title`      | `string` | No       | —           |
| `content`    | `string` | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `subscription_url`    | `string`   | No       | —           |
| `comments_count`      | `number`   | No       | —           |
| `comments_url`        | `string`   | No       | —           |
| `position`            | `number`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsUploads

`documentsAndFiles.putBucketsUploads`

Tool to update an existing upload in a Basecamp project bucket. Use when you need to modify an upload's description or filename. Omitted parameters remain unchanged.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.putBucketsUploads({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `uploadId`    | `number` | Yes      | —           |
| `description` | `string` | No       | —           |
| `base_name`   | `string` | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `content_type`            | `string`   | No       | —           |
| `byte_size`               | `number`   | No       | —           |
| `width`                   | `number`   | No       | —           |
| `height`                  | `number`   | No       | —           |
| `download_url`            | `string`   | No       | —           |
| `filename`                | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsVaults

`documentsAndFiles.putBucketsVaults`

Tool to update a vault's title in a Basecamp project. Use when you need to rename a vault within a specific project bucket.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.putBucketsVaults({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |
| `title`   | `string` | No       | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `position`           | `number`  | No       | —           |
| `parent`             | `object`  | No       | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `documents_count`    | `number`  | No       | —           |
| `documents_url`      | `string`  | No       | —           |
| `uploads_count`      | `number`  | No       | —           |
| `uploads_url`        | `string`  | No       | —           |
| `vaults_count`       | `number`  | No       | —           |
| `vaults_url`         | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### updateDocument

`documentsAndFiles.updateDocument`

Tool to update an existing document's title or content in a Basecamp project. Use when you need to modify document title, content, or both.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.updateDocument({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `documentId` | `number` | Yes      | —           |
| `title`      | `string` | No       | —           |
| `content`    | `string` | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `subscription_url`    | `string`   | No       | —           |
| `comments_count`      | `number`   | No       | —           |
| `comments_url`        | `string`   | No       | —           |
| `position`            | `number`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### updateUpload

`documentsAndFiles.updateUpload`

Tool to update an upload's description or filename in a Basecamp bucket. Use when you need to modify upload metadata without re-uploading the file.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.updateUpload({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `uploadId`    | `number` | Yes      | —           |
| `description` | `string` | No       | —           |
| `base_name`   | `string` | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `content_type`            | `string`   | No       | —           |
| `byte_size`               | `number`   | No       | —           |
| `width`                   | `number`   | No       | —           |
| `height`                  | `number`   | No       | —           |
| `download_url`            | `string`   | No       | —           |
| `filename`                | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### updateVault

`documentsAndFiles.updateVault`

Tool to update a vault's title in a Basecamp project. Use when you need to rename a vault within a specific project bucket.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.documentsAndFiles.updateVault({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `vaultId` | `number` | Yes      | —           |
| `title`   | `string` | No       | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `position`           | `number`  | No       | —           |
| `parent`             | `object`  | No       | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `documents_count`    | `number`  | No       | —           |
| `documents_url`      | `string`  | No       | —           |
| `uploads_count`      | `number`  | No       | —           |
| `uploads_url`        | `string`  | No       | —           |
| `vaults_count`       | `number`  | No       | —           |
| `vaults_url`         | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Inboxes And Forwards

### getBucketsInboxesForwards

`inboxesAndForwards.getBucketsInboxesForwards`

Tool to retrieve a paginated list of active email forwards from a project's inbox. Use when you need to fetch forwarded emails in a Basecamp inbox.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.inboxesAndForwards.getBucketsInboxesForwards({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `inboxId`   | `number` | Yes      | —           |
| `sort`      | `string` | No       | —           |
| `direction` | `string` | No       | —           |
| `page`      | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      content?: string | null,
      content_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      subject: string,
      from?: string | null,
      replies_count?: number,
      replies_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getInbox

`inboxesAndForwards.getInbox`

Tool to get the inbox (email forwards) for a Basecamp project. Use when you need to retrieve details about a specific inbox including its forwards count and metadata.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.inboxesAndForwards.getInbox({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `inboxId` | `number` | Yes      | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `position`           | `number`  | No       | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `forwards_count`     | `number`  | No       | —           |
| `forwards_url`       | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### listForwards

`inboxesAndForwards.listForwards`

Tool to get all email forwards in an inbox. Use when you need to retrieve forwarded emails from a Basecamp project inbox.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.inboxesAndForwards.listForwards({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `inboxId`   | `number` | Yes      | —           |
| `sort`      | `string` | No       | —           |
| `direction` | `string` | No       | —           |
| `page`      | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      content?: string | null,
      content_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      subject: string,
      from?: string | null,
      replies_count?: number,
      replies_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Messages

### deleteMessageType

`messages.deleteMessageType`

Tool to delete a message type from a Basecamp project. Use when removing a custom message category. Permanently removes the specified message type.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.messages.deleteMessageType({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |
| `typeId`   | `number` | Yes      | —           |

**Output:** `undefined`

***

### getBucketsCategories

`messages.getBucketsCategories`

Tool to retrieve all message types (categories) from a Basecamp project. Use when you need to list all available message categories for organizing messages in a project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.messages.getBucketsCategories({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      icon: string,
      created_at: string,
      updated_at: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsMessageBoardsMessages

`messages.getBucketsMessageBoardsMessages`

Tool to retrieve a paginated list of active messages from a message board in a Basecamp project. Use when you need to fetch messages from a specific message board.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.messages.getBucketsMessageBoardsMessages({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `boardId`   | `number` | Yes      | —           |
| `sort`      | `string` | No       | —           |
| `direction` | `string` | No       | —           |
| `page`      | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      comments_count?: number,
      comments_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      subject: string,
      content?: string | null,
      content_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      category?: {
        id: number,
        name: string,
        icon: string,
        created_at: string,
        updated_at: string
      },
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getMessage

`messages.getMessage`

Tool to retrieve a specific message by ID from a Basecamp project message board. Use when you need to fetch details of a single message including its content, author, and metadata.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.messages.getMessage({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `messageId` | `number` | Yes      | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `subscription_url`    | `string`   | No       | —           |
| `comments_count`      | `number`   | No       | —           |
| `comments_url`        | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `subject`             | `string`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `category`            | `object`   | No       | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="category full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      icon: string,
      created_at: string,
      updated_at: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getMessageBoard

`messages.getMessageBoard`

Tool to get the message board for a project. Use when you need to retrieve details about a specific message board including its title, creator, message count, and URLs.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.messages.getMessageBoard({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `boardId` | `number` | Yes      | —           |

**Output**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `id`                 | `number`  | Yes      | —           |
| `status`             | `string`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |
| `created_at`         | `string`  | Yes      | —           |
| `updated_at`         | `string`  | Yes      | —           |
| `title`              | `string`  | No       | —           |
| `inherits_status`    | `boolean` | Yes      | —           |
| `type`               | `string`  | Yes      | —           |
| `url`                | `string`  | Yes      | —           |
| `app_url`            | `string`  | Yes      | —           |
| `bookmark_url`       | `string`  | No       | —           |
| `position`           | `number`  | No       | —           |
| `bucket`             | `object`  | Yes      | —           |
| `creator`            | `object`  | Yes      | —           |
| `messages_count`     | `number`  | No       | —           |
| `messages_url`       | `string`  | No       | —           |
| `app_messages_url`   | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getMessageType

`messages.getMessageType`

Tool to retrieve a specific message type by ID from a Basecamp project. Use when you need details about a specific message type/category.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.messages.getMessageType({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |
| `typeId`   | `number` | Yes      | —           |

**Output**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `id`         | `number` | Yes      | —           |
| `name`       | `string` | Yes      | —           |
| `icon`       | `string` | Yes      | —           |
| `created_at` | `string` | Yes      | —           |
| `updated_at` | `string` | Yes      | —           |

***

### listMessageTypes

`messages.listMessageTypes`

Tool to retrieve all message types in a Basecamp project. Use when you need to list all available message types for organizing messages in a project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.messages.listMessageTypes({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      icon: string,
      created_at: string,
      updated_at: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### pinMessage

`messages.pinMessage`

Tool to pin a message to the top of the message board. Use when you need to feature a message prominently at the top of a message board in a project.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.messages.pinMessage({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `messageId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### postBucketsCategories

`messages.postBucketsCategories`

Tool to create a new message type (category) in a Basecamp project. Use when you need to create a custom message category for organizing different types of messages in a project.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.messages.postBucketsCategories({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |
| `name`     | `string` | Yes      | —           |
| `icon`     | `string` | Yes      | —           |

**Output**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `id`         | `number` | Yes      | —           |
| `name`       | `string` | Yes      | —           |
| `icon`       | `string` | Yes      | —           |
| `created_at` | `string` | Yes      | —           |
| `updated_at` | `string` | Yes      | —           |

***

### postBucketsMessageBoardsMessages

`messages.postBucketsMessageBoardsMessages`

Tool to publish a message to a Basecamp message board within a project. Use when you need to create a new message with optional rich HTML content and subscriptions.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.messages.postBucketsMessageBoardsMessages({});
```

**Input**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `boardId`            | `number`   | Yes      | —           |
| `subject`            | `string`   | Yes      | —           |
| `content`            | `string`   | No       | —           |
| `status`             | `string`   | No       | —           |
| `category_id`        | `number`   | No       | —           |
| `subscriptions`      | `number[]` | No       | —           |
| `visible_to_clients` | `boolean`  | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `subscription_url`    | `string`   | No       | —           |
| `comments_count`      | `number`   | No       | —           |
| `comments_url`        | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `subject`             | `string`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `category`            | `object`   | No       | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="category full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      icon: string,
      created_at: string,
      updated_at: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsCategories

`messages.putBucketsCategories`

Tool to update an existing message type (category) in a Basecamp project. Use when you need to modify the name or icon of a message category.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.messages.putBucketsCategories({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |
| `typeId`   | `number` | Yes      | —           |
| `name`     | `string` | No       | —           |
| `icon`     | `string` | No       | —           |

**Output**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `id`         | `number` | Yes      | —           |
| `name`       | `string` | Yes      | —           |
| `icon`       | `string` | Yes      | —           |
| `created_at` | `string` | Yes      | —           |
| `updated_at` | `string` | Yes      | —           |

***

### putBucketsMessages

`messages.putBucketsMessages`

Tool to update a message's subject, content, or category in a Basecamp project. Use when you need to modify an existing message's title, body text, or categorization.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.messages.putBucketsMessages({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `messageId`   | `number` | Yes      | —           |
| `subject`     | `string` | No       | —           |
| `content`     | `string` | No       | —           |
| `status`      | `string` | No       | —           |
| `category_id` | `number` | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `subscription_url`    | `string`   | No       | —           |
| `comments_count`      | `number`   | No       | —           |
| `comments_url`        | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `subject`             | `string`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `category`            | `object`   | No       | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="category full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      icon: string,
      created_at: string,
      updated_at: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### unpinMessage

`messages.unpinMessage`

Tool to unpin a message from the message board. Use when you need to remove the pinned status from a message that was previously pinned to the top of a message board.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.messages.unpinMessage({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `messageId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### updateMessageType

`messages.updateMessageType`

Tool to update an existing message type in a Basecamp project. Use when you need to modify the name or icon of a message category.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.messages.updateMessageType({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |
| `typeId`   | `number` | Yes      | —           |
| `name`     | `string` | No       | —           |
| `icon`     | `string` | No       | —           |

**Output**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `id`         | `number` | Yes      | —           |
| `name`       | `string` | Yes      | —           |
| `icon`       | `string` | Yes      | —           |
| `created_at` | `string` | Yes      | —           |
| `updated_at` | `string` | Yes      | —           |

***

## People And Access

### getCirclesPeople

`peopleAndAccess.getCirclesPeople`

Tool to retrieve all people on this Basecamp account who can be pinged. Use when you need to get a list of all pingable users in the account.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.peopleAndAccess.getCirclesPeople({});
```

**Input:** *empty object*

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getMyProfile

`peopleAndAccess.getMyProfile`

Tool to retrieve the current user's personal info including profile details, permissions, and settings. Use when you need to get information about the authenticated user.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.peopleAndAccess.getMyProfile({});
```

**Input:** *empty object*

**Output**

| Name                     | Type      | Required | Description |
| ------------------------ | --------- | -------- | ----------- |
| `id`                     | `number`  | Yes      | —           |
| `attachable_sgid`        | `string`  | No       | —           |
| `name`                   | `string`  | Yes      | —           |
| `email_address`          | `string`  | No       | —           |
| `personable_type`        | `string`  | No       | —           |
| `title`                  | `string`  | No       | —           |
| `bio`                    | `string`  | No       | —           |
| `tagline`                | `string`  | No       | —           |
| `location`               | `string`  | No       | —           |
| `created_at`             | `string`  | No       | —           |
| `updated_at`             | `string`  | No       | —           |
| `admin`                  | `boolean` | No       | —           |
| `owner`                  | `boolean` | No       | —           |
| `client`                 | `boolean` | No       | —           |
| `employee`               | `boolean` | No       | —           |
| `time_zone`              | `string`  | No       | —           |
| `avatar_url`             | `string`  | No       | —           |
| `company`                | `object`  | No       | —           |
| `can_manage_projects`    | `boolean` | No       | —           |
| `can_manage_people`      | `boolean` | No       | —           |
| `can_ping`               | `boolean` | No       | —           |
| `can_access_timesheet`   | `boolean` | No       | —           |
| `can_access_hill_charts` | `boolean` | No       | —           |

<AccordionGroup>
  <Accordion title="company full type">
    ```ts theme={null}
    {
      id: number,
      name: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getPeople

`peopleAndAccess.getPeople`

Tool to retrieve all people visible to the current user in the Basecamp account. Use when you need to list users, check permissions, or get contact information for team members.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.peopleAndAccess.getPeople({});
```

**Input**

| Name   | Type     | Required | Description |
| ------ | -------- | -------- | ----------- |
| `page` | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getPeopleByPersonId

`peopleAndAccess.getPeopleByPersonId`

Tool to retrieve the profile for a specific user by their ID. Use when you need to get detailed information about a specific person in the Basecamp account.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.peopleAndAccess.getPeopleByPersonId({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `personId` | `number` | Yes      | —           |

**Output**

| Name                     | Type      | Required | Description |
| ------------------------ | --------- | -------- | ----------- |
| `id`                     | `number`  | Yes      | —           |
| `attachable_sgid`        | `string`  | No       | —           |
| `name`                   | `string`  | Yes      | —           |
| `email_address`          | `string`  | No       | —           |
| `personable_type`        | `string`  | No       | —           |
| `title`                  | `string`  | No       | —           |
| `bio`                    | `string`  | No       | —           |
| `tagline`                | `string`  | No       | —           |
| `location`               | `string`  | No       | —           |
| `created_at`             | `string`  | No       | —           |
| `updated_at`             | `string`  | No       | —           |
| `admin`                  | `boolean` | No       | —           |
| `owner`                  | `boolean` | No       | —           |
| `client`                 | `boolean` | No       | —           |
| `employee`               | `boolean` | No       | —           |
| `time_zone`              | `string`  | No       | —           |
| `avatar_url`             | `string`  | No       | —           |
| `company`                | `object`  | No       | —           |
| `can_manage_projects`    | `boolean` | No       | —           |
| `can_manage_people`      | `boolean` | No       | —           |
| `can_ping`               | `boolean` | No       | —           |
| `can_access_timesheet`   | `boolean` | No       | —           |
| `can_access_hill_charts` | `boolean` | No       | —           |

<AccordionGroup>
  <Accordion title="company full type">
    ```ts theme={null}
    {
      id: number,
      name: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getPerson

`peopleAndAccess.getPerson`

Tool to retrieve a specific person's profile by their ID. Use when you need detailed information about a specific person in the Basecamp account.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.peopleAndAccess.getPerson({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `personId` | `number` | Yes      | —           |

**Output**

| Name                     | Type      | Required | Description |
| ------------------------ | --------- | -------- | ----------- |
| `id`                     | `number`  | Yes      | —           |
| `attachable_sgid`        | `string`  | No       | —           |
| `name`                   | `string`  | Yes      | —           |
| `email_address`          | `string`  | No       | —           |
| `personable_type`        | `string`  | No       | —           |
| `title`                  | `string`  | No       | —           |
| `bio`                    | `string`  | No       | —           |
| `tagline`                | `string`  | No       | —           |
| `location`               | `string`  | No       | —           |
| `created_at`             | `string`  | No       | —           |
| `updated_at`             | `string`  | No       | —           |
| `admin`                  | `boolean` | No       | —           |
| `owner`                  | `boolean` | No       | —           |
| `client`                 | `boolean` | No       | —           |
| `employee`               | `boolean` | No       | —           |
| `time_zone`              | `string`  | No       | —           |
| `avatar_url`             | `string`  | No       | —           |
| `company`                | `object`  | No       | —           |
| `can_manage_projects`    | `boolean` | No       | —           |
| `can_manage_people`      | `boolean` | No       | —           |
| `can_ping`               | `boolean` | No       | —           |
| `can_access_timesheet`   | `boolean` | No       | —           |
| `can_access_hill_charts` | `boolean` | No       | —           |

<AccordionGroup>
  <Accordion title="company full type">
    ```ts theme={null}
    {
      id: number,
      name: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getProjectsPeople

`peopleAndAccess.getProjectsPeople`

Tool to retrieve all active people assigned to a Basecamp project. Use when you need to list all members who have access to a specific project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.peopleAndAccess.getProjectsPeople({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `number` | Yes      | —           |
| `page`      | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listProjectPeople

`peopleAndAccess.listProjectPeople`

Tool to get all people on a specific Basecamp project. Use when you need to retrieve the list of active members who have access to a particular project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.peopleAndAccess.listProjectPeople({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `number` | Yes      | —           |
| `page`      | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putProjectsPeopleUsers

`peopleAndAccess.putProjectsPeopleUsers`

Tool to grant or revoke project access for users in Basecamp. Use when you need to add existing users to a project, create new users with access, or remove users from a project. At least one of grant, revoke, or create must be provided.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.peopleAndAccess.putProjectsPeopleUsers({});
```

**Input**

| Name        | Type       | Required | Description |
| ----------- | ---------- | -------- | ----------- |
| `projectId` | `number`   | Yes      | —           |
| `grant`     | `number[]` | No       | —           |
| `revoke`    | `number[]` | No       | —           |
| `create`    | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="create full type">
    ```ts theme={null}
    {
      name: string,
      email_address?: string | null,
      title?: string | null,
      company_name?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name      | Type       | Required | Description |
| --------- | ---------- | -------- | ----------- |
| `granted` | `object[]` | No       | —           |
| `revoked` | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="granted full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="revoked full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Projects And Templates

### createProjectConstruction

`projectsAndTemplates.createProjectConstruction`

Tool to create a new project from a Basecamp template asynchronously. Use when you need to instantiate a project based on an existing template. Poll the returned URL to monitor construction progress until status becomes 'completed'.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.createProjectConstruction({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `templateId` | `number` | Yes      | —           |
| `project`    | `object` | Yes      | —           |

<AccordionGroup>
  <Accordion title="project full type">
    ```ts theme={null}
    {
      name: string,
      description?: string | null
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `id`      | `number` | Yes      | —           |
| `status`  | `string` | Yes      | —           |
| `url`     | `string` | No       | —           |
| `project` | `object` | No       | —           |

<AccordionGroup>
  <Accordion title="project full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      created_at: string,
      updated_at: string,
      name: string,
      description?: string | null,
      purpose?: string,
      start_date?: string,
      end_date?: string | null,
      clients_enabled?: boolean,
      bookmark_url?: string,
      url: string,
      app_url: string,
      dock?: {
        id: string | number,
        title?: string | null,
        name?: string | null,
        enabled?: boolean | null,
        position?: number | null,
        url?: string | null,
        app_url?: string | null
      }[],
      bookmarked?: boolean,
      client_company?: {
        id: number,
        name: string
      },
      clientside?: {
        url?: string,
        app_url?: string
      }
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getProject

`projectsAndTemplates.getProject`

Tool to retrieve a specific project by its ID with complete details. Use when you need to get comprehensive information about a particular project including its status, metadata, and dock tools configuration.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.getProject({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `number` | Yes      | —           |

**Output**

| Name              | Type       | Required | Description |
| ----------------- | ---------- | -------- | ----------- |
| `id`              | `number`   | Yes      | —           |
| `status`          | `string`   | Yes      | —           |
| `created_at`      | `string`   | Yes      | —           |
| `updated_at`      | `string`   | Yes      | —           |
| `name`            | `string`   | Yes      | —           |
| `description`     | `string`   | No       | —           |
| `purpose`         | `string`   | No       | —           |
| `start_date`      | `string`   | No       | —           |
| `end_date`        | `string`   | No       | —           |
| `clients_enabled` | `boolean`  | No       | —           |
| `bookmark_url`    | `string`   | No       | —           |
| `url`             | `string`   | Yes      | —           |
| `app_url`         | `string`   | Yes      | —           |
| `dock`            | `object[]` | No       | —           |
| `bookmarked`      | `boolean`  | No       | —           |
| `client_company`  | `object`   | No       | —           |
| `clientside`      | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="dock full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      name: string,
      enabled: boolean,
      position?: number | null,
      url: string,
      app_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="client_company full type">
    ```ts theme={null}
    {
      id: number,
      name: string
    }
    ```
  </Accordion>

  <Accordion title="clientside full type">
    ```ts theme={null}
    {
      url?: string,
      app_url?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getProjects

`projectsAndTemplates.getProjects`

Tool to retrieve a paginated list of projects visible to the current user, sorted by most recently created first. Use when you need to list all projects, filter by status (active/archived/trashed), or access project details.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.getProjects({});
```

**Input**

| Name     | Type     | Required | Description |
| -------- | -------- | -------- | ----------- |
| `status` | `string` | No       | —           |
| `page`   | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      created_at: string,
      updated_at: string,
      name: string,
      description?: string | null,
      purpose?: string,
      start_date?: string,
      end_date?: string | null,
      clients_enabled?: boolean,
      bookmark_url?: string,
      url: string,
      app_url: string,
      dock?: {
        id: string | number,
        title?: string | null,
        name?: string | null,
        enabled?: boolean | null,
        position?: number | null,
        url?: string | null,
        app_url?: string | null
      }[],
      bookmarked?: boolean,
      client_company?: {
        id: number,
        name: string
      },
      clientside?: {
        url?: string,
        app_url?: string
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getProjectsByProjectId

`projectsAndTemplates.getProjectsByProjectId`

Tool to retrieve a single project by its ID with full details including dock tools. Use when you need to get information about a specific project that the user has access to.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.getProjectsByProjectId({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `number` | Yes      | —           |

**Output**

| Name              | Type       | Required | Description |
| ----------------- | ---------- | -------- | ----------- |
| `id`              | `number`   | Yes      | —           |
| `status`          | `string`   | Yes      | —           |
| `created_at`      | `string`   | Yes      | —           |
| `updated_at`      | `string`   | Yes      | —           |
| `name`            | `string`   | Yes      | —           |
| `description`     | `string`   | No       | —           |
| `purpose`         | `string`   | No       | —           |
| `start_date`      | `string`   | No       | —           |
| `end_date`        | `string`   | No       | —           |
| `clients_enabled` | `boolean`  | No       | —           |
| `bookmark_url`    | `string`   | No       | —           |
| `url`             | `string`   | Yes      | —           |
| `app_url`         | `string`   | Yes      | —           |
| `dock`            | `object[]` | No       | —           |
| `bookmarked`      | `boolean`  | No       | —           |
| `client_company`  | `object`   | No       | —           |
| `clientside`      | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="dock full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      name: string,
      enabled: boolean,
      position?: number | null,
      url: string,
      app_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="client_company full type">
    ```ts theme={null}
    {
      id: number,
      name: string
    }
    ```
  </Accordion>

  <Accordion title="clientside full type">
    ```ts theme={null}
    {
      url?: string,
      app_url?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getTemplates

`projectsAndTemplates.getTemplates`

Tool to retrieve a paginated list of active templates visible to the current user, sorted by most recently created first. Use when you need to list templates or filter by status (active/archived/trashed).

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.getTemplates({});
```

**Input**

| Name     | Type     | Required | Description |
| -------- | -------- | -------- | ----------- |
| `status` | `string` | No       | —           |
| `page`   | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status?: string,
      created_at: string,
      updated_at: string,
      name: string,
      description?: string | null,
      url?: string,
      app_url?: string,
      dock?: {
        id: string | number,
        title?: string | null,
        name?: string | null,
        enabled?: boolean | null,
        position?: number | null,
        url?: string | null,
        app_url?: string | null
      }[]
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getTemplatesByTemplateId

`projectsAndTemplates.getTemplatesByTemplateId`

Tool to retrieve a single template by its ID with full details including dock tools. Use when you need to get information about a specific template that the user has access to.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.getTemplatesByTemplateId({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `templateId` | `number` | Yes      | —           |

**Output**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `id`          | `number`   | Yes      | —           |
| `status`      | `string`   | No       | —           |
| `created_at`  | `string`   | Yes      | —           |
| `updated_at`  | `string`   | Yes      | —           |
| `name`        | `string`   | Yes      | —           |
| `description` | `string`   | No       | —           |
| `url`         | `string`   | No       | —           |
| `app_url`     | `string`   | No       | —           |
| `dock`        | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="dock full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      name: string,
      enabled: boolean,
      position?: number | null,
      url: string,
      app_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getTemplatesProjectConstructions

`projectsAndTemplates.getTemplatesProjectConstructions`

Tool to retrieve the status of a project construction from a template. Use when you need to monitor the progress of a project being created from a template. Can be polled at intervals (no more than once per second) to track construction status.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.getTemplatesProjectConstructions({});
```

**Input**

| Name             | Type     | Required | Description |
| ---------------- | -------- | -------- | ----------- |
| `templateId`     | `number` | Yes      | —           |
| `constructionId` | `number` | Yes      | —           |

**Output**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `id`      | `number` | Yes      | —           |
| `status`  | `string` | Yes      | —           |
| `url`     | `string` | No       | —           |
| `project` | `object` | No       | —           |

<AccordionGroup>
  <Accordion title="project full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      created_at: string,
      updated_at: string,
      name: string,
      description?: string | null,
      purpose?: string,
      start_date?: string,
      end_date?: string | null,
      clients_enabled?: boolean,
      bookmark_url?: string,
      url: string,
      app_url: string,
      dock?: {
        id: string | number,
        title?: string | null,
        name?: string | null,
        enabled?: boolean | null,
        position?: number | null,
        url?: string | null,
        app_url?: string | null
      }[],
      bookmarked?: boolean,
      client_company?: {
        id: number,
        name: string
      },
      clientside?: {
        url?: string,
        app_url?: string
      }
    }
    ```
  </Accordion>
</AccordionGroup>

***

### postLineupMarkers

`projectsAndTemplates.postLineupMarkers`

Tool to create an account-wide marker that shows up in the Lineup. Use when you need to add a visual marker to highlight important dates or milestones across all projects.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.postLineupMarkers({});
```

**Input**

| Name   | Type     | Required | Description |
| ------ | -------- | -------- | ----------- |
| `name` | `string` | Yes      | —           |
| `date` | `string` | Yes      | —           |

**Output:** `undefined`

***

### postProjects

`projectsAndTemplates.postProjects`

Tool to create a new project in Basecamp with a name and optional description. Use when you need to set up a new project workspace for team collaboration.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.postProjects({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `name`        | `string` | Yes      | —           |
| `description` | `string` | No       | —           |

**Output**

| Name              | Type       | Required | Description |
| ----------------- | ---------- | -------- | ----------- |
| `id`              | `number`   | Yes      | —           |
| `status`          | `string`   | Yes      | —           |
| `created_at`      | `string`   | Yes      | —           |
| `updated_at`      | `string`   | Yes      | —           |
| `name`            | `string`   | Yes      | —           |
| `description`     | `string`   | No       | —           |
| `purpose`         | `string`   | No       | —           |
| `start_date`      | `string`   | No       | —           |
| `end_date`        | `string`   | No       | —           |
| `clients_enabled` | `boolean`  | No       | —           |
| `bookmark_url`    | `string`   | No       | —           |
| `url`             | `string`   | Yes      | —           |
| `app_url`         | `string`   | Yes      | —           |
| `dock`            | `object[]` | No       | —           |
| `bookmarked`      | `boolean`  | No       | —           |
| `client_company`  | `object`   | No       | —           |
| `clientside`      | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="dock full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      name: string,
      enabled: boolean,
      position?: number | null,
      url: string,
      app_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="client_company full type">
    ```ts theme={null}
    {
      id: number,
      name: string
    }
    ```
  </Accordion>

  <Accordion title="clientside full type">
    ```ts theme={null}
    {
      url?: string,
      app_url?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### postTemplates

`projectsAndTemplates.postTemplates`

Tool to create a new template in Basecamp with a name and optional description. Use when you need to set up a reusable project template for standardizing workflows.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.postTemplates({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `name`        | `string` | Yes      | —           |
| `description` | `string` | No       | —           |

**Output**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `id`          | `number`   | Yes      | —           |
| `status`      | `string`   | No       | —           |
| `created_at`  | `string`   | Yes      | —           |
| `updated_at`  | `string`   | Yes      | —           |
| `name`        | `string`   | Yes      | —           |
| `description` | `string`   | No       | —           |
| `url`         | `string`   | No       | —           |
| `app_url`     | `string`   | No       | —           |
| `dock`        | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="dock full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      name: string,
      enabled: boolean,
      position?: number | null,
      url: string,
      app_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putProjects

`projectsAndTemplates.putProjects`

Tool to update an existing project's name, description, access policy, or schedule in Basecamp. Use when you need to modify project details or settings. Note: name parameter is required; schedule dates must be provided as pairs (both start\_date and end\_date).

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.putProjects({});
```

**Input**

| Name                  | Type     | Required | Description |
| --------------------- | -------- | -------- | ----------- |
| `projectId`           | `number` | Yes      | —           |
| `name`                | `string` | Yes      | —           |
| `description`         | `string` | No       | —           |
| `admissions`          | `string` | No       | —           |
| `schedule_attributes` | `object` | No       | —           |

<AccordionGroup>
  <Accordion title="schedule_attributes full type">
    ```ts theme={null}
    {
      start_date?: string,
      end_date?: string | null
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name              | Type       | Required | Description |
| ----------------- | ---------- | -------- | ----------- |
| `id`              | `number`   | Yes      | —           |
| `status`          | `string`   | Yes      | —           |
| `created_at`      | `string`   | Yes      | —           |
| `updated_at`      | `string`   | Yes      | —           |
| `name`            | `string`   | Yes      | —           |
| `description`     | `string`   | No       | —           |
| `purpose`         | `string`   | No       | —           |
| `start_date`      | `string`   | No       | —           |
| `end_date`        | `string`   | No       | —           |
| `clients_enabled` | `boolean`  | No       | —           |
| `bookmark_url`    | `string`   | No       | —           |
| `url`             | `string`   | Yes      | —           |
| `app_url`         | `string`   | Yes      | —           |
| `dock`            | `object[]` | No       | —           |
| `bookmarked`      | `boolean`  | No       | —           |
| `client_company`  | `object`   | No       | —           |
| `clientside`      | `object`   | No       | —           |

<AccordionGroup>
  <Accordion title="dock full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      name: string,
      enabled: boolean,
      position?: number | null,
      url: string,
      app_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="client_company full type">
    ```ts theme={null}
    {
      id: number,
      name: string
    }
    ```
  </Accordion>

  <Accordion title="clientside full type">
    ```ts theme={null}
    {
      url?: string,
      app_url?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### putTemplates

`projectsAndTemplates.putTemplates`

Tool to update a template's name and description in Basecamp. Use when you need to modify template metadata. Omitted parameters remain unchanged.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.putTemplates({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `templateId`  | `number` | Yes      | —           |
| `name`        | `string` | No       | —           |
| `description` | `string` | No       | —           |

**Output**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `id`          | `number`   | Yes      | —           |
| `status`      | `string`   | No       | —           |
| `created_at`  | `string`   | Yes      | —           |
| `updated_at`  | `string`   | Yes      | —           |
| `name`        | `string`   | Yes      | —           |
| `description` | `string`   | No       | —           |
| `url`         | `string`   | No       | —           |
| `app_url`     | `string`   | No       | —           |
| `dock`        | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="dock full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      name: string,
      enabled: boolean,
      position?: number | null,
      url: string,
      app_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### trashProject

`projectsAndTemplates.trashProject`

Tool to mark a Basecamp project as trashed. Use when you need to trash a project. Trashed projects will be permanently deleted after 30 days.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.trashProject({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### trashTemplate

`projectsAndTemplates.trashTemplate`

Tool to mark a template as trashed in Basecamp. Use when you need to soft-delete a template; it will be permanently removed after 30 days.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.projectsAndTemplates.trashTemplate({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `templateId` | `number` | Yes      | —           |

**Output:** `undefined`

***

## Recordings And Subscriptions

### deleteBucketsRecordingsPin

`recordingsAndSubscriptions.deleteBucketsRecordingsPin`

Tool to unpin a recording (message) in a Basecamp project. Use when you need to remove the pinned status from a message on a message board or project.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.deleteBucketsRecordingsPin({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `messageId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### getBucketsRecordingsComments

`recordingsAndSubscriptions.getBucketsRecordingsComments`

Tool to retrieve a paginated list of active comments on a recording. Use when you need to fetch comments from a specific recording in a Basecamp project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.getBucketsRecordingsComments({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |
| `page`        | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      content?: string | null,
      content_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsRecordingsEvents

`recordingsAndSubscriptions.getBucketsRecordingsEvents`

Tool to retrieve a paginated list of events for a recording. Use when you need to fetch change history from a specific recording in a Basecamp project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.getBucketsRecordingsEvents({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |
| `page`        | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      recording_id: number,
      action: string,
      details?: {
        added_person_ids?: any[],
        removed_person_ids?: any[],
        notified_recipient_ids?: any[]
      },
      created_at: string,
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getComment

`recordingsAndSubscriptions.getComment`

Tool to retrieve a specific comment by ID from a Basecamp project. Use when you need to fetch details about a particular comment including its content, creator, and parent resource.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.getComment({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `commentId` | `number` | Yes      | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getProjectsRecordings

`recordingsAndSubscriptions.getProjectsRecordings`

Tool to retrieve a paginated list of records for a given type of recording across projects. Use when you need to list recordings of a specific type (Message, Document, Todo, etc.) with optional filtering by project, status, and sorting.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.getProjectsRecordings({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `type`      | `string` | Yes      | —           |
| `bucket`    | `string` | No       | —           |
| `status`    | `string` | No       | —           |
| `sort`      | `string` | No       | —           |
| `direction` | `string` | No       | —           |
| `page`      | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      bubble_up_url?: string,
      content?: string | null,
      content_attachments?: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      description_attachments?: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      comments_count?: number,
      comments_url?: string,
      subscription_url?: string,
      boosts_count?: number,
      boosts_url?: string,
      subject?: string,
      category?: {
        id: number,
        name: string,
        icon?: string
      },
      group_on?: string,
      from?: string | null,
      replies_count?: number,
      replies_url?: string,
      position?: number | null,
      description?: string | null,
      service?: {
        name?: string,
        example_url?: string,
        code?: string,
        valid_patterns?: any[],
        supporting_text?: string
      },
      parent?: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getSubscription

`recordingsAndSubscriptions.getSubscription`

Tool to get subscription information for a recording. Use when you need to check subscription status, view subscriber count, or get detailed information about all subscribers for a specific recording.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.getSubscription({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |

**Output**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `subscribed`  | `boolean`  | Yes      | —           |
| `count`       | `number`   | Yes      | —           |
| `url`         | `string`   | Yes      | —           |
| `subscribers` | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listComments

`recordingsAndSubscriptions.listComments`

Tool to get all comments on a recording in a Basecamp project. Use when you need to retrieve the list of active comments with their content, creators, and metadata.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.listComments({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |
| `page`        | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      content?: string | null,
      content_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listEvents

`recordingsAndSubscriptions.listEvents`

Tool to get all events (history) for a recording. Use when you need to retrieve the complete modification history of a specific recording in a Basecamp project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.listEvents({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |
| `page`        | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      recording_id: number,
      action: string,
      details?: {
        added_person_ids?: any[],
        removed_person_ids?: any[],
        notified_recipient_ids?: any[]
      },
      created_at: string,
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsRecordingsComments

`recordingsAndSubscriptions.postBucketsRecordingsComments`

Tool to publish a comment on a recording within a Basecamp project. Use when you need to add a comment with rich text to any recording such as a todolist, message, or document.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.postBucketsRecordingsComments({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |
| `content`     | `string` | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsRecordingsPin

`recordingsAndSubscriptions.postBucketsRecordingsPin`

Tool to pin a recording (message) in a Basecamp project. Use when you need to feature a message prominently at the top of a message board or project.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.postBucketsRecordingsPin({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `messageId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### postBucketsRecordingsSubscription

`recordingsAndSubscriptions.postBucketsRecordingsSubscription`

Tool to subscribe the current user to a recording for notifications. Use when you need to start watching/subscribing to a specific recording to receive notifications for new comments.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.postBucketsRecordingsSubscription({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |

**Output**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `subscribed`  | `boolean`  | Yes      | —           |
| `count`       | `number`   | Yes      | —           |
| `url`         | `string`   | Yes      | —           |
| `subscribers` | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsComments

`recordingsAndSubscriptions.putBucketsComments`

Tool to update comment content in a Basecamp project. Use when you need to modify the content of an existing comment.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.putBucketsComments({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `commentId` | `number` | Yes      | —           |
| `content`   | `string` | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsRecordingsClientVisibility

`recordingsAndSubscriptions.putBucketsRecordingsClientVisibility`

Tool to update client visibility for a recording in Basecamp. Use when you need to show or hide a recording from clients. Returns 403 if the recording inherits visibility from parent resource.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.putBucketsRecordingsClientVisibility({});
```

**Input**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `recordingId`        | `number`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `bubble_up_url`           | `string`   | No       | —           |
| `content`                 | `string`   | No       | —           |
| `content_attachments`     | `object[]` | No       | —           |
| `description_attachments` | `object[]` | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |
| `subject`                 | `string`   | No       | —           |
| `category`                | `object`   | No       | —           |
| `group_on`                | `string`   | No       | —           |
| `from`                    | `string`   | No       | —           |
| `replies_count`           | `number`   | No       | —           |
| `replies_url`             | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `description`             | `string`   | No       | —           |
| `service`                 | `object`   | No       | —           |
| `parent`                  | `object`   | No       | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |

<AccordionGroup>
  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="category full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      icon?: string
    }
    ```
  </Accordion>

  <Accordion title="service full type">
    ```ts theme={null}
    {
      name?: string,
      example_url?: string,
      code?: string,
      valid_patterns?: string[],
      supporting_text?: string
    }
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsRecordingsStatusActive

`recordingsAndSubscriptions.putBucketsRecordingsStatusActive`

Tool to unarchive a recording in a Basecamp project by marking it as active. Use when you need to restore an archived recording to make it visible again in the project.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.putBucketsRecordingsStatusActive({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### putBucketsRecordingsStatusArchived

`recordingsAndSubscriptions.putBucketsRecordingsStatusArchived`

Tool to mark a recording as archived in a Basecamp project. Use when you need to archive a recording to remove it from active view while preserving it for reference.

**Risk:** `destructive`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.putBucketsRecordingsStatusArchived({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### putBucketsRecordingsStatusTrashed

`recordingsAndSubscriptions.putBucketsRecordingsStatusTrashed`

Tool to mark a recording as trashed in a Basecamp project. Use when you need to move a recording to trash without permanently deleting it.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.putBucketsRecordingsStatusTrashed({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### putBucketsRecordingsSubscription

`recordingsAndSubscriptions.putBucketsRecordingsSubscription`

Tool to update recording subscriptions by adding or removing subscribers. Use when you need to manage who receives notifications for a specific recording. At least one of subscriptions or unsubscriptions must be provided.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.putBucketsRecordingsSubscription({});
```

**Input**

| Name              | Type       | Required | Description |
| ----------------- | ---------- | -------- | ----------- |
| `recordingId`     | `number`   | Yes      | —           |
| `subscriptions`   | `number[]` | No       | —           |
| `unsubscriptions` | `number[]` | No       | —           |

**Output**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `subscribed`  | `boolean`  | Yes      | —           |
| `count`       | `number`   | Yes      | —           |
| `url`         | `string`   | Yes      | —           |
| `subscribers` | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### subscribeCurrentUser

`recordingsAndSubscriptions.subscribeCurrentUser`

Tool to subscribe the current authenticated user to a recording for notifications. Use when you need to add the current user to the subscriber list to receive updates about the recording.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.subscribeCurrentUser({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |

**Output**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `subscribed`  | `boolean`  | Yes      | —           |
| `count`       | `number`   | Yes      | —           |
| `url`         | `string`   | Yes      | —           |
| `subscribers` | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### toggleClientVisibility

`recordingsAndSubscriptions.toggleClientVisibility`

Tool to change client visibility for a recording in Basecamp. Use when you need to show or hide a recording from clients. Returns 403 error if the recording doesn't control its own visibility.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.toggleClientVisibility({});
```

**Input**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `recordingId`        | `number`  | Yes      | —           |
| `visible_to_clients` | `boolean` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `bubble_up_url`           | `string`   | No       | —           |
| `content`                 | `string`   | No       | —           |
| `content_attachments`     | `object[]` | No       | —           |
| `description_attachments` | `object[]` | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |
| `subject`                 | `string`   | No       | —           |
| `category`                | `object`   | No       | —           |
| `group_on`                | `string`   | No       | —           |
| `from`                    | `string`   | No       | —           |
| `replies_count`           | `number`   | No       | —           |
| `replies_url`             | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `description`             | `string`   | No       | —           |
| `service`                 | `object`   | No       | —           |
| `parent`                  | `object`   | No       | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |

<AccordionGroup>
  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="category full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      icon?: string
    }
    ```
  </Accordion>

  <Accordion title="service full type">
    ```ts theme={null}
    {
      name?: string,
      example_url?: string,
      code?: string,
      valid_patterns?: string[],
      supporting_text?: string
    }
    ```
  </Accordion>

  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### unsubscribeCurrentUser

`recordingsAndSubscriptions.unsubscribeCurrentUser`

Tool to unsubscribe the current user from a recording. Use when you need to stop receiving notifications for a specific recording. This is an idempotent operation that returns success even if the user wasn't previously subscribed.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.recordingsAndSubscriptions.unsubscribeCurrentUser({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |

**Output:** `undefined`

***

## Schedules And Reports

### getBucketsSchedulesEntries

`schedulesAndReports.getBucketsSchedulesEntries`

Tool to retrieve a paginated list of schedule entries from a schedule. Use when you need to fetch entries from a specific schedule in a Basecamp project.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.schedulesAndReports.getBucketsSchedulesEntries({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `scheduleId` | `number` | Yes      | —           |
| `status`     | `string` | No       | —           |
| `page`       | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      comments_count?: number,
      comments_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      summary: string,
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      all_day: boolean,
      starts_at: string,
      ends_at: string,
      participants?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      }[],
      join_url?: string | null,
      highlighted?: boolean,
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getReportsTimesheet

`schedulesAndReports.getReportsTimesheet`

Tool to retrieve all timesheet entries across the Basecamp account within a given timeframe. Use when you need to generate time reports, track hours logged, or analyze time entries by person or project. Without date parameters, returns only the last month of entries.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.schedulesAndReports.getReportsTimesheet({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `from`      | `string` | No       | —           |
| `to`        | `string` | No       | —           |
| `person_id` | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string,
        bucket?: {
          id: string | number,
          name?: string | null,
          type?: string | null
        }
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      date?: string,
      description?: string | null,
      hours?: string,
      person?: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getSchedule

`schedulesAndReports.getSchedule`

Tool to retrieve schedule details for a specific project. Use when you need information about a schedule including entries count and configuration.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.schedulesAndReports.getSchedule({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `scheduleId` | `number` | Yes      | —           |

**Output**

| Name                      | Type      | Required | Description |
| ------------------------- | --------- | -------- | ----------- |
| `id`                      | `number`  | Yes      | —           |
| `status`                  | `string`  | Yes      | —           |
| `visible_to_clients`      | `boolean` | Yes      | —           |
| `created_at`              | `string`  | Yes      | —           |
| `updated_at`              | `string`  | Yes      | —           |
| `title`                   | `string`  | No       | —           |
| `inherits_status`         | `boolean` | Yes      | —           |
| `type`                    | `string`  | Yes      | —           |
| `url`                     | `string`  | Yes      | —           |
| `app_url`                 | `string`  | Yes      | —           |
| `bookmark_url`            | `string`  | No       | —           |
| `position`                | `number`  | No       | —           |
| `bucket`                  | `object`  | Yes      | —           |
| `creator`                 | `object`  | Yes      | —           |
| `include_due_assignments` | `boolean` | No       | —           |
| `entries_count`           | `number`  | No       | —           |
| `entries_url`             | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getScheduleEntry

`schedulesAndReports.getScheduleEntry`

Tool to get a specific schedule entry by ID from a Basecamp project. Use when you need to retrieve details about a scheduled event including its time, participants, and metadata.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.schedulesAndReports.getScheduleEntry({});
```

**Input**

| Name      | Type     | Required | Description |
| --------- | -------- | -------- | ----------- |
| `entryId` | `number` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `summary`                 | `string`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `all_day`                 | `boolean`  | Yes      | —           |
| `starts_at`               | `string`   | Yes      | —           |
| `ends_at`                 | `string`   | Yes      | —           |
| `participants`            | `object[]` | No       | —           |
| `join_url`                | `string`   | No       | —           |
| `highlighted`             | `boolean`  | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="participants full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsSchedulesEntries

`schedulesAndReports.postBucketsSchedulesEntries`

Tool to create a schedule entry in a Basecamp schedule within a project. Use when you need to add a new event with start/end times and optional participants.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.schedulesAndReports.postBucketsSchedulesEntries({});
```

**Input**

| Name                 | Type       | Required | Description |
| -------------------- | ---------- | -------- | ----------- |
| `scheduleId`         | `number`   | Yes      | —           |
| `summary`            | `string`   | Yes      | —           |
| `starts_at`          | `string`   | Yes      | —           |
| `ends_at`            | `string`   | Yes      | —           |
| `description`        | `string`   | No       | —           |
| `participant_ids`    | `number[]` | No       | —           |
| `all_day`            | `boolean`  | No       | —           |
| `notify`             | `boolean`  | No       | —           |
| `url`                | `string`   | No       | —           |
| `highlighted`        | `boolean`  | No       | —           |
| `status`             | `string`   | No       | —           |
| `subscriptions`      | `number[]` | No       | —           |
| `visible_to_clients` | `boolean`  | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `summary`                 | `string`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `all_day`                 | `boolean`  | Yes      | —           |
| `starts_at`               | `string`   | Yes      | —           |
| `ends_at`                 | `string`   | Yes      | —           |
| `participants`            | `object[]` | No       | —           |
| `join_url`                | `string`   | No       | —           |
| `highlighted`             | `boolean`  | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="participants full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsScheduleEntries

`schedulesAndReports.putBucketsScheduleEntries`

Tool to update an existing schedule entry in a Basecamp schedule. Use when you need to modify an entry's title, times, description, or participants. Omitted parameters remain unchanged.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.schedulesAndReports.putBucketsScheduleEntries({});
```

**Input**

| Name              | Type       | Required | Description |
| ----------------- | ---------- | -------- | ----------- |
| `entryId`         | `number`   | Yes      | —           |
| `summary`         | `string`   | No       | —           |
| `starts_at`       | `string`   | Yes      | —           |
| `ends_at`         | `string`   | Yes      | —           |
| `description`     | `string`   | No       | —           |
| `participant_ids` | `number[]` | No       | —           |
| `all_day`         | `boolean`  | No       | —           |
| `notify`          | `boolean`  | No       | —           |
| `url`             | `string`   | No       | —           |
| `highlighted`     | `boolean`  | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `summary`                 | `string`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `all_day`                 | `boolean`  | Yes      | —           |
| `starts_at`               | `string`   | Yes      | —           |
| `ends_at`                 | `string`   | Yes      | —           |
| `participants`            | `object[]` | No       | —           |
| `join_url`                | `string`   | No       | —           |
| `highlighted`             | `boolean`  | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="participants full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsSchedules

`schedulesAndReports.putBucketsSchedules`

Tool to update a schedule configuration in a Basecamp project. Use when you need to change whether the schedule includes due assignments from to-dos, cards and steps.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.schedulesAndReports.putBucketsSchedules({});
```

**Input**

| Name                      | Type      | Required | Description |
| ------------------------- | --------- | -------- | ----------- |
| `scheduleId`              | `number`  | Yes      | —           |
| `include_due_assignments` | `boolean` | Yes      | —           |

**Output**

| Name                      | Type      | Required | Description |
| ------------------------- | --------- | -------- | ----------- |
| `id`                      | `number`  | Yes      | —           |
| `status`                  | `string`  | Yes      | —           |
| `visible_to_clients`      | `boolean` | Yes      | —           |
| `created_at`              | `string`  | Yes      | —           |
| `updated_at`              | `string`  | Yes      | —           |
| `title`                   | `string`  | No       | —           |
| `inherits_status`         | `boolean` | Yes      | —           |
| `type`                    | `string`  | Yes      | —           |
| `url`                     | `string`  | Yes      | —           |
| `app_url`                 | `string`  | Yes      | —           |
| `bookmark_url`            | `string`  | No       | —           |
| `position`                | `number`  | No       | —           |
| `bucket`                  | `object`  | Yes      | —           |
| `creator`                 | `object`  | Yes      | —           |
| `include_due_assignments` | `boolean` | No       | —           |
| `entries_count`           | `number`  | No       | —           |
| `entries_url`             | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### updateScheduleEntry

`schedulesAndReports.updateScheduleEntry`

Tool to update an existing schedule entry in a Basecamp project schedule. Use when you need to modify details like title, dates, description, or participants. Omitted parameters remain unchanged.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.schedulesAndReports.updateScheduleEntry({});
```

**Input**

| Name              | Type       | Required | Description |
| ----------------- | ---------- | -------- | ----------- |
| `entryId`         | `number`   | Yes      | —           |
| `summary`         | `string`   | No       | —           |
| `starts_at`       | `string`   | Yes      | —           |
| `ends_at`         | `string`   | Yes      | —           |
| `description`     | `string`   | No       | —           |
| `participant_ids` | `number[]` | No       | —           |
| `all_day`         | `boolean`  | No       | —           |
| `notify`          | `boolean`  | No       | —           |
| `url`             | `string`   | No       | —           |
| `highlighted`     | `boolean`  | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `summary`                 | `string`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `all_day`                 | `boolean`  | Yes      | —           |
| `starts_at`               | `string`   | Yes      | —           |
| `ends_at`                 | `string`   | Yes      | —           |
| `participants`            | `object[]` | No       | —           |
| `join_url`                | `string`   | No       | —           |
| `highlighted`             | `boolean`  | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="participants full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Todos

### completeTodo

`todos.completeTodo`

Tool to mark a to-do as completed in Basecamp. Use when you need to complete a to-do item.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.completeTodo({});
```

**Input**

| Name     | Type     | Required | Description |
| -------- | -------- | -------- | ----------- |
| `todoId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### createTodo

`todos.createTodo`

DEPRECATED: Use BASECAMP\_POST\_BUCKETS\_TODOLISTS\_TODOS instead. Tool to create a new to-do in a Basecamp to-do list. Use when you need to add a task with optional description, assignees, and due date.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.createTodo({});
```

**Input**

| Name                        | Type       | Required | Description |
| --------------------------- | ---------- | -------- | ----------- |
| `todolistId`                | `number`   | Yes      | —           |
| `content`                   | `string`   | No       | —           |
| `description`               | `string`   | No       | —           |
| `assignee_ids`              | `number[]` | No       | —           |
| `completion_subscriber_ids` | `number[]` | No       | —           |
| `notify`                    | `boolean`  | No       | —           |
| `due_on`                    | `string`   | No       | —           |
| `starts_on`                 | `string`   | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `starts_on`               | `string`   | No       | —           |
| `due_on`                  | `string`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |
| `steps`                   | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### createTodolistGroup

`todos.createTodolistGroup`

Tool to create a new to-do group within a parent to-do list in Basecamp. Use when organizing todos into groups with optional color coding.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.createTodolistGroup({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `todolistId` | `number` | Yes      | —           |
| `name`       | `string` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `bubble_up_url`           | `string`   | Yes      | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `completed`               | `boolean`  | No       | —           |
| `completed_ratio`         | `string`   | No       | —           |
| `name`                    | `string`   | Yes      | —           |
| `todos_url`               | `string`   | No       | —           |
| `groups_url`              | `string`   | No       | —           |
| `group_position_url`      | `string`   | No       | —           |
| `app_todos_url`           | `string`   | No       | —           |
| `color`                   | `string`   | No       | —           |
| `comments_app_url`        | `string`   | Yes      | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsTodolists

`todos.getBucketsTodolists`

Tool to retrieve a specific to-do list from a Basecamp project by its ID. Use when you need to get details about a to-do list including its title, description, completion status, and URLs for todos and groups.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getBucketsTodolists({});
```

**Input**

| Name | Type     | Required | Description |
| ---- | -------- | -------- | ----------- |
| `id` | `number` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `bubble_up_url`           | `string`   | Yes      | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `completed`               | `boolean`  | No       | —           |
| `completed_ratio`         | `string`   | No       | —           |
| `name`                    | `string`   | Yes      | —           |
| `todos_url`               | `string`   | No       | —           |
| `groups_url`              | `string`   | No       | —           |
| `group_position_url`      | `string`   | No       | —           |
| `app_todos_url`           | `string`   | No       | —           |
| `color`                   | `string`   | No       | —           |
| `comments_app_url`        | `string`   | Yes      | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsTodolistsGroups

`todos.getBucketsTodolistsGroups`

Tool to retrieve a paginated list of active groups from a to-do list in a Basecamp project. Use when you need to list all groups within a specific to-do list for organizing tasks.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getBucketsTodolistsGroups({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `todolistId` | `number` | Yes      | —           |
| `page`       | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      bubble_up_url: string,
      comments_count?: number,
      comments_url?: string,
      position?: number | null,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      completed?: boolean,
      completed_ratio?: string,
      name: string,
      todos_url?: string,
      groups_url?: string,
      group_position_url?: string,
      app_todos_url?: string,
      color?: string | null,
      comments_app_url: string,
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsTodolistsTodos

`todos.getBucketsTodolistsTodos`

Tool to retrieve a paginated list of to-dos from a specific to-do list in a Basecamp project. Use when you need to fetch to-do items from a to-do list, optionally filtering by status or completion state.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getBucketsTodolistsTodos({});
```

**Input**

| Name         | Type      | Required | Description |
| ------------ | --------- | -------- | ----------- |
| `todolistId` | `number`  | Yes      | —           |
| `status`     | `string`  | No       | —           |
| `completed`  | `boolean` | No       | —           |
| `page`       | `number`  | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      comments_count?: number,
      comments_url?: string,
      position?: number | null,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      description?: string | null,
      completed?: boolean,
      content?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      starts_on?: string | null,
      due_on?: string | null,
      assignees?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      }[],
      completion_subscribers?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      }[],
      completion_url?: string,
      boosts_count?: number,
      boosts_url?: string,
      steps?: {
        id: string | number,
        status?: string | null,
        visible_to_clients?: boolean | null,
        created_at?: string | null,
        updated_at?: string | null,
        title?: string | null,
        inherits_status?: boolean | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bookmark_url?: string | null,
        position?: number | null,
        due_on?: string | null,
        completed?: boolean | null,
        completed_at?: any,
        parent?: {
        } | null,
        bucket?: {
        } | null,
        creator?: {
        } | null,
        completer?: any,
        assignees?: any,
        completion_url?: string | null
      }[]
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsTodos

`todos.getBucketsTodos`

Tool to retrieve a specific to-do by ID from a Basecamp project. Use when you need to fetch a single to-do item including its content, title, assignees, completion status, and dates.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getBucketsTodos({});
```

**Input**

| Name     | Type     | Required | Description |
| -------- | -------- | -------- | ----------- |
| `todoId` | `number` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `starts_on`               | `string`   | No       | —           |
| `due_on`                  | `string`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |
| `steps`                   | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsTodosets

`todos.getBucketsTodosets`

Tool to retrieve a specific to-do set from a Basecamp project. Use when you need to get details about a to-do set, including its completion status, to-do lists count, and associated URLs.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getBucketsTodosets({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `todosetId` | `number` | Yes      | —           |

**Output**

| Name                          | Type      | Required | Description |
| ----------------------------- | --------- | -------- | ----------- |
| `id`                          | `number`  | Yes      | —           |
| `status`                      | `string`  | Yes      | —           |
| `visible_to_clients`          | `boolean` | Yes      | —           |
| `created_at`                  | `string`  | Yes      | —           |
| `updated_at`                  | `string`  | Yes      | —           |
| `title`                       | `string`  | No       | —           |
| `inherits_status`             | `boolean` | Yes      | —           |
| `type`                        | `string`  | Yes      | —           |
| `url`                         | `string`  | Yes      | —           |
| `app_url`                     | `string`  | Yes      | —           |
| `bookmark_url`                | `string`  | No       | —           |
| `position`                    | `number`  | No       | —           |
| `bucket`                      | `object`  | Yes      | —           |
| `creator`                     | `object`  | Yes      | —           |
| `name`                        | `string`  | Yes      | —           |
| `todolists_count`             | `number`  | No       | —           |
| `todolists_url`               | `string`  | No       | —           |
| `completed_ratio`             | `string`  | No       | —           |
| `completed`                   | `boolean` | No       | —           |
| `app_todolists_url`           | `string`  | No       | —           |
| `todos_count`                 | `number`  | No       | —           |
| `completed_loose_todos_count` | `number`  | No       | —           |
| `todos_url`                   | `string`  | No       | —           |
| `app_todos_url`               | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getBucketsTodosetsTodolists

`todos.getBucketsTodosetsTodolists`

Tool to retrieve a paginated list of to-do lists within a specific to-do set in a Basecamp project. Use when you need to fetch all to-do lists from a to-do set, optionally filtering by status.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getBucketsTodosetsTodolists({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `todosetId` | `number` | Yes      | —           |
| `status`    | `string` | No       | —           |
| `page`      | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      bubble_up_url: string,
      comments_count?: number,
      comments_url?: string,
      position?: number | null,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      completed?: boolean,
      completed_ratio?: string,
      name: string,
      todos_url?: string,
      groups_url?: string,
      group_position_url?: string,
      app_todos_url?: string,
      color?: string | null,
      comments_app_url: string,
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getTodo

`todos.getTodo`

Tool to retrieve a specific to-do by ID from a Basecamp project. Use when you need to fetch detailed information about a single to-do item including its content, title, assignees, completion status, dates, and parent relationships.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getTodo({});
```

**Input**

| Name     | Type     | Required | Description |
| -------- | -------- | -------- | ----------- |
| `todoId` | `number` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `starts_on`               | `string`   | No       | —           |
| `due_on`                  | `string`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |
| `steps`                   | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getTodolist

`todos.getTodolist`

Tool to retrieve a specific to-do list from a Basecamp project by its ID. Use when you need to get details about a to-do list including its title, description, completion status, and URLs for todos and groups.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getTodolist({});
```

**Input**

| Name | Type     | Required | Description |
| ---- | -------- | -------- | ----------- |
| `id` | `number` | Yes      | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `bubble_up_url`           | `string`   | Yes      | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `completed`               | `boolean`  | No       | —           |
| `completed_ratio`         | `string`   | No       | —           |
| `name`                    | `string`   | Yes      | —           |
| `todos_url`               | `string`   | No       | —           |
| `groups_url`              | `string`   | No       | —           |
| `group_position_url`      | `string`   | No       | —           |
| `app_todos_url`           | `string`   | No       | —           |
| `color`                   | `string`   | No       | —           |
| `comments_app_url`        | `string`   | Yes      | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getTodolistGroups

`todos.getTodolistGroups`

Tool to retrieve a paginated list of groups from a to-do list in a Basecamp project. Use when you need to list groups (sub-sections) within a specific to-do list for organizing tasks.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getTodolistGroups({});
```

**Input**

| Name         | Type     | Required | Description |
| ------------ | -------- | -------- | ----------- |
| `todolistId` | `number` | Yes      | —           |
| `page`       | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      bubble_up_url: string,
      comments_count?: number,
      comments_url?: string,
      position?: number | null,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      completed?: boolean,
      completed_ratio?: string,
      name: string,
      todos_url?: string,
      groups_url?: string,
      group_position_url?: string,
      app_todos_url?: string,
      color?: string | null,
      comments_app_url: string,
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getTodoset

`todos.getTodoset`

Tool to retrieve a specific to-do set from a Basecamp project. Use when you need to get details about a to-do set, including its completion status and to-do lists count.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.getTodoset({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `todosetId` | `number` | Yes      | —           |

**Output**

| Name                          | Type      | Required | Description |
| ----------------------------- | --------- | -------- | ----------- |
| `id`                          | `number`  | Yes      | —           |
| `status`                      | `string`  | Yes      | —           |
| `visible_to_clients`          | `boolean` | Yes      | —           |
| `created_at`                  | `string`  | Yes      | —           |
| `updated_at`                  | `string`  | Yes      | —           |
| `title`                       | `string`  | No       | —           |
| `inherits_status`             | `boolean` | Yes      | —           |
| `type`                        | `string`  | Yes      | —           |
| `url`                         | `string`  | Yes      | —           |
| `app_url`                     | `string`  | Yes      | —           |
| `bookmark_url`                | `string`  | No       | —           |
| `position`                    | `number`  | No       | —           |
| `bucket`                      | `object`  | Yes      | —           |
| `creator`                     | `object`  | Yes      | —           |
| `name`                        | `string`  | Yes      | —           |
| `todolists_count`             | `number`  | No       | —           |
| `todolists_url`               | `string`  | No       | —           |
| `completed_ratio`             | `string`  | No       | —           |
| `completed`                   | `boolean` | No       | —           |
| `app_todolists_url`           | `string`  | No       | —           |
| `todos_count`                 | `number`  | No       | —           |
| `completed_loose_todos_count` | `number`  | No       | —           |
| `todos_url`                   | `string`  | No       | —           |
| `app_todos_url`               | `string`  | No       | —           |

<AccordionGroup>
  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

***

### listTodolists

`todos.listTodolists`

Tool to get all to-do lists in a to-do set within a Basecamp project. Use when you need to retrieve all to-do lists from a specific to-do set, optionally filtering by status (archived or trashed).

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.todos.listTodolists({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `todosetId` | `number` | Yes      | —           |
| `status`    | `string` | No       | —           |
| `page`      | `number` | No       | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      subscription_url?: string,
      bubble_up_url: string,
      comments_count?: number,
      comments_url?: string,
      position?: number | null,
      parent: {
        id: number,
        title?: string | null,
        type: string,
        url: string,
        app_url: string
      },
      bucket: {
        id: number,
        name: string,
        type: string
      },
      creator: {
        id: number,
        attachable_sgid?: string,
        name: string,
        email_address?: string | null,
        personable_type?: string,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string,
        updated_at?: string,
        admin?: boolean,
        owner?: boolean,
        client?: boolean,
        employee?: boolean,
        time_zone?: string,
        avatar_url?: string,
        company?: {
          id: string | number,
          name?: string | null
        },
        can_manage_projects?: boolean,
        can_manage_people?: boolean,
        can_ping?: boolean,
        can_access_timesheet?: boolean,
        can_access_hill_charts?: boolean
      },
      description?: string | null,
      description_attachments: {
        id: string | number,
        sgid?: string | null,
        filename?: string | null,
        content_type?: string | null,
        byte_size?: number | null,
        download_url?: string | null,
        width?: number | null,
        height?: number | null,
        previewable?: boolean | null,
        preview_url?: string | null,
        thumbnail_url?: string | null
      }[],
      completed?: boolean,
      completed_ratio?: string,
      name: string,
      todos_url?: string,
      groups_url?: string,
      group_position_url?: string,
      app_todos_url?: string,
      color?: string | null,
      comments_app_url: string,
      boosts_count?: number,
      boosts_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsTodolistsComments

`todos.postBucketsTodolistsComments`

Tool to add a comment to a to-do list in a Basecamp project. Use when you need to comment on a todolist with feedback, updates, or discussions. All subscribers to the to-do list will be notified.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.postBucketsTodolistsComments({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |
| `content`     | `string` | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsTodolistsTodos

`todos.postBucketsTodolistsTodos`

Tool to create a to-do in a Basecamp to-do list within a project. Use when you need to add a new to-do item with optional description, assignees, and due date.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.postBucketsTodolistsTodos({});
```

**Input**

| Name                        | Type       | Required | Description |
| --------------------------- | ---------- | -------- | ----------- |
| `todolistId`                | `number`   | Yes      | —           |
| `content`                   | `string`   | No       | —           |
| `description`               | `string`   | No       | —           |
| `assignee_ids`              | `number[]` | No       | —           |
| `completion_subscriber_ids` | `number[]` | No       | —           |
| `notify`                    | `boolean`  | No       | —           |
| `due_on`                    | `string`   | No       | —           |
| `starts_on`                 | `string`   | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `starts_on`               | `string`   | No       | —           |
| `due_on`                  | `string`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |
| `steps`                   | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsTodosComments

`todos.postBucketsTodosComments`

Tool to add a comment to a to-do in a Basecamp project. Use when you need to add feedback, updates, or discussion to a specific to-do item.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.postBucketsTodosComments({});
```

**Input**

| Name          | Type     | Required | Description |
| ------------- | -------- | -------- | ----------- |
| `recordingId` | `number` | Yes      | —           |
| `content`     | `string` | No       | —           |

**Output**

| Name                  | Type       | Required | Description |
| --------------------- | ---------- | -------- | ----------- |
| `id`                  | `number`   | Yes      | —           |
| `status`              | `string`   | Yes      | —           |
| `visible_to_clients`  | `boolean`  | Yes      | —           |
| `created_at`          | `string`   | Yes      | —           |
| `updated_at`          | `string`   | Yes      | —           |
| `title`               | `string`   | No       | —           |
| `inherits_status`     | `boolean`  | Yes      | —           |
| `type`                | `string`   | Yes      | —           |
| `url`                 | `string`   | Yes      | —           |
| `app_url`             | `string`   | Yes      | —           |
| `bookmark_url`        | `string`   | No       | —           |
| `parent`              | `object`   | Yes      | —           |
| `bucket`              | `object`   | Yes      | —           |
| `creator`             | `object`   | Yes      | —           |
| `content`             | `string`   | No       | —           |
| `content_attachments` | `object[]` | Yes      | —           |
| `boosts_count`        | `number`   | No       | —           |
| `boosts_url`          | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string,
      bucket?: {
        id: number,
        name: string,
        type: string
      }
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="content_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsTodosetsTodolists

`todos.postBucketsTodosetsTodolists`

Tool to create a new to-do list in a Basecamp to-do set within a project. Use when you need to add a new to-do list with optional HTML description.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.postBucketsTodosetsTodolists({});
```

**Input**

| Name                 | Type      | Required | Description |
| -------------------- | --------- | -------- | ----------- |
| `todosetId`          | `number`  | Yes      | —           |
| `name`               | `string`  | Yes      | —           |
| `description`        | `string`  | No       | —           |
| `visible_to_clients` | `boolean` | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `bubble_up_url`           | `string`   | Yes      | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `completed`               | `boolean`  | No       | —           |
| `completed_ratio`         | `string`   | No       | —           |
| `name`                    | `string`   | Yes      | —           |
| `todos_url`               | `string`   | No       | —           |
| `groups_url`              | `string`   | No       | —           |
| `group_position_url`      | `string`   | No       | —           |
| `app_todos_url`           | `string`   | No       | —           |
| `color`                   | `string`   | No       | —           |
| `comments_app_url`        | `string`   | Yes      | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsTodolistsGroupsPosition

`todos.putBucketsTodolistsGroupsPosition`

Tool to reposition a to-do list group within its parent to-do list in a Basecamp project. Use when you need to change the order of to-do list groups by moving a group to a specific position.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.putBucketsTodolistsGroupsPosition({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `groupId`  | `number` | Yes      | —           |
| `position` | `number` | No       | —           |

**Output:** `undefined`

***

### putBucketsTodos

`todos.putBucketsTodos`

Tool to update an existing to-do in a Basecamp project. Use when you need to modify a to-do's content, description, assignees, dates, or notification settings. Note: Pass all existing parameters along with those being updated to prevent clearing values.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.putBucketsTodos({});
```

**Input**

| Name                        | Type       | Required | Description |
| --------------------------- | ---------- | -------- | ----------- |
| `todoId`                    | `number`   | Yes      | —           |
| `content`                   | `string`   | No       | —           |
| `description`               | `string`   | No       | —           |
| `assignee_ids`              | `number[]` | No       | —           |
| `completion_subscriber_ids` | `number[]` | No       | —           |
| `notify`                    | `boolean`  | No       | —           |
| `due_on`                    | `string`   | No       | —           |
| `starts_on`                 | `string`   | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `starts_on`               | `string`   | No       | —           |
| `due_on`                  | `string`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |
| `steps`                   | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsTodosPosition

`todos.putBucketsTodosPosition`

Tool to change the position of a to-do within its list in a Basecamp project. Use when you need to reorder to-dos by moving a specific to-do to a new position.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.putBucketsTodosPosition({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `todoId`    | `number` | Yes      | —           |
| `position`  | `number` | No       | —           |
| `parent_id` | `number` | No       | —           |

**Output:** `undefined`

***

### uncompleteTodo

`todos.uncompleteTodo`

Tool to mark a to-do as uncompleted in Basecamp. Use when you need to reverse the completion status of a completed to-do item.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.uncompleteTodo({});
```

**Input**

| Name     | Type     | Required | Description |
| -------- | -------- | -------- | ----------- |
| `todoId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### updateTodo

`todos.updateTodo`

Tool to update a to-do's content, assignees, or due date in a Basecamp project. Use when you need to modify an existing to-do item. Pass all existing parameters along with those being updated to prevent clearing values.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.todos.updateTodo({});
```

**Input**

| Name                        | Type       | Required | Description |
| --------------------------- | ---------- | -------- | ----------- |
| `todoId`                    | `number`   | Yes      | —           |
| `content`                   | `string`   | No       | —           |
| `description`               | `string`   | No       | —           |
| `assignee_ids`              | `number[]` | No       | —           |
| `completion_subscriber_ids` | `number[]` | No       | —           |
| `notify`                    | `boolean`  | No       | —           |
| `due_on`                    | `string`   | No       | —           |
| `starts_on`                 | `string`   | No       | —           |

**Output**

| Name                      | Type       | Required | Description |
| ------------------------- | ---------- | -------- | ----------- |
| `id`                      | `number`   | Yes      | —           |
| `status`                  | `string`   | Yes      | —           |
| `visible_to_clients`      | `boolean`  | Yes      | —           |
| `created_at`              | `string`   | Yes      | —           |
| `updated_at`              | `string`   | Yes      | —           |
| `title`                   | `string`   | No       | —           |
| `inherits_status`         | `boolean`  | Yes      | —           |
| `type`                    | `string`   | Yes      | —           |
| `url`                     | `string`   | Yes      | —           |
| `app_url`                 | `string`   | Yes      | —           |
| `bookmark_url`            | `string`   | No       | —           |
| `subscription_url`        | `string`   | No       | —           |
| `comments_count`          | `number`   | No       | —           |
| `comments_url`            | `string`   | No       | —           |
| `position`                | `number`   | No       | —           |
| `parent`                  | `object`   | Yes      | —           |
| `bucket`                  | `object`   | Yes      | —           |
| `creator`                 | `object`   | Yes      | —           |
| `description`             | `string`   | No       | —           |
| `completed`               | `boolean`  | No       | —           |
| `content`                 | `string`   | No       | —           |
| `description_attachments` | `object[]` | Yes      | —           |
| `starts_on`               | `string`   | No       | —           |
| `due_on`                  | `string`   | No       | —           |
| `assignees`               | `object[]` | No       | —           |
| `completion_subscribers`  | `object[]` | No       | —           |
| `completion_url`          | `string`   | No       | —           |
| `boosts_count`            | `number`   | No       | —           |
| `boosts_url`              | `string`   | No       | —           |
| `steps`                   | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="parent full type">
    ```ts theme={null}
    {
      id: number,
      title?: string | null,
      type: string,
      url: string,
      app_url: string
    }
    ```
  </Accordion>

  <Accordion title="bucket full type">
    ```ts theme={null}
    {
      id: number,
      name: string,
      type: string
    }
    ```
  </Accordion>

  <Accordion title="creator full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: number,
        name: string
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }
    ```
  </Accordion>

  <Accordion title="description_attachments full type">
    ```ts theme={null}
    {
      id: number,
      sgid: string,
      filename: string,
      content_type: string,
      byte_size: number,
      download_url: string,
      width?: number | null,
      height?: number | null,
      previewable: boolean,
      preview_url: string,
      thumbnail_url: string
    }[]
    ```
  </Accordion>

  <Accordion title="assignees full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="completion_subscribers full type">
    ```ts theme={null}
    {
      id: number,
      attachable_sgid?: string,
      name: string,
      email_address?: string | null,
      personable_type?: string,
      title?: string | null,
      bio?: string | null,
      tagline?: string | null,
      location?: string | null,
      created_at?: string,
      updated_at?: string,
      admin?: boolean,
      owner?: boolean,
      client?: boolean,
      employee?: boolean,
      time_zone?: string,
      avatar_url?: string,
      company?: {
        id: string | number,
        name?: string | null
      },
      can_manage_projects?: boolean,
      can_manage_people?: boolean,
      can_ping?: boolean,
      can_access_timesheet?: boolean,
      can_access_hill_charts?: boolean
    }[]
    ```
  </Accordion>

  <Accordion title="steps full type">
    ```ts theme={null}
    {
      id: number,
      status: string,
      visible_to_clients: boolean,
      created_at: string,
      updated_at: string,
      title?: string | null,
      inherits_status: boolean,
      type: string,
      url: string,
      app_url: string,
      bookmark_url?: string,
      position?: number | null,
      due_on?: string | null,
      completed?: boolean,
      completed_at?: string,
      parent: {
        id: string | number,
        title?: string | null,
        type?: string | null,
        url?: string | null,
        app_url?: string | null,
        bucket?: {
        } | null
      },
      bucket: {
        id: string | number,
        name?: string | null,
        type?: string | null
      },
      creator: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      completer?: {
        id: string | number,
        attachable_sgid?: string | null,
        name?: string | null,
        email_address?: string | null,
        personable_type?: string | null,
        title?: string | null,
        bio?: string | null,
        tagline?: string | null,
        location?: string | null,
        created_at?: string | null,
        updated_at?: string | null,
        admin?: boolean | null,
        owner?: boolean | null,
        client?: boolean | null,
        employee?: boolean | null,
        time_zone?: string | null,
        avatar_url?: string | null,
        company?: {
        } | null,
        can_manage_projects?: boolean | null,
        can_manage_people?: boolean | null,
        can_ping?: boolean | null,
        can_access_timesheet?: boolean | null,
        can_access_hill_charts?: boolean | null
      },
      assignees?: any[],
      completion_url?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Webhooks

### deleteWebhooks

`webhooks.deleteWebhooks`

Tool to delete a webhook from a Basecamp project. Use when you need to remove a webhook subscription from a project. Permanently deletes the specified webhook.

**Risk:** `destructive` · **Irreversible**

```ts theme={null}
await corsair.basecamp.api.webhooks.deleteWebhooks({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `webhookId` | `number` | Yes      | —           |

**Output:** `undefined`

***

### getBucketsWebhooks

`webhooks.getBucketsWebhooks`

Tool to retrieve all webhooks configured for a Basecamp project. Use when you need to list all webhook configurations including their payload URLs, event types, and active status.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.webhooks.getBucketsWebhooks({});
```

**Input**

| Name       | Type     | Required | Description |
| ---------- | -------- | -------- | ----------- |
| `bucketId` | `number` | Yes      | —           |

**Output:** `object[]`

<AccordionGroup>
  <Accordion title="Output full type">
    ```ts theme={null}
    {
      id: number,
      active?: boolean,
      created_at: string,
      updated_at: string,
      payload_url: string,
      types?: string[],
      url: string,
      app_url: string,
      recent_deliveries?: {
        id?: string | number,
        created_at?: string | null,
        request?: {
        } | null,
        response?: {
        } | null
      }[]
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### getWebhook

`webhooks.getWebhook`

Tool to retrieve a specific webhook by ID from a Basecamp project. Use when you need details about a webhook including its delivery history.

**Risk:** `read`

```ts theme={null}
await corsair.basecamp.api.webhooks.getWebhook({});
```

**Input**

| Name        | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `webhookId` | `number` | Yes      | —           |

**Output**

| Name                | Type       | Required | Description |
| ------------------- | ---------- | -------- | ----------- |
| `id`                | `number`   | Yes      | —           |
| `active`            | `boolean`  | No       | —           |
| `created_at`        | `string`   | Yes      | —           |
| `updated_at`        | `string`   | Yes      | —           |
| `payload_url`       | `string`   | Yes      | —           |
| `types`             | `string[]` | No       | —           |
| `url`               | `string`   | Yes      | —           |
| `app_url`           | `string`   | Yes      | —           |
| `recent_deliveries` | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="recent_deliveries full type">
    ```ts theme={null}
    {
      id?: number,
      created_at?: string,
      request?: {
        headers?: {
        } | null,
        body?: any
      },
      response?: {
        headers?: {
        } | null,
        code?: any,
        message?: string | null
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### postBucketsWebhooks

`webhooks.postBucketsWebhooks`

Tool to create a new webhook subscription for a Basecamp project. Use when you need to receive event notifications at a specified HTTPS endpoint for project activities.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.webhooks.postBucketsWebhooks({});
```

**Input**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `bucketId`    | `number`   | Yes      | —           |
| `payload_url` | `string`   | Yes      | —           |
| `types`       | `string[]` | Yes      | —           |
| `active`      | `boolean`  | No       | —           |

**Output**

| Name                | Type       | Required | Description |
| ------------------- | ---------- | -------- | ----------- |
| `id`                | `number`   | Yes      | —           |
| `active`            | `boolean`  | No       | —           |
| `created_at`        | `string`   | Yes      | —           |
| `updated_at`        | `string`   | Yes      | —           |
| `payload_url`       | `string`   | Yes      | —           |
| `types`             | `string[]` | No       | —           |
| `url`               | `string`   | Yes      | —           |
| `app_url`           | `string`   | Yes      | —           |
| `recent_deliveries` | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="recent_deliveries full type">
    ```ts theme={null}
    {
      id?: number,
      created_at?: string,
      request?: {
        headers?: {
        } | null,
        body?: any
      },
      response?: {
        headers?: {
        } | null,
        code?: any,
        message?: string | null
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### putBucketsWebhooks

`webhooks.putBucketsWebhooks`

Tool to update an existing webhook in a Basecamp project. Use when you need to modify the webhook's URL, event types, or active status.

**Risk:** `write`

```ts theme={null}
await corsair.basecamp.api.webhooks.putBucketsWebhooks({});
```

**Input**

| Name          | Type       | Required | Description |
| ------------- | ---------- | -------- | ----------- |
| `webhookId`   | `number`   | Yes      | —           |
| `payload_url` | `string`   | No       | —           |
| `types`       | `string[]` | No       | —           |
| `active`      | `boolean`  | No       | —           |

**Output**

| Name                | Type       | Required | Description |
| ------------------- | ---------- | -------- | ----------- |
| `id`                | `number`   | Yes      | —           |
| `active`            | `boolean`  | No       | —           |
| `created_at`        | `string`   | Yes      | —           |
| `updated_at`        | `string`   | Yes      | —           |
| `payload_url`       | `string`   | Yes      | —           |
| `types`             | `string[]` | No       | —           |
| `url`               | `string`   | Yes      | —           |
| `app_url`           | `string`   | Yes      | —           |
| `recent_deliveries` | `object[]` | No       | —           |

<AccordionGroup>
  <Accordion title="recent_deliveries full type">
    ```ts theme={null}
    {
      id?: number,
      created_at?: string,
      request?: {
        headers?: {
        } | null,
        body?: any
      },
      response?: {
        headers?: {
        } | null,
        code?: any,
        message?: string | null
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***
