Developers

AI-assistenten (MCP)

Koppel Claude, ChatGPT of Cursor aan je NinjaBuy-account en vraag in gewone taal: waar een bestelling is, wat er op je schap ligt, of een listing het verkopen waard is, en zet hem in je winkel.
Op deze pagina
  1. 1Verbinden
  2. 2Inloggen en toegang
  3. 3Niets hier geeft geld uit
  4. 4Tools
  5. 5Wat je kunt vragen

Verbinden

Eén serveradres voor elke assistent. Je logt in met je NinjaBuy-account; er is geen sleutel om te plakken.

https://www.ninjabuy.com/mcp

Claude

  1. Open Settings › Connectors en kies Add custom connector.
  2. Plak het adres hierboven en voeg het toe.
  3. Log in met je NinjaBuy-telefoonnummer en kies daarna Allow access.

ChatGPT

  1. Zet de ontwikkelaarsmodus aan in Instellingen en voeg dan een aangepaste MCP-server toe.
  2. Plak het adres hierboven en kies OAuth als inlogmethode.
  3. Log in met je NinjaBuy-telefoonnummer en kies daarna Allow access.

Cursor

Voeg de server toe onder Cursor Settings › MCP, of in ~/.cursor/mcp.json. Cursor opent de eerste keer de NinjaBuy-login in je browser.

~/.cursor/mcp.json
{
  "mcpServers": {
    "ninjabuy": {
      "url": "https://www.ninjabuy.com/mcp"
    }
  }
}

Claude Code en andere assistenten op de opdrachtregel

Terminal
claude mcp add --transport http ninjabuy https://www.ninjabuy.com/mcp

Menunamen veranderen als de assistenten updaten; zoek naar “custom connector” of “custom MCP server”.

Inloggen en toegang

De assistent logt in met OAuth 2.1: hij registreert zichzelf, stuurt je naar ninjabuy.com, en jij keurt hem goed op ons eigen scherm, dat de app noemt en zegt waarheen hij je terugstuurt. Sta alleen een app toe die je net zelf wilde koppelen. Je keurt elke app één keer goed.

  • Hij handelt als jouw account: de tools nemen geen account-id en zien alleen jouw bestellingen, schap en producten.
  • Toegang geldt een uur en wordt zeven dagen lang verlengd; daarna vraagt de assistent je opnieuw in te loggen.
  • Verwijder de connector in je assistent om hem los te koppelen.
  • De tools die een marktplaats lezen (product, analyze_product, import_product, push_to_shopify) delen het venster van 30 per minuut met de API: Rate limits.

Niets hier geeft geld uit

Geen enkele tool betaalt, plaatst een zending of geeft je saldo uit. Als er iets betaald moet worden, noemt het antwoord de pagina waar je dat doet: afrekenen vanuit de winkelwagen, verzenden vanaf je magazijnpagina. push_to_shopify zet een product als concept, dus er gaat niets in de verkoop tot je het publiceert.

Tools

Elk antwoord bevat requestId (vermeld die als je ons schrijft) en warnings, dingen die het weten waard zijn maar de aanroep niet tegenhielden. Een lang antwoord wordt rond 6.000 tokens afgekapt met truncated: true; lijsten nemen dan een kleinere limit.

ToolWat het doet
list_ordersMijn NinjaBuy-bestellingen tonen
orderEén NinjaBuy-bestelling
warehouseMijn NinjaBuy-magazijn
productDe varianten van een product lezen
add_to_cartToevoegen aan mijn NinjaBuy-winkelwagen
search_productsProducten zoeken
analyze_productEen product analyseren
import_productEen product importeren
push_to_shopifyNaar Shopify sturen
list_synced_productsMijn gesynchroniseerde producten tonen
set_sync_ruleEen syncregel instellen

list_ordersalleen-lezen

De bestellingen van het account, nieuwste eerst: status, betaalstatus, wat er nog openstaat, de artikelen en de pagina van elke bestelling. Volg cursor zolang has_more true is.

