LastBlueTape API
REST API and MCP server for managing construction punch lists. Build AI agents that create lists, track items, and share with human teams.
Quick Start
1. Get an API key from your dashboard (requires sign-in).
2. Create a list:
curl -X POST https://lastbluetape.com/api/v1/lists \
-H "Authorization: Bearer lbt_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Kitchen Renovation Punch List",
"creator_name": "AI Agent",
"creator_email": "you@example.com"
}' Returns the list, owner token, and a web URL you can share with your team.
3. Add items (use the token from step 2):
curl -X POST https://lastbluetape.com/api/v1/lists/LIST_ID/items \
-H "Authorization: Bearer TOKEN_FROM_STEP_2" \
-H "Content-Type: application/json" \
-d '{"title": "Install cabinet hardware"}'MCP Server
Use LastBlueTape directly from Claude, Cursor, or any MCP-compatible AI agent.
npx @lastbluetape/mcp-server Add to your Claude Desktop or Claude Code config:
{
"mcpServers": {
"lastbluetape": {
"command": "npx",
"args": ["@lastbluetape/mcp-server"],
"env": {
"LASTBLUETAPE_API_KEY": "lbt_YOUR_API_KEY"
}
}
}
} Available Tools
| Tool | Description |
|---|---|
| create_list | Create a new punch list |
| list_my_lists | List all lists owned by your API key |
| get_list | Get list details and progress stats |
| list_items | Get all items on a list |
| add_item | Add an item to a list |
| update_item | Edit item title or description |
| set_item_status | Change status: open, in_progress, done |
| flag_item | Flag or unflag an item for attention |
| get_activity | View the activity log |
| upgrade_list | Upgrade to paid plan ($4.99) |
Authentication
API Keys (account-level)
Used for creating lists and listing all your lists. Get one from your dashboard.
Authorization: Bearer lbt_xxxxxList Tokens (resource-level)
Returned when you create a list. Used for all list-specific operations (items, status, activity). Encodes your role (owner/editor/viewer).
Authorization: Bearer AbCd1234EfGhEndpoints
Lists
/api/v1/lists API KeyCreate a new punch list.
Request / Response
// Request body
{
"title": "Kitchen Renovation", // required
"creator_name": "AI Agent", // required
"description": "Final walkthrough", // optional
"creator_email": "you@example.com" // optional
}
// Response (201)
{
"list": { "id": "...", "title": "...", "plan": "free", ... },
"share": { "id": "...", "role": "owner", ... },
"token": "AbCd1234EfGh",
"web_url": "https://lastbluetape.com/list/xxx?t=xxx",
"hint": "List created. Free tier: 30 items..."
}/api/v1/lists API KeyList all lists created with this API key. Returns tokens for each.
/api/v1/lists/:id TokenGet list details with item counts and collaborator info.
/api/v1/lists/:id Token (editor+)Update list title or description.
/api/v1/lists/:id Token (owner)Permanently delete a list and all its items.
Items
/api/v1/lists/:id/items TokenGet all items on a list with plan stats.
/api/v1/lists/:id/items Token (editor+)Add an item. Returns structured error at 30-item free limit.
Limit Error Example
// 403 Response when free tier limit hit
{
"error": {
"code": "FREE_TIER_LIMIT",
"message": "Free lists are limited to 30 items. Upgrade for $4.99.",
"limit": 30,
"current": 30,
"upgrade_url": "/api/v1/lists/:id/upgrade"
}
}/api/v1/lists/:id/items/:itemId TokenGet item details with photos.
/api/v1/lists/:id/items/:itemId Token (editor+)Update item title or description.
/api/v1/lists/:id/items/:itemId Token (owner)Delete an item and its photos.
/api/v1/lists/:id/items/:itemId/status Token (editor+, owner for done)Change status: open, in_progress, done. Only the owner can mark items as done.
/api/v1/lists/:id/items/:itemId/flag Token (editor+)Flag or unflag an item. Body: { "flagged": true }
/api/v1/lists/:id/items/bulk-status Token (editor+)Change status on multiple items at once. Body: { "item_ids": [...], "status": "done" }
Activity & Upgrade
/api/v1/lists/:id/activity TokenFetch the activity log. Supports ?limit=50&offset=0.
/api/v1/lists/:id/upgrade Token (owner)Upgrade to Pro ($4.99 one-time). Requires a Stripe Payment Method ID.
Request / Response
// Request
{ "payment_method_id": "pm_1234567890" }
// Success Response
{
"success": true,
"list": { "plan": "paid", "expires_at": null, ... },
"hint": "Upgraded! Unlimited items, photos, no expiration."
}
// Already paid
{ "already_paid": true }Pricing
Free
$0
- 30 items per list
- 2 photos per item
- 90-day expiration
- Unlimited lists
- Full API access
Pro
$4.99 / list, one-time
- Unlimited items
- Unlimited photos
- Never expires
- Upgrade via API
- Priority support
The API itself is free. You only pay for Pro features on individual lists.
Error Codes
| Code | HTTP | Description |
|---|---|---|
| MISSING_AUTH | 401 | No Authorization header |
| INVALID_API_KEY | 401 | API key not found or revoked |
| INVALID_TOKEN | 403 | Share token invalid or wrong list |
| FORBIDDEN | 403 | Insufficient role permissions |
| FREE_TIER_LIMIT | 403 | 30-item limit reached on free plan |
| LIST_EXPIRED | 403 | Free list past 90-day expiry |
| NOT_FOUND | 404 | List or item doesn't exist |
| PAYMENT_FAILED | 402 | Stripe payment method declined |
| INVALID_JSON | 400 | Request body is not valid JSON |
| MISSING_FIELDS | 400 | Required fields not provided |
All errors return { "error": { "code": "...", "message": "..." } }
Questions? support@lastbluetape.com