Skip to content
Syncore

MCP (AI connection)

Syncore runs its own MCP server (Model Context Protocol). With it an AI tool such as Claude Desktop, Claude Code or Cursor can see your products, orders and feeds and — if you allow it — make changes on your behalf, always with the permissions of the user who created the token.

URL and token

https://app.syncore.gr/mcp
  • Transport: Streamable HTTP (POST with JSON-RPC, one message per request, no SSE stream). Protocol versions: 2025-06-18, 2025-03-26, 2024-11-05.
  • Authentication: Authorization: Bearer <TOKEN>.
  • Create the token on the AI connection (MCP) page in Syncore. It is separate from REST API tokens:
    • mcp — read only,
    • mcp + mcp:write — read and change (the "Changes" option when you create it).
  • Limit: 120 requests per minute. An active subscription is required, as for the API.

Connecting clients

Claude Code

claude mcp add --transport http syncore https://app.syncore.gr/mcp --header "Authorization: Bearer <TOKEN>"

Claude Desktop

Settings → Developer → Edit Config, in claude_desktop_config.json (needs Node.js for mcp-remote):

{
  "mcpServers": {
    "syncore": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://app.syncore.gr/mcp", "--header", "Authorization:${SYNCORE_AUTH}"],
      "env": { "SYNCORE_AUTH": "Bearer <TOKEN>" }
    }
  }
}

Cursor and other clients with headers

In .cursor/mcp.json or your client's equivalent file:

{
  "mcpServers": {
    "syncore": {
      "url": "https://app.syncore.gr/mcp",
      "headers": { "Authorization": "Bearer <TOKEN>" }
    }
  }
}

ChatGPT and claude.ai Connectors

These clients connect only with OAuth, which the Syncore MCP server does not support yet. For now use Claude Desktop, Claude Code, Cursor or another client that accepts a Bearer header.

Tools

Read (mcp token)

Tool What it does
search_products Search products by name, SKU or EAN; price, stock, enabled state
get_product Full detail of one product: supplier, prices, manual price, stock
preview_price_change Preview a bulk price change (current and new price); changes nothing
list_orders Latest orders, filtered by status or a search
get_order One order with customer, addresses, lines and status history
list_suppliers Catalog suppliers and whether each is active for you
feeds_status Feed channels: active, product count, last build, logs
dashboard_metrics Catalog counts, sales (revenue, orders, profit, margin, AOV) and profit per channel
explain_feed_product Why a SKU is in or missing from the Skroutz / Shopflix feed

Changes (mcp + mcp:write token)

Tool What it does
set_products_enabled Enable / disable products in the feeds (respects the plan limit)
set_manual_price Fixed manual price on one product (and its variants)
apply_price_change Apply or schedule a bulk price change (run preview_price_change first)
advance_order_status Move an order to its next status (pending → processing → shipped → completed)
mark_order_shipped Ship with courier and tracking number; also sent to the order's channel
issue_invoice Issue a myDATA invoice or retail receipt through Oxygen. Irreversible — a wrong document needs a credit note
update_stock Set your own stock of a product (logged as a movement)
toggle_supplier Activate / deactivate a supplier (respects the plan limit)
rebuild_feed Queue a rebuild of a channel's feed file

Resources: syncore://catalog/summary (catalog summary) and syncore://settings/summary (settings and connected services, no secrets).

Confirmation before changes

  • With a read-only token the change tools are not even listed to the client; if called, they are refused.
  • Change tools are declared with readOnlyHint: false and (except rebuild_feed) destructiveHint: true, so clients ask you to confirm before running them. Do not turn on auto-approve for them.
  • The server tells the model to preview bulk price changes first and to confirm with the user; issue_invoice asks for explicit confirmation.

Call history

Every call is logged. On AI connection (MCP) → Call history you see the tool, arguments, result (success, error, denied) and token, with filters and search. If you do not recognise something, revoke the token on the same page.