| name | basecamp |
| description | Interact with Basecamp projects via CLI. Manage card tables, todos, messages, documents, schedules, campfires, people, check-ins, uploads, and more. Use when the user mentions Basecamp, cards, todos, messages, or project management. |
Basecamp CLI
Command-line interface for Basecamp. All output is JSON.
Prerequisites
basecamp version
basecamp projects
Project Context
Create .basecamp.yml in a directory to set default project:
project_id: 12345678
Then omit project_id from commands when in that directory.
Commands Reference
Projects & Boards
basecamp projects
basecamp boards [project_id]
basecamp columns [project_id] <board_id>
Cards
basecamp cards [project_id] <board_id>
basecamp cards [project_id] <board_id> --column "Name"
basecamp card [project_id] <card_id>
basecamp card [project_id] <card_id> --comments
basecamp card-create [project_id] <board_id> --column <col_id> --title "Title"
basecamp card-update [project_id] <card_id> --title "New" --content "Text"
basecamp move [project_id] <board_id> <card_id> --to "Column Name"
Card Steps (Checklists)
basecamp step-create [project_id] <card_id> --title "Step"
basecamp step-create [project_id] <card_id> --title "Step" --due 2026-02-01 --assignees "123,456"
basecamp step-update [project_id] <step_id> --title "Updated"
basecamp step-complete [project_id] <step_id>
basecamp step-uncomplete [project_id] <step_id>
basecamp step-reposition [project_id] <card_id> <step_id> --position 0
Todos
basecamp todolists [project_id]
basecamp todos [project_id] <todolist_id>
basecamp todos [project_id] <todolist_id> --completed
basecamp todo [project_id] <todo_id>
basecamp todo-create [project_id] <list_id> --content "Task" --due 2026-02-01
basecamp todo-complete [project_id] <todo_id>
basecamp todo-uncomplete [project_id] <todo_id>
basecamp todo-reposition [project_id] <todo_id> --position 1
Todo Groups
basecamp todolist-groups [project_id] <todolist_id>
basecamp todolist-group [project_id] <group_id>
basecamp todolist-group-create [project_id] <list_id> --name "Sprint 1" --color green
Messages
basecamp messages [project_id]
basecamp message [project_id] <message_id>
basecamp message [project_id] <message_id> --comments
basecamp message-create [project_id] --subject "Subject" --content "Body"
Comments
basecamp comment-add [project_id] <recording_id> --content "Comment"
Documents
basecamp docs [project_id]
basecamp doc [project_id] <doc_id>
basecamp doc [project_id] <doc_id> --comments
basecamp doc-create [project_id] --title "Title" --content "Content"
Schedule
basecamp schedule [project_id]
basecamp event [project_id] <entry_id>
basecamp event [project_id] <entry_id> --comments
basecamp event-create [project_id] --summary "Meeting" --starts-at "2026-02-01T10:00:00Z" --ends-at "2026-02-01T11:00:00Z"
basecamp event-create [project_id] --summary "Holiday" --starts-at "2026-02-01" --ends-at "2026-02-01" --all-day
Campfire
basecamp campfire [project_id]
basecamp campfire-post [project_id] --content "Hello!"
Search
basecamp search "query"
basecamp search "query" --type Todo
basecamp search "query" --project <project_id>
Types: Todo, Message, Document, Kanban::Card, Schedule::Entry, Comment
People
basecamp people
basecamp person <person_id>
basecamp people-pingable
basecamp people-project [project_id]
basecamp my-profile
basecamp project-access [project_id] --grant "123,456" --revoke "789"
Automatic Check-ins
basecamp questionnaire [project_id]
basecamp questions [project_id]
basecamp question [project_id] <question_id>
basecamp question [project_id] <question_id> --comments
basecamp question-answers [project_id] <question_id>
basecamp question-answer [project_id] <answer_id>
Uploads
basecamp upload /path/to/file.pdf
basecamp uploads [project_id] <vault_id>
basecamp upload-view [project_id] <upload_id>
basecamp upload-view [project_id] <upload_id> --comments
Recordings Management
basecamp archive [project_id] <recording_id>
basecamp unarchive [project_id] <recording_id>
basecamp trash [project_id] <recording_id>
Message Types
basecamp message-types [project_id]
basecamp message-type [project_id] <type_id>
basecamp message-type-create [project_id] --name "Announcement" --icon "📢"
basecamp message-type-update [project_id] <type_id> --name "Update" --icon "✅"
basecamp message-type-delete [project_id] <type_id>
Activity Events
basecamp events
basecamp events-project [project_id]
basecamp events-recording [project_id] <recording_id>
Error Handling
Errors return JSON to stderr:
{"error": "not authenticated, run 'basecamp auth' first"}
Tips
- All commands output JSON - pipe to
jq for filtering
- Use
--comments flag to include comments on supported commands
- Recording IDs work across types (todos, cards, messages, etc.)
- Get vault_id from
basecamp docs output for upload commands