{
  "markdown": "# AutoID MCP Server v0.3.1\n\nRead-only MCP server over the AutoID canonical WordPress/WooCommerce API.\n\nThis release includes the product, offer, grouped-variant and related-product behavior validated with the AutoID canonical API plugin v0.3.9.\n\n## MCP tools\n\n- `search_products`\n- `get_product_group`\n- `list_product_variants`\n- `get_product`\n- `get_product_offer`\n- `get_related_products`\n- `get_related_products_summary`\n- `search_support`\n- `fetch_support`\n- `autoid_support_health`\n- `autoid_api_health`\n\n## Source of truth\n\nThe MCP server does not read WordPress SQL and does not calculate commercial or compatibility data itself. It reads the canonical API at:\n\n`https://www.autoid.ro/wp-json/autoid-ai/v1`\n\nAuthoritative commercial fields:\n\n- exact SKU MSRP EUR ex VAT: `pret_lista`\n- exact SKU AutoID price EUR ex VAT: `pret_autoid_euro`\n- grouped catalog MSRP from: `grp_pret_lista_mic`\n- grouped catalog AutoID from: `grp_pret_autoid_mic`\n- AutoID stock: `stock_autoid`\n- distribution stock: `stock_distributie`\n\nFor a current exact-SKU price/stock answer, use `get_product_offer`. For Romanian customer-facing price output, use the canonical `ron_display` projection and prefer the inc-VAT value. RON is sourced from WooCommerce `_regular_price` / `_sale_price`; do not convert authoritative EUR prices into RON inside MCP.\n\n## RON display pricing\n\nCanonical API v0.3.9 adds a compact RON projection without changing commercial authority.\n\nExact SKU cards use `pricing.ron_display`; exact live offers use `price.ron_display`. Typical fields are `msrp_ex_vat`, `msrp_inc_vat`, `autoid_ex_vat`, and `autoid_inc_vat`. Grouped products use FROM fields such as `msrp_from_inc_vat` and `autoid_from_inc_vat`.\n\nRules:\n\n- customer-facing Romanian answer: prefer RON `inc_vat`\n- B2B/ex-VAT context: RON `ex_vat` may also be shown\n- EUR `pret_lista` / `pret_autoid_euro` remain the commercial authority\n- RON values are WooCommerce storefront display/validation data\n- never calculate RON by applying an FX rate to the EUR authority inside MCP\n\n\n## Related-product contract\n\n`get_related_products` reads:\n\n`/wp-json/autoid-ai/v1/relations/{sku-or-model}`\n\nSupported relation types:\n\n- `accessory` - stock-managed\n- `consumable` - stock-managed\n- `software` - not stock-managed\n- `service_contract` - not stock-managed\n- `all`\n\nCompatibility is accepted only from the canonical API's `product_tag` evidence. WooCommerce `product_cat` determines whether the related entity is an accessory, consumable, software item or service contract.\n\nFor accessories and consumables, MCP defaults to `availability=available`:\n\n`stock_autoid > 0 OR stock_distributie > 0`\n\nThe canonical API ranks AutoID stock before distribution-only stock. Out-of-stock items are intentionally extra catalog information and are not returned by default. Request `availability=out_of_stock` or `availability=all` only when needed.\n\nFor large consumable sets, filter using an exact category slug. Validated ZT610 examples include:\n\n- `ribboane-imprimanta`\n- `role-de-etichete`\n- `intretinere-imprimante`\n\n`get_related_products_summary` queries `availability=all` with a one-item page, then returns a compact projection of the canonical summary. Use it for total compatibility counts and out-of-stock counts without loading hundreds of catalog items into MCP context.\n\n## Validated datasets\n\nMC9300 full relation graph at validation time:\n\n- 85 accessories\n- 23 software entities = 22 exact SKUs + 1 grouped product\n- 130 service contracts\n- 0 consumables\n- 238 related entities total\n\nZT610 full relation graph at validation time:\n\n- 85 accessories\n- 752 consumables\n- 29 software entities = 28 exact SKUs + 1 grouped product\n- 69 service contracts\n- 935 related entities total\n\nZT610 consumables at validation time:\n\n- 32 with AutoID stock\n- 206 supplier-only\n- 514 out of stock\n\nThese numbers are validation snapshots, not hard-coded production data. MCP always reads the live canonical API.\n\n## Requirements\n\n- Node.js 20+\n- public HTTPS hostname, recommended `mcp.autoid.ro`\n- outbound HTTPS access to `www.autoid.ro`\n\nNo WordPress DB access, WooCommerce API key or WordPress administrator credentials are required.\n\n## Fresh install\n\n```bash\nunzip autoid-mcp-v0.3.1.zip\ncd autoid-mcp-v0.3.1\nnpm install\ncp .env.example .env\nnpm run build\nnpm run smoke:api\nnpm start\n```\n\nEnvironment variables:\n\n```env\nAUTOID_API_BASE=https://www.autoid.ro/wp-json/autoid-ai/v1\nMCP_PUBLIC_HOST=mcp.autoid.ro\nPORT=3000\nAUTOID_API_TIMEOUT_MS=15000\n```\n\nThe public MCP endpoint is:\n\n`https://mcp.autoid.ro/mcp`\n\nHTTP process health:\n\n`https://mcp.autoid.ro/health`\n\nCanonical API readiness check:\n\n`https://mcp.autoid.ro/ready`\n\n## Upgrade from v0.1.0 with systemd\n\nAssuming the live application directory is `/opt/autoid-mcp`:\n\n```bash\nsudo systemctl stop autoid-mcp\nsudo cp -a /opt/autoid-mcp /opt/autoid-mcp-backup-v0.1.0\nsudo rm -rf /opt/autoid-mcp\nsudo mkdir -p /opt/autoid-mcp\nsudo cp -a ./autoid-mcp-v0.3.1/. /opt/autoid-mcp/\nsudo cp /opt/autoid-mcp-backup-v0.1.0/.env /opt/autoid-mcp/.env\ncd /opt/autoid-mcp\nsudo npm install\nsudo npm run smoke:api\nsudo npm run build\nsudo chown -R www-data:www-data /opt/autoid-mcp\nsudo cp deploy/autoid-mcp.service /etc/systemd/system/autoid-mcp.service\nsudo systemctl daemon-reload\nsudo systemctl enable autoid-mcp\nsudo systemctl restart autoid-mcp\nsudo systemctl status autoid-mcp\n```\n\nThen verify:\n\n```bash\ncurl -s https://mcp.autoid.ro/health\ncurl -s https://mcp.autoid.ro/ready\n```\n\n## Docker\n\nThe included Dockerfile intentionally uses `npm install` because this release archive does not include a generated lock file.\n\n```bash\ndocker compose -f deploy/docker-compose.yml up -d --build\n```\n\nThe container binds only to `127.0.0.1:3000`; expose it through the supplied Nginx reverse-proxy configuration.\n\n## First MCP validation\n\nAfter deployment, validate these tool calls in an MCP client:\n\n```text\nautoid_api_health({})\nget_product_group({ model: \"MC9300\" })\nlist_product_variants({ model: \"MC9300\", availability: \"available\", limit: 20 })\nget_product_offer({ sku: \"MC930B-GSHDG4RW\" })\nget_related_products({ target: \"MC9300\", relation_type: \"accessory\", availability: \"available\", limit: 20 })\nget_related_products({ target: \"ZT610\", relation_type: \"consumable\", category: \"ribboane-imprimanta\", availability: \"available\", limit: 20 })\nget_related_products_summary({ target: \"ZT610\", relation_type: \"consumable\" })\n```\n\n## HestiaCP deployment note\n\nIf the host is managed by HestiaCP and a domain template already proxies `mcp.autoid.ro` to port `3000`, do not overwrite Hestia Nginx or Certbot configuration. Replace/build only the application files and restart the existing Node process through the host administrator's preferred supervisor.\n\n## Security\n\nv0.3.1 is read-only. It exposes no WordPress credentials and performs no writes. The canonical API remains the data and security boundary.\n\nBefore adding write tools such as RFQ creation, add authentication, authorization, audit logging and abuse controls separately.\n\n## Public root\n\nOpening `https://mcp.autoid.ro/` in a browser returns a small human landing page with links to `/health`, `/ready`, and `/mcp`. The Node process binds to `127.0.0.1:3000` and is intended to be published only through the existing HestiaCP/Nginx reverse proxy.\n\n\n## Support Center tools — v0.3.1\n\nThe public endpoint `https://mcp.autoid.ro/mcp` now exposes the existing catalog tools plus three Support Center tools:\n\n- `search_support` — search models, manuals, drivers, firmware, software, videos and troubleshooting resources.\n- `fetch_support` — fetch one exact `model:<id>` or `resource:<id>` returned by search.\n- `autoid_support_health` — verify the read-only Support Center source.\n\nSupport data is proxied from the existing first-party AutoID Support MCP source (`AUTOID_SUPPORT_MCP_URL`, default `https://www.autoid.ro/mcp/`). The Node service does not read WordPress SQL, filesystem or admin APIs. Product data continues to come from `AUTOID_API_BASE`.\n\n`search_support` is intent-aware in v0.3.1: it merges the original query with model-wide and requested-resource-type searches, deduplicates results, and ranks requested types above generic resources. A multi-intent query such as `MC9300 firmware manual` should surface both the firmware/LifeGuard entry and the documentation/manual entry before unrelated generic resources.\n\nFor chat integrations, the recommended OpenAI Responses API configuration is one read-only remote MCP tool pointing to `https://mcp.autoid.ro/mcp`, with an explicit `allowed_tools` list and `require_approval: never`. Current price/stock questions should use `get_product_offer`; technical support resources should use `search_support` followed by `fetch_support`.\n",
  "bytes": 8749,
  "sha": "8ae0b05d95538f5e9207f7f8c8ba3c4d2bb9d120383de7118e5118494d874854",
  "repo_slug": "autoid-alex/autoid-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ro_autoid_autoid_support_bc6f99f5/readme"
}