LastBlueTape

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

ToolDescription
create_listCreate a new punch list
list_my_listsList all lists owned by your API key
get_listGet list details and progress stats
list_itemsGet all items on a list
add_itemAdd an item to a list
update_itemEdit item title or description
set_item_statusChange status: open, in_progress, done
flag_itemFlag or unflag an item for attention
get_activityView the activity log
upgrade_listUpgrade 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_xxxxx

List 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 AbCd1234EfGh

Endpoints

Lists

POST /api/v1/lists API Key

Create 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..."
}
GET /api/v1/lists API Key

List all lists created with this API key. Returns tokens for each.

GET /api/v1/lists/:id Token

Get list details with item counts and collaborator info.

PUT /api/v1/lists/:id Token (editor+)

Update list title or description.

DELETE /api/v1/lists/:id Token (owner)

Permanently delete a list and all its items.

Items

GET /api/v1/lists/:id/items Token

Get all items on a list with plan stats.

POST /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"
  }
}
GET /api/v1/lists/:id/items/:itemId Token

Get item details with photos.

PUT /api/v1/lists/:id/items/:itemId Token (editor+)

Update item title or description.

DELETE /api/v1/lists/:id/items/:itemId Token (owner)

Delete an item and its photos.

PUT /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.

PUT /api/v1/lists/:id/items/:itemId/flag Token (editor+)

Flag or unflag an item. Body: { "flagged": true }

PUT /api/v1/lists/:id/items/bulk-status Token (editor+)

Change status on multiple items at once. Body: { "item_ids": [...], "status": "done" }

Activity & Upgrade

GET /api/v1/lists/:id/activity Token

Fetch the activity log. Supports ?limit=50&offset=0.

POST /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

CodeHTTPDescription
MISSING_AUTH401No Authorization header
INVALID_API_KEY401API key not found or revoked
INVALID_TOKEN403Share token invalid or wrong list
FORBIDDEN403Insufficient role permissions
FREE_TIER_LIMIT40330-item limit reached on free plan
LIST_EXPIRED403Free list past 90-day expiry
NOT_FOUND404List or item doesn't exist
PAYMENT_FAILED402Stripe payment method declined
INVALID_JSON400Request body is not valid JSON
MISSING_FIELDS400Required fields not provided

All errors return { "error": { "code": "...", "message": "..." } }

Questions? support@lastbluetape.com

← Back to LastBlueTape