# Basecamp

Manage Basecamp 3: projects, to-dos, messages, schedules, documents, people. Exposes **44 actions** covering the full API surface
the agent needs - read and write.

## What it can do

| Method | What it does |
| --- | --- |
| `basecamp_list_projects` | List projects - GET /projects.json. |
| `basecamp_get_project` | Get one project - GET /projects/&#123;id&#125;.json. |
| `basecamp_create_project` | Create a project - POST /projects.json. |
| `basecamp_update_project` | Update a project - PUT /projects/&#123;id&#125;.json. |
| `basecamp_archive_project` | Archive a project - PUT /projects/&#123;id&#125;/archive.json. |
| `basecamp_unarchive_project` | Unarchive a project - PUT /projects/&#123;id&#125;/unarchive.json. |
| `basecamp_list_todosets` | List to-do sets in a project - GET /projects/&#123;project_id&#125;/todosetsimpleLists.json. |
| `basecamp_get_todoset` | Get one to-do set - GET /projects/&#123;project_id&#125;/todosets/&#123;id&#125;.json. |
| `basecamp_create_todoset` | Create a to-do set - POST /projects/&#123;project_id&#125;/todosets.json. |
| `basecamp_update_todoset` | Update a to-do set - PUT /projects/&#123;project_id&#125;/todosets/&#123;id&#125;.json. |
| `basecamp_list_todolists` | List to-do lists in a to-do set - GET /projects/&#123;project_id&#125;/todosets/&#123;todoset_id&#125;/todolists.json. |
| `basecamp_get_todolist` | Get one to-do list - GET /projects/&#123;project_id&#125;/todolists/&#123;id&#125;.json. |
| `basecamp_create_todolist` | Create a to-do list - POST /projects/&#123;project_id&#125;/todosets/&#123;todoset_id&#125;/todolists.json. |
| `basecamp_update_todolist` | Update a to-do list - PUT /projects/&#123;project_id&#125;/todolists/&#123;id&#125;.json. |
| `basecamp_list_todos` | List to-dos in a to-do list - GET /projects/&#123;project_id&#125;/todolists/&#123;todolist_id&#125;/todos.json. |
| `basecamp_list_todos_assigned` | List assigned to-dos (across all projects) - GET /my/todos.json. |
| `basecamp_get_todo` | Get one to-do - GET /projects/&#123;project_id&#125;/todos/&#123;id&#125;.json. |
| `basecamp_create_todo` | Create a to-do - POST /projects/&#123;project_id&#125;/todolists/&#123;todolist_id&#125;/todos.json. |
| `basecamp_update_todo` | Update a to-do - PUT /projects/&#123;project_id&#125;/todos/&#123;id&#125;.json. |
| `basecamp_complete_todo` | Mark a to-do as completed - PUT /projects/&#123;project_id&#125;/todos/&#123;id&#125;/completion.json. |
| `basecamp_uncomplete_todo` | Mark a to-do as incomplete - DELETE /projects/&#123;project_id&#125;/todos/&#123;id&#125;/completion.json. |
| `basecamp_list_messages` | List messages in a project - GET /projects/&#123;project_id&#125;/messages.json. |
| `basecamp_get_message` | Get one message - GET /projects/&#123;project_id&#125;/messages/&#123;id&#125;.json. |
| `basecamp_create_message` | Create a message (discussion post) - POST /projects/&#123;project_id&#125;/messages.json. |
| `basecamp_update_message` | Update a message - PUT /projects/&#123;project_id&#125;/messages/&#123;id&#125;.json. |
| `basecamp_list_comments` | List comments on an object (message, to-do, document, etc.) - GET /projects/&#123;project_id&#125;/&#123;parent_id&#125;/comments.json. |
| `basecamp_get_comment` | Get one comment - GET /projects/&#123;project_id&#125;/comments/&#123;id&#125;.json. |
| `basecamp_create_comment` | Create a comment on an object - POST /projects/&#123;project_id&#125;/&#123;parent_id&#125;/comments.json. |
| `basecamp_update_comment` | Update a comment - PUT /projects/&#123;project_id&#125;/comments/&#123;id&#125;.json. |
| `basecamp_list_people` | List people with access to a project - GET /projects/&#123;project_id&#125;/people.json. |
| `basecamp_get_person` | Get one person - GET /people/&#123;id&#125;.json. |
| `basecamp_list_schedules` | List schedules (calendars) in a project - GET /projects/&#123;project_id&#125;/schedules.json. |
| `basecamp_get_schedule` | Get one schedule - GET /projects/&#123;project_id&#125;/schedules/&#123;id&#125;.json. |
| `basecamp_list_schedule_entries` | List schedule entries (events) in a calendar - GET /projects/&#123;project_id&#125;/schedules/&#123;schedule_id&#125;/entries.json. |
| `basecamp_get_schedule_entry` | Get one schedule entry (event) - GET /projects/&#123;project_id&#125;/schedules/&#123;schedule_id&#125;/entries/&#123;id&#125;.json. |
| `basecamp_create_schedule_entry` | Create a schedule entry (event) - POST /projects/&#123;project_id&#125;/schedules/&#123;schedule_id&#125;/entries.json. |
| `basecamp_update_schedule_entry` | Update a schedule entry - PUT /projects/&#123;project_id&#125;/schedule_entries/&#123;id&#125;.json. |
| `basecamp_list_documents` | List documents in a project - GET /projects/&#123;project_id&#125;/documents.json. |
| `basecamp_get_document` | Get one document - GET /projects/&#123;project_id&#125;/documents/&#123;id&#125;.json. |
| `basecamp_create_document` | Create a document - POST /projects/&#123;project_id&#125;/documents.json. |
| `basecamp_update_document` | Update a document - PUT /projects/&#123;project_id&#125;/documents/&#123;id&#125;.json. |
| `basecamp_list_vaults` | List document vaults in a project - GET /projects/&#123;project_id&#125;/vaults.json. |
| `basecamp_list_files` | List files in a project - GET /projects/&#123;project_id&#125;/files.json. |
| `basecamp_get_file` | Get one file - GET /projects/&#123;project_id&#125;/files/&#123;id&#125;.json. |

## How to get credentials

This connector uses **OAuth 2.0**. In FlyMyAI, open the tool and click
**Connect** - you'll be redirected to Basecamp to authorize, then back to
FlyMyAI. There is no API key to paste.

> The OAuth app must be registered by FlyMyAI for this provider. If you see
> *"connection not configured"*, the provider's client credentials are still
> being set up - check back shortly.

## Fields to fill in FlyMyAI

| FlyMyAI field | Where it comes from |
| --- | --- |
| _(none)_ | Connect via OAuth - nothing to paste. |

## Troubleshooting

- **`401 Unauthorized` / `403 Forbidden`** - the OAuth connection expired or was revoked - reconnect.
- **`429 Too Many Requests`** - you hit the provider rate limit; retry after a short backoff.
- **Unexpected `4xx` on writes** - double-check required fields; the agent confirms before write actions.

## Links

- [Basecamp API documentation](https://github.com/basecamp/bc3-api)
