Scale Models Price Guide

Home / API & MCP Documentation

API & MCP documentation

Diecast Detective exposes a REST API and an MCP server so you can pull your collection, watchlist, and wishlist data, and search the product catalog, from your own tools. Both surfaces use the same bearer token and the same account data.

Authentication

Every request needs a bearer token. Get one from your API Access page: issue a token, copy it immediately, it is only shown once.

Send it as a standard Authorization header:

Authorization: Bearer YOUR_TOKEN

A missing or invalid token gets a 401:

{
  "error": "invalid_token",
  "error_description": "Invalid or expired token"
}

If no token is sent at all, error_description reads "No bearer token provided" instead.

Rate limits

Limits are per account, not per token, and reset every minute:

PlanRequests per minute
Trial30
Paid120
No active subscription10

The REST API and the MCP server are metered separately. Using one does not eat into the other's budget.

Every response carries X-RateLimit-Limit and X-RateLimit-Remaining headers. Going over the limit gets a 429 with a Retry-After header and:

{
  "error": "rate_limited",
  "error_description": "Rate limit exceeded for your plan (paid: 120/min). Upgrade or wait for the window to reset."
}

Base URL

Requests go to your account's API host, shown on the API Access page. All endpoints below are relative to that host.

Versioning

This is v1. A breaking change ships as v2 at a new path (/v2/...), never as a breaking change to v1 in place. v1 keeps working after v2 exists.

Endpoints

All endpoints are GET-only and require a bearer token.

Collection

GET /v1/collection

Your collection entries, paginated 25 per page. Optional folder_id query param restricts results to one folder.

{
  "data": [
    {
      "id": 4821,
      "name": "1:18 Ford GT40 Gulf Racing",
      "condition": "n",
      "sold": false,
      "sale_price": null,
      "sale_date": null,
      "purchase_price": 145.00,
      "purchase_date": "2024-03-11",
      "insurance_value": 180.00,
      "insurance_date": "2024-03-11",
      "today_price": 172.50,
      "yesterday_price": 171.00,
      "product": {
        "code": "18001A",
        "year": 1968,
        "make": "Ford",
        "model": "GT40",
        "event": "Le Mans",
        "colour": "Gulf Blue/Orange",
        "model_brand": "CMC",
        "scale": "1:18"
      },
      "folder_ids": [12, 15],
      "created_at": "2024-03-11T09:22:41+00:00",
      "updated_at": "2024-03-11T09:22:41+00:00"
    }
  ]
}

GET /v1/collection/{entry}

A single collection entry by id. Same shape as one item above. 404 if it doesn't exist or belongs to another account.

GET /v1/collection/folders

Your collection folders.

{
  "data": [
    { "id": 12, "name": "F1 1:18", "order": 1 },
    { "id": 15, "name": "Le Mans", "order": 2 }
  ]
}

GET /v1/collection/totals

Aggregate value and gain/loss for your collection. Optional folder_id restricts to one folder.

{
  "total_value": 4820.50,
  "total_value_12m": 4390.00,
  "total_value_original": 3900.00,
  "total_gain_loss": 920.50,
  "total_gain_loss_percent": 23.6,
  "total_change_day": 12.00,
  "total_change_month": 88.50,
  "total_change_6_months": 340.00,
  "total_change_year": 430.50,
  "total_insurance_value": 5200.00,
  "item_count": 62
}

Watchlist and wishlist

GET /v1/watchlist
GET /v1/wishlist

Your entries with current valuation and price-history chart data. Paginated 25 per page.

{
  "data": [
    {
      "id": 901,
      "name": "1:43 Porsche 917K",
      "classification": "vintage",
      "condition": "new",
      "start_price": 89.00,
      "start_date": "2023-11-02",
      "today_price": 104.20,
      "yesterday_price": 103.90,
      "daily_change": 0.30,
      "diecast_now": 104.20,
      "diecast_original": 89.00,
      "change_day": 0.30,
      "change_month": 4.10,
      "change_6_months": 9.80,
      "change_year": 15.20,
      "lost_gain": 15.20,
      "percent_lost_gain": 17.1,
      "average_new": 106.00,
      "average_used": 78.50,
      "last_week_price": 103.10,
      "product": {
        "code": "43005B",
        "year": 1970,
        "make": "Porsche",
        "model": "917K",
        "event": "Le Mans",
        "colour": "Salzburg",
        "model_brand": "CMR",
        "scale": "1:43"
      },
      "chart_data": { "datasets": [], "axis": [] },
      "created_at": "2023-11-02T14:05:09+00:00"
    }
  ]
}

Products

GET /v1/products/search

Search the catalog. Query params, all optional: q (free text against code, make, model), make, model, year.

{
  "data": [
    {
      "code": "18001A",
      "year": 1968,
      "make": "Ford",
      "model": "GT40",
      "event": "Le Mans",
      "colour": "Gulf Blue/Orange",
      "model_brand": "CMC",
      "scale": "1:18",
      "thumbnail": "https://.../18001a.jpg",
      "diecast_price_new": 172.50,
      "diecast_price_used": 138.00
    }
  ]
}

GET /v1/products/{code}

A single product: descriptor fields, current price at both conditions, and up to 50 of its most recent sales.

{
  "code": "18001A",
  "year": 1968,
  "make": "Ford",
  "model": "GT40",
  "event": "Le Mans",
  "colour": "Gulf Blue/Orange",
  "model_brand": "CMC",
  "scale": "1:18",
  "edition": "Limited",
  "category": "Racing",
  "number_made": 999,
  "thumbnail": "https://.../18001a.jpg",
  "launch_price": 150.00,
  "release_date": "2020-06-01",
  "diecast_price_new": 172.50,
  "diecast_price_used": 138.00,
  "sales": [
    { "sale_price": 175.00, "sale_date": "2026-08-20", "condition": 1, "platform": "eBay" }
  ]
}

Homepage

GET /v1/homepage/recently-added

Products added in the last 30 days that already have a recorded sale.

GET /v1/homepage/highest-value
GET /v1/homepage/most-traded

The same sales feeding the site's homepage carousels.

GET /v1/homepage/model-in-focus

The currently featured model, with commentary and price stats. 404 if none is configured.

Connecting an MCP client

The MCP server sits at your account's MCP host, shown on the API Access page, at path /mcp.

Add it as a custom connector using the same bearer token from the API Access page. The token that authenticates your REST calls also authenticates your MCP session, no separate MCP credential and no OAuth flow required for now. OAuth-based connection may be added later, but bearer token is the only option today.

Available tools

Scoped to your own account:

  • list_collection_entries, your collection entries, optionally filtered to one folder
  • get_collection_entry, a single collection entry by id
  • list_collection_folders, your collection folders
  • get_collection_totals, aggregate value and gain/loss for your collection
  • list_watchlist_entries, your watchlist with current valuation and chart data
  • list_wishlist_entries, your wishlist with current valuation and chart data

Public catalog data, not scoped to any account:

  • search_products, search the catalog by free text, make, model, and/or year
  • get_product, a single product by code, with recent sale history
  • recently_added_products, products added in the last 30 days with at least one sale
  • highest_value_products, the highest-value recent sales across all time windows
  • most_traded_products, the most-traded products by recent sale count
  • model_in_focus, the currently featured model, with commentary and price stats