ImportOS · Документація

Швидкий старт: API-ключ, REST і MCP

Від API-ключа до першого запиту GET /v1/landed-cost і виклику calculate_landed_cost із Claude Desktop.

За 10 хвилин ви створите ключ, порахуєте вартість авто «під ключ» через REST і викличете той самий розрахунок з Claude Desktop через MCP.

Що потрібно

  • Обліковий запис власника компанії в Desk (створювати ключі може лише власник).
  • Для кроку 3: Claude Desktop і Node.js (для npx).
  • Базова адреса API. Продакшен: https://api.importos.app Чекає на власника (домен-заглушка до рішення власника). Локально: http://127.0.0.1:4114.

Створіть API-ключ

  1. Увійдіть у Desk і відкрийте Налаштування → API-ключі.
  2. Назва: quickstart. Права: read:pricing і mcp (для пошуку оголошень і VIN додайте read:listings).
  3. Натисніть «Створити ключ» і скопіюйте його одразу: ключ виглядає як rv_live_… і показується один раз.
Створення API-ключа в Desk
Створення API-ключа в Desk · Скріншот-заглушка: замінюється реальним знімком

Збережіть ключ у змінній середовища, а не в коді:

export IMPORTOS_API_KEY="rv_live_..."
export IMPORTOS_API="https://api.importos.app"   # локально: http://127.0.0.1:4114
$env:IMPORTOS_API_KEY = "rv_live_..."
$env:IMPORTOS_API = "https://api.importos.app"

Локальна розробка без Desk

Якщо ви піднімаєте API самі (pnpm --filter @importos/api start), ключ можна створити скриптом від власника схеми: pnpm --filter @importos/api key:create --tenant vezemo --name local --scopes read:pricing,read:listings,mcp. Ключ друкується один раз.

Перший запит: POST /v1/landed-cost

Метод — POST

Розрахунок приймає складне тіло JSON, тому ендпоінт працює тільки через POST. GET /v1/landed-cost не існує. GET використовують прості ендпоінти: market-price, vin, listings/search, rules, fx.

Порахуємо Toyota Camry 2018 (2.5 л, бензин) з Copart, майданчик Trenton (NJ), ставка $8000, доставка в Київ, наша комісія $700:

curl -s "$IMPORTOS_API/v1/landed-cost" \
  -H "Authorization: Bearer $IMPORTOS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "lot_price": 8000,
    "auction": "copart",
    "vehicle": { "vin": "4T1B11HK5JU000001", "year": 2018, "fuel": "petrol", "engine_cc": 2487, "damage": "FRONT END" },
    "from": { "auction_yard": "NJ - TRENTON" },
    "to": { "country": "UA", "city": "Київ" },
    "fee_model": { "model": "fixed", "amount": 700, "currency": "USD" },
    "date": "2026-10-17"
  }'

Відповідь містить items[] (кожна стаття має kind, amount, currency, explanation, formula, source, verified), total, total_range, warnings[], assumptions[], rulesVersion, fx[] і confidence. Не забудьте показувати warnings користувачам: ставки з verified: false орієнтовні.

Звертайте увагу на заголовки відповіді X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset і X-Request-Id. Усі поля запиту: POST /v1/landed-cost.

Якщо ви отримали помилку, подивіться поле code у відповіді application/problem+json: unauthorized (немає або неправильний ключ), insufficient_scope (ключу бракує read:pricing), validation_error (тіло запиту), rate_limited (зачекайте Retry-After секунд). Таблиця кодів: Автентифікація та ліміти.

Підключіть MCP до Claude Desktop

  1. У Claude Desktop відкрийте Settings → Developer → Edit Config. Файл: %APPDATA%\Claude\claude_desktop_config.json (Windows) або ~/Library/Application Support/Claude/claude_desktop_config.json (macOS).
  2. Додайте сервер (підставте свій ключ):
{
  "mcpServers": {
    "importos": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.importos.app/mcp",
        "--header",
        "Authorization:${IMPORTOS_AUTH}"
      ],
      "env": { "IMPORTOS_AUTH": "Bearer rv_live_YOUR_KEY" }
    }
  }
}

Форма Authorization:${...} (без пробілу після двокрапки, значення в env) обходить відому помилку лапок Windows з пробілами в args.

  1. Повністю закрийте Claude Desktop (через трей, а не лише вікно) і запустіть знову.
  2. Запитайте: «Скільки коштуватиме в Україні Toyota Camry 2018 2.5 з Copart NJ, ставка $8000?» Claude викличе інструмент calculate_landed_cost і поверне розбивку.
Claude Desktop викликає calculate_landed_cost
Claude Desktop викликає calculate_landed_cost · Скріншот-заглушка: замінюється реальним знімком

Інструмент приймає інші назви полів, ніж REST: lot_price_usd, destination_country, our_fee_usd, us_state. Приклад входу:

{
  "lot_price_usd": 8000,
  "auction": "copart",
  "vehicle": {
    "year": 2018,
    "fuel": "petrol",
    "engine_cc": 2487,
    "vin": "4T1B11HK5JU000001",
    "damage": "FRONT END"
  },
  "us_state": "NJ",
  "destination_country": "UA",
  "destination_city": "Kyiv",
  "our_fee_usd": 700,
  "target_currency": "USD"
}

Усі інструменти, інші клієнти (Cursor, Claude Code, ChatGPT) та перевірка через curl: MCP.

Windows з антивірусом Norton

Фільтр мережі Norton (nllMon) на деяких машинах псує відповіді loopback-запитів до /mcp. Клієнт скаржиться на «Invalid character in chunk size». Це не помилка сервера: додайте виняток у Web Protection або перевіряйте на сервері. На Linux цього немає.

Що далі

MCP у Claude Desktop
▶ MCP у Claude Desktop
Відео: у планах, ще не записане

На цій сторінці