- basecamp: Basecamp project management via MCP (todos, kanban, projects) - brainstorming: General-purpose ideation with Anytype save - plan-writing: Project planning with templates (kickoff, stakeholders, tasks, risks) - Update agent model from GPT-4o to minimax-m2.1-free - Update README with new skills
199 lines
6.5 KiB
Markdown
199 lines
6.5 KiB
Markdown
# Basecamp MCP Tools Reference
|
|
|
|
Complete reference for all 46 available Basecamp MCP tools.
|
|
|
|
## Projects
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_projects` | none | List of all projects with id, name, description |
|
|
| `get_project` | project_id | Project details including dock (todosets, card tables, etc.) |
|
|
|
|
## Todo Lists
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_todolists` | project_id | All todo lists in project |
|
|
|
|
## Todos
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_todos` | project_id, todolist_id | All todos (pagination handled) |
|
|
| `create_todo` | project_id, todolist_id, content, due_on?, assignee_ids?, notify? | Created todo |
|
|
| `update_todo` | project_id, todo_id, content?, due_on?, assignee_ids? | Updated todo |
|
|
| `delete_todo` | project_id, todo_id | Success confirmation |
|
|
| `complete_todo` | project_id, todo_id | Completed todo |
|
|
| `uncomplete_todo` | project_id, todo_id | Reopened todo |
|
|
|
|
### Todo Parameters
|
|
|
|
- `content`: String - The todo text
|
|
- `due_on`: String - Date in YYYY-MM-DD format
|
|
- `assignee_ids`: Array of integers - Person IDs to assign
|
|
- `notify`: Boolean - Whether to notify assignees
|
|
|
|
## Card Tables
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_card_tables` | project_id | All card tables in project |
|
|
| `get_card_table` | project_id | Primary card table details |
|
|
|
|
## Columns
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_columns` | project_id, card_table_id | All columns in card table |
|
|
| `get_column` | project_id, column_id | Column details |
|
|
| `create_column` | project_id, card_table_id, title | New column |
|
|
| `update_column` | project_id, column_id, title | Updated column |
|
|
| `move_column` | project_id, card_table_id, column_id, position | Moved column |
|
|
| `update_column_color` | project_id, column_id, color | Updated color |
|
|
| `put_column_on_hold` | project_id, column_id | Column frozen |
|
|
| `remove_column_hold` | project_id, column_id | Column unfrozen |
|
|
| `watch_column` | project_id, column_id | Subscribed to notifications |
|
|
| `unwatch_column` | project_id, column_id | Unsubscribed |
|
|
|
|
### Column Colors
|
|
|
|
Available colors for `update_column_color`:
|
|
- white, grey, pink, red, orange, yellow, green, teal, blue, purple
|
|
|
|
## Cards
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_cards` | project_id, column_id | All cards in column |
|
|
| `get_card` | project_id, card_id | Card details |
|
|
| `create_card` | project_id, column_id, title, content?, due_on?, notify? | New card |
|
|
| `update_card` | project_id, card_id, title?, content?, due_on?, assignee_ids? | Updated card |
|
|
| `move_card` | project_id, card_id, column_id | Card moved to column |
|
|
| `complete_card` | project_id, card_id | Card marked complete |
|
|
| `uncomplete_card` | project_id, card_id | Card reopened |
|
|
|
|
### Card Parameters
|
|
|
|
- `title`: String - Card title
|
|
- `content`: String - Card description/body (supports HTML)
|
|
- `due_on`: String - Date in YYYY-MM-DD format
|
|
- `assignee_ids`: Array of integers - Person IDs
|
|
- `notify`: Boolean - Notify assignees on creation
|
|
|
|
## Card Steps (Subtasks)
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_card_steps` | project_id, card_id | All steps on card |
|
|
| `create_card_step` | project_id, card_id, title, due_on?, assignee_ids? | New step |
|
|
| `get_card_step` | project_id, step_id | Step details |
|
|
| `update_card_step` | project_id, step_id, title?, due_on?, assignee_ids? | Updated step |
|
|
| `delete_card_step` | project_id, step_id | Step deleted |
|
|
| `complete_card_step` | project_id, step_id | Step completed |
|
|
| `uncomplete_card_step` | project_id, step_id | Step reopened |
|
|
|
|
## Search
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `search_basecamp` | query, project_id? | Matching todos, messages, etc. |
|
|
|
|
- Omit `project_id` for global search across all projects
|
|
- Include `project_id` to scope search to specific project
|
|
|
|
## Communication
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_campfire_lines` | project_id, campfire_id | Recent chat messages |
|
|
| `get_comments` | project_id, recording_id | Comments on any item |
|
|
| `create_comment` | project_id, recording_id, content | New comment |
|
|
|
|
### Comment Parameters
|
|
|
|
- `recording_id`: The ID of the item (todo, card, document, etc.)
|
|
- `content`: String - Comment text (supports HTML)
|
|
|
|
## Daily Check-ins
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_daily_check_ins` | project_id, page? | Check-in questions |
|
|
| `get_question_answers` | project_id, question_id, page? | Answers to question |
|
|
|
|
## Documents
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_documents` | project_id, vault_id | Documents in vault |
|
|
| `get_document` | project_id, document_id | Document content |
|
|
| `create_document` | project_id, vault_id, title, content, status? | New document |
|
|
| `update_document` | project_id, document_id, title?, content? | Updated document |
|
|
| `trash_document` | project_id, document_id | Document trashed |
|
|
|
|
### Document Parameters
|
|
|
|
- `vault_id`: Found in project dock as the docs/files container
|
|
- `content`: String - Document body (supports HTML)
|
|
- `status`: "active" or "archived"
|
|
|
|
## Attachments
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `create_attachment` | file_path, name, content_type? | Uploaded attachment |
|
|
|
|
## Events
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_events` | project_id, recording_id | Activity events on item |
|
|
|
|
## Webhooks
|
|
|
|
| Tool | Parameters | Returns |
|
|
|------|------------|---------|
|
|
| `get_webhooks` | project_id | Project webhooks |
|
|
| `create_webhook` | project_id, payload_url, types? | New webhook |
|
|
| `delete_webhook` | project_id, webhook_id | Webhook deleted |
|
|
|
|
### Webhook Types
|
|
|
|
Available types for `create_webhook`:
|
|
- Comment, Document, GoogleDocument, Message, Question::Answer
|
|
- Schedule::Entry, Todo, Todolist, Upload, Vault, Card, CardTable::Column
|
|
|
|
## Common Patterns
|
|
|
|
### Find project by name
|
|
|
|
```
|
|
1. get_projects → list all
|
|
2. Match name (case-insensitive partial match)
|
|
3. Return project_id
|
|
```
|
|
|
|
### Find todoset ID for a project
|
|
|
|
```
|
|
1. get_project(project_id)
|
|
2. Look in dock array for item with name "todoset"
|
|
3. Extract id from dock item URL
|
|
```
|
|
|
|
### Find card table ID
|
|
|
|
```
|
|
1. get_project(project_id)
|
|
2. Look in dock for "kanban_board" or use get_card_tables
|
|
3. Extract card_table_id
|
|
```
|
|
|
|
### Get all todos across all lists
|
|
|
|
```
|
|
1. get_todolists(project_id)
|
|
2. For each todolist: get_todos(project_id, todolist_id)
|
|
3. Aggregate results
|
|
```
|