Skip to content

Developer

MCP Server

The TrackOut MCP server lets AI agents access your garage data through the Model Context Protocol. No local install required -- just configure your agent with a URL and API key.


Setup

Prerequisites

  • An API key from your TrackOut Settings page

Configure your agent

Add TrackOut to your agent's MCP configuration. For Claude Code, add to .claude/mcp.json:

{
  "mcpServers": {
    "trackout": {
      "type": "url",
      "url": "https://trackout.app/api/mcp",
      "headers": {
        "Authorization": "Bearer tok_..."
      }
    }
  }
}

Replace tok_... with your API key from Settings.


Available tools

Once connected, the following tools are available to your agent:

Cars

ToolDescription
list_carsList all cars in your garage with nickname, make, model, trim, year, and mileage
get_carGet full details for a specific car including trim, color, VIN, and price
create_carCreate a new car with nickname, make, model, trim, year, color, VIN, and mileage
update_carUpdate any field on an existing car by car ID

Parts

ToolDescription
list_partsList parts, optionally filtered by car
create_partCreate a new part with name, manufacturer, part number, purchase details, and status

Service records

ToolDescription
list_service_recordsList service records, optionally filtered by car
create_service_recordCreate a new service record with name, type, mileage, cost, date, notes, and an optional linked receipt ID
list_service_typesList valid service type values (use before creating records)
update_service_recordUpdate any field on an existing service record by ID

Installers

ToolDescription
list_installersList your saved service shops and installers
create_installerAdd a new installer by name

Track sessions

ToolDescription
list_track_sessionsList track sessions, optionally filtered by car
list_track_daysList track days, optionally filtered by car
create_track_dayCreate a new track day event with car, date, and track name
create_track_sessionCreate a track session within a track day with lap times and count

Maintenance

ToolDescription
list_maintenance_rulesList recurring maintenance rules, optionally filtered by car
create_maintenance_ruleCreate a new maintenance rule with interval by miles or months
list_maintenance_remindersList service reminders with optional car filter and completion status
complete_maintenance_reminderMark a service reminder as complete, optionally linking a service record

Tires

ToolDescription
list_tiresList tires with brand, size, heat cycles, and mileage, optionally filtered by car

Documents

ToolDescription
upload_documentUpload a file (base64-encoded) and receive a fileId, storageId, URL, and file metadata
scan_receiptStart or poll AI receipt extraction for an uploaded receipt file or existing receipt ID
create_records_from_receiptCreate multiple service records from reviewed receipt line items in one call

Receipt workflow

The MCP receipt flow mirrors the TrackOut UI:

  1. Call upload_document with a PDF or receipt image.
  2. Call scan_receipt with the returned fileId to start extraction.
  3. Poll scan_receipt with either the same fileId or the returned receiptId until the receipt is ready for review.
  4. Create linked records with either:
    • create_service_record for a single record and pass receiptId
    • create_records_from_receipt for a multi-line-item receipt import

create_service_record accepts both receiptId and receiptDocumentId. receiptDocumentId is a compatibility alias for receiptId.


Example usage

Once configured, you can ask your agent things like:

  • "List my cars"
  • "Show service records for my M3"
  • "Log an oil change for my 911 at 42,000 miles, cost $85"
  • "What tires are installed on my track car?"
  • "Add a new installer called Track Performance Shop"
  • "Create a new car named 'Track Beast' -- 2024 Porsche 911 GT3"
  • "Add an oil filter part for my M3"
  • "Set up a recurring oil change every 5,000 miles"
  • "Upload this receipt, scan it, and show me the extracted line items"
  • "Create linked service records from this scanned receipt for my M3"

The agent will use the appropriate MCP tools to read or write your TrackOut data.


HTTP API

The MCP server calls the TrackOut HTTP API under the hood. If you want to build your own integration, you can call these endpoints directly:

MethodEndpointDescription
GET/api/v1/carsList cars
GET/api/v1/cars/get?id=...Get car details
GET/api/v1/service-records?carId=...List service records
POST/api/v1/service-recordsCreate service record, optionally linked to a receipt
GET/api/v1/service-typesList service type enum values
GET/api/v1/installersList installers
POST/api/v1/installersCreate installer
GET/api/v1/track-sessions?carId=...List track sessions
POST/api/v1/carsCreate car
PATCH/api/v1/carsUpdate car (requires carId in body)
GET/api/v1/parts?carId=...List parts
POST/api/v1/partsCreate part
GET/api/v1/track-days?carId=...List track days
POST/api/v1/track-daysCreate track day
POST/api/v1/track-sessionsCreate track session
GET/api/v1/maintenance-rules?carId=...List maintenance rules
POST/api/v1/maintenance-rulesCreate maintenance rule
GET/api/v1/maintenance-reminders?carId=...&includeComplete=...List reminders
POST/api/v1/maintenance-reminders/completeComplete a reminder
PATCH/api/v1/service-recordsUpdate service record (requires id in body)
POST/api/v1/documents/uploadUpload document (base64 content) and receive fileId
POST/api/v1/receipts/scanStart or poll receipt extraction with a fileId or receiptId
POST/api/v1/receipts/create-recordsCreate multiple linked service records from a scanned receipt
GET/api/v1/tires?carId=...List tires

All endpoints require an Authorization: Bearer tok_... header. The base URL for direct API calls is https://site.trackout.app.

curl -H "Authorization: Bearer tok_..." \
  https://site.trackout.app/api/v1/cars

Error responses

All error responses are JSON shaped { "error": "<message>" } with an appropriate HTTP status code. The MCP route passes user-facing 4xx messages through unchanged; 5xx responses are mapped to a generic Upstream service temporarily unavailable. message on the MCP client so internal errors never leak through a tool call.

StatusWhen you'll see it
400Missing or invalid body/query fields
401Missing, invalid, or revoked API token
403Token is valid but lacks access to the resource
404Resource does not exist or is not owned by your account
413Request body (or decoded upload) exceeds the limit
429Rate limit exceeded — back off and retry
5xxUpstream error — logged server-side, generic message on the client

Upload limits

The upload_document tool (and POST /api/v1/documents/upload) enforces:

  • Encoded request body: up to 14 MB
  • Decoded file: up to 10 MB
  • Allowed content types: application/pdf, image/jpeg, image/png, image/webp, image/heic, image/heif, image/gif, text/plain

Requests that exceed these limits fail fast with a 4xx before bytes are persisted.


Security notes

  • Authorization is driven exclusively by your API token — the MCP session ID plays no role in authorization. Every request is independently authenticated.
  • The MCP endpoint is intentionally per-request stateless: the mcp-session-id header is echoed back to clients for their own continuity but is never used as a server-side lookup key. Two users cannot collide by sharing a session ID.
  • API tokens are SHA-256 hashed at rest. Revoke a compromised token from the API keys page; revocation takes effect on the next request.
  • Rotate tokens periodically and prefer creating one token per agent/tool so you can revoke narrowly.
Previous
API keys