> This page is for Agent Handler.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.merge.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.merge.dev/_mcp/server.

# Basecamp

**Authentication:** OAuth. See [Magic Link](/merge-agent-handler/features/magic-link) for the runtime auth flow, or [Application credentials](/merge-agent-handler/admin-setup/add-oauth-credentials) to bring your own OAuth app.

## Sample use cases

* List every to-do assigned to me across all Basecamp projects, sorted by due date.
* Post the standup summary from this morning's huddle to the `Engineering Internal` campfire.
* Find every overdue task in the `Q2 Launch` project and ping the owner.

## Available Tools

#### list\_comments

List all comments on a recording (todo, message, etc.). Returns paginated list of active comments.

#### get\_comment

Get a specific comment by ID with full details including content and creator.

#### create\_comment

Create a new comment on a recording (todo, message, etc.). Content must be HTML formatted.

#### update\_comment

Update an existing comment's content. Content must be HTML formatted.

#### list\_people

List all people visible to the current user in the Basecamp account.

#### get\_person

Get a specific person by ID with full profile details.

#### get\_current\_user

Get the current authenticated user's profile.

#### get\_project\_people

Get all active people on a specific project.

#### list\_projects

List all projects accessible to the user. Returns active projects by default. Use status to filter.

#### get\_project

Get a specific project by ID with full details including dock items and tools.

#### create\_project

Create a new project. Requires a name. Optional: description.

#### update\_project

Update a project's name and/or description.

#### list\_schedule\_entries

List all schedule entries in a schedule. Returns active entries by default. Use status to filter.

#### get\_schedule\_entry

Get a specific schedule entry by ID with full details including participants and recurrence.

#### create\_schedule\_entry

Create a new schedule entry. Requires summary, starts\_at, and ends\_at. Optional: description, participants.

#### update\_schedule\_entry

Update a schedule entry. All fields are optional - only provided fields will be updated.

#### list\_todos

List todos in a todolist. Returns active pending todos by default. Use status/completed params to filter.

#### get\_todo

Get a specific todo by ID with full details including assignees, dates, and completion status.

#### create\_todo

Create a new todo in a todolist. Requires content (title). Optional: description, assignees, due date.

#### update\_todo

Update a todo. Content is always required. Pass all fields you want to keep; omitted fields may be cleared.

#### complete\_todo

Mark a todo as completed.

#### uncomplete\_todo

Mark a completed todo as incomplete/pending again.

#### list\_todolists

List all todolists in a todoset/project. Returns active lists by default. Use status to filter.

#### get\_todolist

Get a specific todolist by ID with details including completion ratio and todo count. Optionally provide the 'url' field from list\_todolists response for direct access.

#### create\_todolist

Create a new todolist in a todoset.

#### update\_todolist

Update a todolist name and description. Name is required and cannot be blank.