From simpleapps
Basecamp 2 integration via MCP. Covers MCP tool reference, URL parsing, authentication, Chrome fallback, attachments, and site-info documents. Use when reading or writing Basecamp data.
npx claudepluginhub simpleapps-com/augur-skills --plugin simpleappsThis skill is limited to using the following tools:
IMPORTANT: MUST NOT create, edit, or delete anything in Basecamp without user permission.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
IMPORTANT: MUST NOT create, edit, or delete anything in Basecamp without user permission.
Content format: All write tools MUST use plain text with line breaks, NOT HTML. Basecamp returns HTML in responses but prefers plain text for creation.
Credentials stored at ~/.simpleapps/basecamp.json. If missing, ask the user to run:
uv run basecamp-auth
This opens the browser for OAuth, user clicks "Allow", credentials are saved automatically.
The basecamp MCP server is bundled with this plugin and starts automatically. API reference: https://github.com/basecamp/bcx-api
| Tool | Description |
|---|---|
list_projects | List projects. status: 'active', 'drafts', or 'archived' |
get_project | Get project details by project_id |
create_project | Create a new project (name, description) |
update_project | Update project name/description |
archive_project | Archive or unarchive a project (archive=False to reactivate) |
delete_project | Delete a project permanently |
| Tool | Description |
|---|---|
list_people | List all people on the account |
get_person | Get person details by person_id |
get_me | Get the authenticated user's profile |
list_person_projects | List projects accessible to a person |
delete_person | Remove a person from the account (admin only) |
| Tool | Description |
|---|---|
get_todo | Get a single todo with comments and attachments (project_id, todo_id) |
list_todos | List todos in a project. status: 'remaining', 'completed', or 'all' |
list_todos_due_since | List todos due after a date (YYYY-MM-DD) |
list_my_todos | List all open todos assigned to the current user (paginated) |
list_assigned_todos | List open todos assigned to any person_id |
create_todo | Create a todo in a todo list (project_id, todolist_id, content, assignee_id, due_date) |
update_todo | Update a todo's content, due date, or assignee |
assign_todo | Reassign a todo to a different person_id |
close_todo | Mark a todo as completed/closed |
reopen_todo | Reopen a completed todo |
delete_todo | Delete a todo permanently |
| Tool | Description |
|---|---|
create_comment | Add a comment to a todo (plain text) |
delete_comment | Delete a comment permanently |
| Tool | Description |
|---|---|
list_todolists | List active todo lists in a project |
list_all_todolists | List todo lists across all projects. status: 'active', 'completed', or 'trashed' |
get_todolist | Get all todos in a specific todo list |
create_todolist | Create a new todo list (project_id, name, description) |
update_todolist | Update a todo list's name, description, or position |
delete_todolist | Delete a todo list permanently |
| Tool | Description |
|---|---|
list_messages | List messages/discussions in a project (via topics) |
get_message | Get a message with comments and attachments |
create_message | Create a new discussion (project_id, subject, content) |
update_message | Update a message's subject/content |
delete_message | Delete a message permanently |
Note: Messages may not be available on all Basecamp plans.
| Tool | Description |
|---|---|
list_documents | List documents. project_id=0 for all projects |
get_document | Get a single document (e.g., site-info) |
create_document | Create a new document (title, content) |
update_document | Update a document's title/content |
delete_document | Delete a document permanently |
| Tool | Description |
|---|---|
list_calendars | List all calendars |
list_calendar_events | List events. Filter by project_id, start_date, end_date, past |
get_calendar_event | Get a specific calendar event |
create_calendar_event | Create an event (summary, starts_at, description, all_day, ends_at, remind_at) |
update_calendar_event | Update an event's fields |
delete_calendar_event | Delete a calendar event |
| Tool | Description |
|---|---|
list_topics | List topics. project_id=0 for all. archived=True for archived |
archive_topic | Archive a topic |
activate_topic | Reactivate an archived topic |
| Tool | Description |
|---|---|
list_attachments | List attachments. project_id=0 for all (paginated) |
get_attachment | Get attachment metadata and download URL (project_id, attachment_id) |
download_attachment | Download attachment to local file (project_id, attachment_id) |
get_upload | Get an upload with comments |
create_upload | Upload a local file to a project's Files section |
delete_upload | Delete an upload (move to trash) |
| Tool | Description |
|---|---|
list_events | Activity log since a datetime. Filter by project_id or person_id |
| Tool | Description |
|---|---|
list_accesses | List people with access to a project |
grant_access | Grant team access (comma-separated ids and/or email_addresses) |
grant_client_access | Grant client-level access (comma-separated ids and/or email_addresses) |
revoke_access | Revoke a person's project access |
| Tool | Description |
|---|---|
list_stars | List starred/favorite projects |
star_project | Star (bookmark) a project |
unstar_project | Remove star from a project |
| Tool | Description |
|---|---|
list_forwards | List email forwards. project_id=0 for all |
get_forward | Get a specific email forward with comments |
Note: The BCX API does not have a search endpoint. To find content, use list_topics(project_id) to browse, or list_messages(project_id) for messages. For cross-project browsing, use list_topics() (no project_id) to get recent topics across all projects.
A URL like https://basecamp.com/2805226/projects/18932786/todos/514631271 gives you project_id=18932786 and todo_id=514631271.
Base URL: https://basecamp.com/2805226
Attachments can be on todos, comments, messages, or uploads. To retrieve them:
get_todo or get_message — attachments appear with IDs in both the top-level section and within individual commentsget_attachment(project_id, attachment_id) to see metadata, size, content type, and download URLdownload_attachment(project_id, attachment_id) — saves to ~/.simpleapps/downloads/{project_id}/Read tool on the local file path to view content (works for images, PDFs, Excel, text)To browse all attachments in a project, use list_attachments(project_id).
Each Basecamp project SHOULD have a site-info text document in its Documents section. It contains site-specific details like siteId and domain name needed for GitHub issues and development work. Use list_documents + get_document to find it. If no site-info document exists, ask the user to create one.
If the MCP server is unavailable (credentials expired, server not running), use Chrome:
tabs_context_mcp to get current tabsget_page_text to extract contentTop nav: Projects | Calendar | Everything | Progress | Everyone | Me
| Page | Path |
|---|---|
| Dashboard | / |
| All projects | /projects |
| My assignments | click "Me" in top nav |
| Project overview | /projects/<project_id> |
| Todo lists | /projects/<project_id>/todolists |
| Documents | /projects/<project_id>/documents |
Me page (/people/<person_id>) — open to-dos (~45+ shows a "See all X open to-dos" link, YOU MUST click it). The full list is at /people/<person_id>/outstanding_todos.
JSON API via Chrome: Navigate to /api/v1/projects/<project_id>/todos/<todo_id>.json then use get_page_text. WebFetch will NOT work — Chrome carries session cookies.
person_id on first visit for the sessionlist_my_todos for "what do I need to work on?"list_people to find person_id before calling assign_todobasecamp-auth