Developer reference

Agent Tools (MCP)

The Boogie Lab exposes an OAuth-protected MCP server at /mcp. Connect it from Claude, ChatGPT, Cursor, or any MCP client. You sign in as a real portal client, and every tool runs as that account.

Authentication & access

  • • Connect to https://boogieslab.truaxiom.llc/mcp. Your client registers automatically and sends you to an approval screen.
  • • Requests without a valid token get 401 Unauthorized — no tool list, no data.
  • • Quote tools are row-level-security scoped: reads, updates, and PDFs only ever touch quotes owned by the signed-in account. Another client's quote id simply returns “no quote found”.
  • • Paint search is the only tool that touches no client records.

Search Angelus colours

search_angelus_colorsRead

Search the curated Angelus Standard Leather Paint list by name, item number, or tone family. Public paint reference data — no client records involved.

Parameters

NameTypeRequiredNotes
querystringNoFree text, e.g. "cobalt" or "#025".
limitnumberNoMax results (default 20).

Example request

{
  "name": "search_angelus_colors",
  "arguments": { "query": "cobalt", "limit": 3 }
}

Example response

{
  "colors": [
    { "name": "Cobalt Blue", "code": "025", "hex": "#1C4FA1", "family": "Blues" }
  ]
}

Create quote request

create_quote_requestWrite

Submit a custom build request as the signed-in client, optionally attaching the selected model and per-layer colourway from the Design Studio.

Parameters

NameTypeRequiredNotes
namestringYesClient name on the request.
emailstringYesContact email.
servicestringYes1-of-1, restoration, corporate, etc.
visionstringYesDescription of the concept.
base_shoe / budgetstringNoOptional build context.
model / colorwaystring / objectNoStudio model id and layer colours.

Example request

{
  "name": "create_quote_request",
  "arguments": {
    "name": "Jordan P.",
    "email": "jordan@example.com",
    "service": "1-of-1 Custom",
    "vision": "Emerald and cream Retro 11 with gold speckle.",
    "model": "retro11",
    "colorway": { "upper": { "hex": "#0F5132", "name": "Kelly Green", "code": "032" } }
  }
}

Example response

{
  "quote": {
    "id": "3f1c…9ab2",
    "status": "new",
    "created_at": "2026-08-02T21:10:00.000Z"
  }
}

List my quotes

list_my_quotesRead

List the signed-in client's saved quote requests, newest first.

Parameters

NameTypeRequiredNotes
limitnumberNoMax quotes (default 20, cap 100).

Example request

{
  "name": "list_my_quotes",
  "arguments": { "limit": 2 }
}

Example response

{
  "quotes": [
    { "id": "3f1c…9ab2", "model_name": "Retro 11", "status": "reviewing", "created_at": "2026-08-02T21:10:00.000Z" },
    { "id": "8ad4…11c7", "model_name": "Court High", "status": "completed", "created_at": "2026-07-19T14:02:00.000Z" }
  ]
}

Get quote

get_quoteRead

Fetch one saved quote by id, including the full per-layer Angelus colourway spec.

Parameters

NameTypeRequiredNotes
idstring (uuid)YesQuote id.

Example request

{
  "name": "get_quote",
  "arguments": { "id": "3f1c…9ab2" }
}

Example response

{
  "quote": {
    "id": "3f1c…9ab2",
    "service": "1-of-1 Custom",
    "model_name": "Retro 11",
    "status": "reviewing",
    "colorway": { "upper": { "hex": "#0F5132", "name": "Kelly Green", "code": "032" } }
  }
}

Update quote status or notes

update_quote_statusWrite

Move a quote through the pipeline and/or record internal notes. Statuses: new, reviewing, quoted, approved, in_progress, completed, declined.

Parameters

NameTypeRequiredNotes
idstring (uuid)YesQuote id.
statusenumNoOne of the seven pipeline statuses.
internal_notesstringNoNotes to store on the quote.
appendbooleanNoAppend a dated note instead of replacing.

Example request

{
  "name": "update_quote_status",
  "arguments": {
    "id": "3f1c…9ab2",
    "status": "in_progress",
    "internal_notes": "Deglazed and primed, midsole masked.",
    "append": true
  }
}

Example response

{
  "quote": {
    "id": "3f1c…9ab2",
    "status": "in_progress",
    "internal_notes": "Client approved mockup.\n[2026-08-02] Deglazed and primed, midsole masked."
  }
}

Generate quote PDF

generate_quote_pdfRead

Render a printable A4 production spec sheet for a saved quote — client details, vision, per-layer paint table with swatches, and internal notes. Returned as a base64 PDF resource.

Parameters

NameTypeRequiredNotes
idstring (uuid)YesQuote id.

Example request

{
  "name": "generate_quote_pdf",
  "arguments": { "id": "3f1c…9ab2" }
}

Example response

{
  "content": [
    { "type": "text", "text": "Generated boogie-lab-quote-3f1c9ab2.pdf for quote 3f1c…9ab2 (7 paint layers)." },
    {
      "type": "resource",
      "resource": {
        "uri": "quote://3f1c…9ab2/spec.pdf",
        "name": "boogie-lab-quote-3f1c9ab2.pdf",
        "mimeType": "application/pdf",
        "blob": "JVBERi0xLjcK…"
      }
    }
  ]
}

Errors are returned as MCP tool errors with a readable message (for example “Not authenticated” or “No quote found with id … for this account.”).