basecamp
Basecamp API integration with managed OAuth. Manage projects, to-dos, messages, schedules, documents, and team collaboration. Use this skill when users want to create and manage projects, to-do lists, schedule events, or collaborate with teams in Basecamp. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Requires network access and valid Maton API key.
Install
mkdir -p .claude/skills/basecamp && curl -L -o skill.zip "https://mcp.directory/api/skills/download/5576" && unzip -o skill.zip -d .claude/skills/basecamp && rm skill.zipInstalls to .claude/skills/basecamp
About this skill
Basecamp
Access the Basecamp 4 API with managed OAuth authentication. Manage projects, to-dos, messages, schedules, documents, and team collaboration.
Quick Start
# List all projects
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/basecamp/projects.json')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Base URL
https://gateway.maton.ai/basecamp/{resource}.json
The gateway proxies requests to 3.basecampapi.com/{account_id}/ and automatically injects your OAuth token and account ID.
Important: All Basecamp API URLs must end with .json.
Authentication
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
Environment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Copy your API key
Connection Management
Manage your Basecamp OAuth connections at https://ctrl.maton.ai.
List Connections
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=basecamp&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Create Connection
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'basecamp'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Get Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "71e313c8-9100-48c6-8ea1-6323f6fafd04",
"status": "ACTIVE",
"creation_time": "2026-02-08T03:12:39.815086Z",
"last_updated_time": "2026-02-08T03:12:59.259878Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "basecamp",
"metadata": {}
}
}
Open the returned url in a browser to complete OAuth authorization.
Delete Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Specifying Connection
If you have multiple Basecamp connections, specify which one to use with the Maton-Connection header:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/basecamp/projects.json')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '71e313c8-9100-48c6-8ea1-6323f6fafd04')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection.
API Reference
User Info
Get Current User
GET /basecamp/my/profile.json
Response:
{
"id": 51197030,
"name": "Chris Kim",
"email_address": "chris@example.com",
"admin": true,
"owner": true,
"time_zone": "America/Los_Angeles",
"avatar_url": "https://..."
}
People Operations
List People
GET /basecamp/people.json
Response:
[
{
"id": 51197030,
"name": "Chris Kim",
"email_address": "chris@example.com",
"admin": true,
"owner": true,
"employee": true,
"time_zone": "America/Los_Angeles"
}
]
Get Person
GET /basecamp/people/{person_id}.json
List Project Members
GET /basecamp/projects/{project_id}/people.json
Project Operations
List Projects
GET /basecamp/projects.json
Response:
[
{
"id": 46005636,
"status": "active",
"name": "Getting Started",
"description": "Quickly get up to speed with everything Basecamp",
"created_at": "2026-02-05T22:59:26.087Z",
"url": "https://3.basecampapi.com/6153810/projects/46005636.json",
"dock": [...]
}
]
Get Project
GET /basecamp/projects/{project_id}.json
The project response includes a dock array with available tools (message_board, todoset, vault, chat, schedule, etc.). Each dock item has:
id: The tool's IDname: Tool type (e.g., "todoset", "message_board")enabled: Whether the tool is activeurl: Direct URL to access the tool
Create Project
POST /basecamp/projects.json
Content-Type: application/json
{
"name": "New Project",
"description": "Project description"
}
Update Project
PUT /basecamp/projects/{project_id}.json
Content-Type: application/json
{
"name": "Updated Project Name",
"description": "Updated description"
}
Delete (Trash) Project
DELETE /basecamp/projects/{project_id}.json
To-Do Operations
Get Todoset
First, get the todoset ID from the project's dock:
GET /basecamp/buckets/{project_id}/todosets/{todoset_id}.json
List Todolists
GET /basecamp/buckets/{project_id}/todosets/{todoset_id}/todolists.json
Response:
[
{
"id": 9550474442,
"title": "Basecamp essentials",
"description": "",
"completed": false,
"completed_ratio": "0/5",
"url": "https://..."
}
]
Create Todolist
POST /basecamp/buckets/{project_id}/todosets/{todoset_id}/todolists.json
Content-Type: application/json
{
"name": "New Todo List",
"description": "List description"
}
Get Todolist
GET /basecamp/buckets/{project_id}/todolists/{todolist_id}.json
List Todos
GET /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
Response:
[
{
"id": 9550474446,
"content": "Start here",
"description": "",
"completed": false,
"due_on": null,
"assignees": []
}
]
Create Todo
POST /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
Content-Type: application/json
{
"content": "New todo item",
"description": "Todo description",
"due_on": "2026-02-15",
"assignee_ids": [51197030]
}
Response:
{
"id": 9555973289,
"content": "New todo item",
"completed": false
}
Update Todo
PUT /basecamp/buckets/{project_id}/todos/{todo_id}.json
Content-Type: application/json
{
"content": "Updated todo",
"description": "Updated description"
}
Complete Todo
POST /basecamp/buckets/{project_id}/todos/{todo_id}/completion.json
Returns 204 on success.
Uncomplete Todo
DELETE /basecamp/buckets/{project_id}/todos/{todo_id}/completion.json
Message Board Operations
Get Message Board
GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}.json
List Messages
GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}/messages.json
Create Message
POST /basecamp/buckets/{project_id}/message_boards/{message_board_id}/messages.json
Content-Type: application/json
{
"subject": "Message Subject",
"content": "<p>Message body with HTML</p>",
"category_id": 123
}
Get Message
GET /basecamp/buckets/{project_id}/messages/{message_id}.json
Update Message
PUT /basecamp/buckets/{project_id}/messages/{message_id}.json
Content-Type: application/json
{
"subject": "Updated Subject",
"content": "<p>Updated content</p>"
}
Schedule Operations
Get Schedule
GET /basecamp/buckets/{project_id}/schedules/{schedule_id}.json
List Schedule Entries
GET /basecamp/buckets/{project_id}/schedules/{schedule_id}/entries.json
Create Schedule Entry
POST /basecamp/buckets/{project_id}/schedules/{schedule_id}/entries.json
Content-Type: application/json
{
"summary": "Team Meeting",
"description": "Weekly sync",
"starts_at": "2026-02-15T14:00:00Z",
"ends_at": "2026-02-15T15:00:00Z",
"all_day": false,
"participant_ids": [51197030]
}
Update Schedule Entry
PUT /basecamp/buckets/{project_id}/schedule_entries/{entry_id}.json
Content-Type: application/json
{
"summary": "Updated Meeting",
"starts_at": "2026-02-15T15:00:00Z",
"ends_at": "2026-02-15T16:00:00Z"
}
Vault (Documents & Files) Operations
Get Vault
GET /basecamp/buckets/{project_id}/vaults/{vault_id}.json
List Documents in Vault
GET /basecamp/buckets/{project_id}/vaults/{vault_id}/documents.json
Create Document
POST /basecamp/buckets/{project_id}/vaults/{vault_id}/documents.json
Content-Type: application/json
{
"title": "Document Title",
"content": "<p>Document content with HTML</p>"
}
List Uploads in Vault
GET /basecamp/buckets/{project_id}/vaults/{vault_id}/uploads.json
Campfire (Chat) Operations
List All Campfires
GET /basecamp/chats.json
Get Campfire
GET /basecamp/buckets/{project_id}/chats/{chat_id}.json
List Campfire Lines (Messages)
GET /basecamp/buckets/{project_id}/chats/{chat_id}/lines.json
Create Campfire Line
POST /basecamp/buckets/{project_id}/chats/{chat_id}/lines.jso
---
*Content truncated.*
More by openclaw
View all skills by openclaw →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversXero enables seamless financial data integration and accounting operations via xero software and OAuth2 for automated wo
Securely manage and scale Heroku apps with our new OAuth-enabled MCP server. Simple integration with Agentforce 3.0 and
Connect to Vercel for secure OAuth access to deployments, project settings, and team resources. Simplify Vercel platform
Enterprise-grade Gmail integration with OAuth authentication and governance controls for secure, compliant email workflo
Boost your AI code assistant with Context7: inject real-time API documentation from OpenAPI specification sources into y
Boost productivity with Task Master: an AI-powered tool for project management and agile development workflows, integrat
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.