cursorstring?
Uit het vorige antwoord; laat weg voor de eerste pagina.
limitnumber?
1 tot 25. 25 als je het weglaat.
list_orders antwoordt
{
  "orders": [
    {
      "id": "j57a9x2b",
      "number": 1012,
      "kind": "procurement",
      "total": "¥57.00",
      "orderStatus": { "status": "ordered" },
      "paymentStatus": { "status": "paid" },
      "amountDue": null,
      "itemCount": 1,
      "items": [
        {
          "id": "P1012-1",
          "title": "Heavyweight washed hoodie",
          "quantity": 1,
          "options": ["Black", "M"],
          "status": "ordered"
        }
      ],
      "url": "https://www.ninjabuy.com/me/orders/j57a9x2b"
    }
  ],
  "cursor": "eyJvIjoyNX0",
  "has_more": true,
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

orderalleen-lezen

Eén bestelling op id: de regels en prijzen, de status van elk artikel en hoeveel er aankwamen, en de zending met tracking. order is null voor een id die niet van dit account is.

idstringverplicht
Een id uit list_orders.
order antwoordt
{
  "order": {
    "id": "j57c4k1m",
    "number": 1019,
    "kind": "shipout",
    "orderStatus": { "status": "ready" },
    "paymentStatus": { "status": "paid" },
    "shipment": {
      "state": "shipped",
      "destinationCountry": "US",
      "weightGrams": 176,
      "trackingNumbers": ["YT2630812345678"],
      "shippedAt": 1793685600000
    },
    "url": "https://www.ninjabuy.com/me/orders/j57c4k1m"
  },
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

warehousealleen-lezen

Alles wat in ons magazijn is aangekomen: foto's, hoeveel er aankwamen, kan verzonden worden of zit in een zending, gewicht, aangegeven waarde, of het betaald is, en wanneer de gratis opslag eindigt.

Geen invoer.

warehouse antwoordt
{
  "items": [
    {
      "id": "P1012-1",
      "order": 1012,
      "title": "Heavyweight washed hoodie",
      "photos": [
        {
          "type": "image",
          "url": "https://media.ninjabuy.com/qc/P1012-1/1.webp"
        }
      ],
      "received": 1,
      "availableToShip": 1,
      "inShipment": 0,
      "unitWeightGrams": 176,
      "declaredUnitValue": "¥38.00",
      "paid": true,
      "freeStorageUntil": "2026-12-02T03:20:11.000Z"
    }
  ],
  "warehouseUrl": "https://www.ninjabuy.com/me/warehouse",
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

productalleen-lezen

Leest een listing uit elke productlink (Taobao, Tmall, Weidian, 1688, de link of korte link van een andere inkoopagent, of een NinjaBuy-productpagina): titel, afbeeldingen, verkoper, en elke variant met skuId, label, CN¥-prijs en voorraad.

linkstringverplicht
Een productlink, tot 2.048 tekens.
product antwoordt
{
  "product": {
    "handle": "weidian-7750970856",
    "title": "重磅水洗连帽卫衣",
    "seller": "Ruoyi Studio",
    "variants": [
      {
        "skuId": "5187209554",
        "label": "Black / M",
        "priceMinor": 3800,
        "price": "¥38.00",
        "inStock": true
      },
      {
        "skuId": "5187209555",
        "label": "Black / L",
        "priceMinor": 3800,
        "price": "¥38.00",
        "inStock": false
      }
    ],
    "url": "https://www.ninjabuy.com/products/weidian-7750970856"
  },
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

add_to_cartschrijven

Zet varianten van één listing in de winkelwagen, om vooraf in te kopen en op je schap te bewaren. Er wordt niets gekocht: het antwoord is de winkelwagenpagina, waar je afrekent.

handlestringverplicht
Uit product.
lines{ skuId, quantity }[]verplicht
1 tot 100 regels; aantal 1 tot 9.999. Een variant die al in de winkelwagen zit, wordt opgeteld.
add_to_cart antwoordt
{
  "added": 1,
  "cartUrl": "https://www.ninjabuy.com/cart",
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

search_productsalleen-lezen

Zoeken op trefwoord op Taobao of 1688, dezelfde zoekfunctie als op ninjabuy.com. Een geplakte link geeft dat product.

querystringverplicht
2 tot 120 tekens, of een link.
providerstring?
taobao of 1688. taobao als je het weglaat.
pagenumber?
0 tot 20.
search_products antwoordt
{
  "kind": "products",
  "products": [
    {
      "handle": "taobao-781204556120",
      "title": "Heavyweight cotton hoodie, washed",
      "price": { "amount": "45.00", "currency": "CNY" },
      "marketplace": "taobao",
      "url": "https://www.ninjabuy.com/products/taobao-781204556120"
    }
  ],
  "page": 0,
  "totalCount": 1840,
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

analyze_productalleen-lezen

Wat één verkoop van elke variant kost tot aan de deur van de koper, en de prijs die je marge op je marktplaats behoudt. Er wordt niets opgeslagen. Dezelfde cijfers als de importanalyse.

linkstringverplicht
Een productlink.
weight_gnumberverplicht
Verpakt gewicht van één stuk, in gram.
ship_tostring?
Land van twee letters. US als je het weglaat.
lanestring?
saver of fast.
marketplacestring?
ebay, shopify, amazon of tiktok.
margin_percentnumber?
De marge waarop wordt geprijsd. 30 als je het weglaat.
analyze_product antwoordt
{
  "title": "重磅水洗连帽卫衣",
  "shipTo": "US",
  "marketplace": "ebay",
  "brandHint": null,
  "variants": [
    {
      "sku": "5187209554",
      "label": "Black / M",
      "inStock": true,
      "procurement": "57.00",
      "parcel": "134.52",
      "landedUsd": "27.71",
      "suggestedPrice": "49.99",
      "marginPercent": "30.16"
    }
  ],
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

import_productschrijven

Importeert een listing met de analyse, zoals in de Imports-API. Gratis. Antwoordt met de import om door te sturen of opnieuw te prijzen.

linkstringverplicht
Een productlink of een vondstenspreadsheet.
weight_gnumberverplicht
Verpakt gewicht van één stuk, in gram.
ship_tostring?
Land van twee letters. US als je het weglaat.
lanestring?
saver of fast.
marketplacestring?
ebay, shopify, amazon of tiktok.
margin_percentnumber?
De marge waarop wordt geprijsd. 30 als je het weglaat.
import_product antwoordt
{
  "import": {
    "id": "imp_2c9d",
    "status": "ready",
    "title": "重磅水洗连帽卫衣",
    "variants": 6,
    "inStock": 5
  },
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

push_to_shopifyschrijven

Slaat een import op als product en zet het als concept in je Shopify-winkel, op voorraad op de locatie Fulfilled by NinjaBuy. Opnieuw doorsturen werkt het bij. Dezelfde regels als Naar Shopify sturen.

import_idstringverplicht
Uit import_product.
variants{ sku, price }[]?
Welke je houdt en tegen welke US$-prijs. Als je het weglaat, die op voorraad tegen de voorgestelde prijs.
titlestring?
Je titel.
shopstring?
Nodig als er meerdere winkels gekoppeld zijn.
push_to_shopify antwoordt
{
  "product": "prd_8f2k",
  "shopify": {
    "status": "draft",
    "variants": 5,
    "adminUrl": "https://admin.shopify.com/store/acme-goods/products/8812042"
  },
  "skipped": [{ "sku": "5187209555", "reason": "sold_out" }],
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

list_synced_productsalleen-lezen

Je producten met hun laatste controle, kostenwijzigingen en voorraad, zodat je ziet wat er veranderde.

statusstring?
active of paused.
changed_sincestring?
Een datum: alleen producten waarvan de kosten of voorraad sindsdien zijn veranderd.
cursorstring?
Uit het vorige antwoord; laat weg voor de eerste pagina.
limitnumber?
1 tot 25. 25 als je het weglaat.
list_synced_products antwoordt
{
  "products": [
    {
      "id": "prd_1x0a",
      "title": "Canvas Tote",
      "status": "active",
      "lastCheckedAt": "2026-11-04T02:10:00Z",
      "costChange": {
        "from": "¥42.00",
        "to": "¥48.00",
        "action": "repriced",
        "price": { "from": "$18.99", "to": "$20.99" }
      }
    }
  ],
  "cursor": null,
  "has_more": false,
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

set_sync_ruleschrijven

Wat er moet gebeuren als een verkoper een prijs verhoogt: prijs aanpassen om een marge te behouden, pauzeren, of het je alleen laten weten. Voor elk product, of één. Dezelfde velden als Syncregels.

applies_tostringverplicht
all, of een product-id.
on_cost_increasestringverplicht
prijs aanpassen, pauzeren of melden.
keep_margin_percentnumber?
Met reprice.
max_increase_percentnumber?
Met reprice: daarboven pauzeren.
set_sync_rule antwoordt
{
  "rule": {
    "id": "rule_default",
    "appliesTo": "all",
    "onCostIncrease": {
      "action": "reprice",
      "keepMarginPercent": 40,
      "maxIncreasePercent": 15
    }
  },
  "requestId": "5f7c2a1e-3b8d-4c61-9a0f-2e4d6b8c1a37",
  "warnings": []
}

Wat je kunt vragen

Welke van mijn bestellingen wachten nog op een verkoper?

list_orders

Twee: #1012 (de washed hoodie, gekocht op 1 nov.) en #1015 (twee canvas tassen). Beide zijn betaald en besteld bij de verkoper; geen van beide is al in het magazijn aangekomen.

Is deze hoodie het waard om op eBay te verkopen? weidian.com/item.html?itemID=7750970856, ongeveer 180 g verpakt.

analyze_product

Eén verkoop naar de VS kost CN¥ 191,52 tot aan de deur, ongeveer $ 27,71. Bij $ 49,99 houdt eBay ongeveer $ 7,20 en hou jij $ 15,08 over, een marge van 30%. Black / L is uitverkocht. Geen merknamen in de titel.

Goed. Zet Black / M in mijn Shopify voor $ 49,99, titel “Heavyweight Washed Hoodie”.

import_productpush_to_shopify

Klaar: het staat als concept op acme-goods.myshopify.com met 1 variant, op voorraad bij Fulfilled by NinjaBuy. Controleer de foto's en publiceer het dan in Shopify.

Houd overal 40% marge aan, maar verhoog een prijs nooit meer dan 15% in één keer.

set_sync_rule

Ingesteld voor alle producten. Een stijging boven 15% pauzeert het product in plaats daarvan, en ik zie het in list_synced_products.