{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-06T18:50:48.527Z","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore.md","server":{"slug":"io-usefulapi-easystore","name":"EasyStore MCP by usefulapi","registryName":"io.usefulapi/easystore","description":"Read EasyStore orders, products and customers; manage stock, fulfillments and customer records.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"easystore","type":"remote","identifier":"https://easystore.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore","version":"1.7.4","transport":null,"scoredAt":"2026-11-06T13:06:58.581Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":-44,"history":[{"date":"2026-11-06","total":18},{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":18},{"date":"2026-10-31","total":65},{"date":"2026-10-30","total":62}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"easystore","type":"remote","identifier":"https://easystore.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore.md"}],"facts":[{"label":"Endpoint","value":"https://easystore.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.7.4"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"easystore_get_store","title":"Get store","description":"The store behind this access token: name, contact emails, easystore domain, plan, locale, country, time zone, currencies and locations. Needs no API access scope. GET /api/3.0/store.json.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":55},{"name":"easystore_list_locations","title":"List locations","description":"The store's stock and pickup locations (warehouses, outlets) with address, phone, is_primary and pickup settings. Use the ids for inventory levels. Needs read_locations. GET /api/3.0/locations.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":100},{"name":"easystore_list_products","title":"List products","description":"List products with variants, prices, SKUs, stock, images and collections. Filter by collection, SKU, published status or dates. Needs read_products. GET /api/3.0/products.json.","inputs":[{"name":"collection_ids","type":"string","required":false,"description":"Only products in these collection ids, comma-separated, e.g. 2311217,2311218."},{"name":"created_at_max","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"created_at_min","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"is_bundle","type":"boolean","required":false,"description":"true = only bundle products, false = no bundle products."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"since_id","type":"integer","required":false,"description":"Start at this product id (inclusive: id >= since_id)."},{"name":"skus","type":"string","required":false,"description":"Only products with these SKUs, comma-separated."},{"name":"sort","type":"string","required":false,"description":"Sort as field.asc or field.desc, e.g. id.asc (a stable order for paging through everything)."},{"name":"updated_at_max","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"updated_at_min","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"visibility","type":"string","required":false,"description":"Only published or only unpublished products."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":333},{"name":"easystore_get_product","title":"Get product","description":"One product by id with its variants, options, images and collections. Needs read_products. GET /api/3.0/products/{id}.json.","inputs":[{"name":"product_id","type":"integer","required":true,"description":"EasyStore product id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":53},{"name":"easystore_list_product_variants","title":"List product variants","description":"The variants of one product (price, SKU, barcode, stock, weight, enabled flag). Needs read_products. GET /api/3.0/products/{id}/variants.json.","inputs":[{"name":"product_id","type":"integer","required":true,"description":"EasyStore product id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":61},{"name":"easystore_list_collections","title":"List collections","description":"List product collections. Needs read_products. GET /api/3.0/collections.json.","inputs":[{"name":"ids","type":"string","required":false,"description":"Only these collection ids, comma-separated."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"since_id","type":"integer","required":false,"description":"Start at this collection id (inclusive)."},{"name":"sort","type":"string","required":false,"description":"Sort as field.asc or field.desc, e.g. id.asc (a stable order for paging through everything)."},{"name":"visibility","type":"boolean","required":false,"description":"true = only published collections."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":143},{"name":"easystore_get_collection","title":"Get collection","description":"One collection by id. Needs read_products. GET /api/3.0/collections/{id}.json.","inputs":[{"name":"collection_id","type":"integer","required":true,"description":"EasyStore collection id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":45},{"name":"easystore_list_inventory_levels","title":"List inventory levels","description":"Stock per variant per location: available (inventory_quantity), committed, incoming and reserved. Pass variant_ids or location_ids (at least one is required). Needs read_products. GET /api/4.0/inventory_levels.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"location_ids","type":"string","required":false,"description":"Location ids, comma-separated (see easystore_list_locations)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"variant_ids","type":"string","required":false,"description":"Variant ids, comma-separated (see easystore_list_product_variants)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":141},{"name":"easystore_list_orders","title":"List orders","description":"List orders from every sales channel with customer, items, totals, payment and fulfillment status. Filter by payment or fulfillment status, customer, or dates (store time zone). Needs read_orders. GET /api/3.0/orders.json.","inputs":[{"name":"created_at_max","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"created_at_min","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"customer_id","type":"integer","required":false,"description":"Only this customer's orders."},{"name":"financial_status","type":"string","required":false,"description":"Payment status."},{"name":"fulfillment_status","type":"string","required":false,"description":"Shipping status."},{"name":"ids","type":"string","required":false,"description":"Only these order ids, comma-separated."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"processed_at_max","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"processed_at_min","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"since_id","type":"integer","required":false,"description":"Start at this order id (inclusive: id >= since_id). Use with sort=id.asc."},{"name":"sort","type":"string","required":false,"description":"Sort as field.asc or field.desc, e.g. id.asc (a stable order for paging through everything)."},{"name":"updated_at_max","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."},{"name":"updated_at_min","type":"string","required":false,"description":"yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":370},{"name":"easystore_get_order","title":"Get order","description":"One order by id. Ask for extra sections with fields: items, addresses, transactions, fulfillments, refunds, taxes, customer, shipping_fees, discounts, points, cancellation, note_attributes. Needs read_orders. GET /api/3.0/orders/{id}.json.","inputs":[{"name":"fields","type":"string","required":false,"description":"Comma-separated extra sections, e.g. items,addresses,fulfillments."},{"name":"order_id","type":"integer","required":true,"description":"EasyStore order id (not the order number)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":107},{"name":"easystore_list_order_fulfillments","title":"List order fulfillments","description":"The fulfillments (shipments with tracking details and status) of one order. Needs read_fulfillments. GET /api/3.0/orders/{id}/fulfillments.json.","inputs":[{"name":"order_id","type":"integer","required":true,"description":"EasyStore order id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":65},{"name":"easystore_list_order_transactions","title":"List order transactions","description":"The payment transactions of one order (gateway, amount, status). Needs read_orders. GET /api/3.0/orders/{id}/transactions.json.","inputs":[{"name":"order_id","type":"integer","required":true,"description":"EasyStore order id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":54},{"name":"easystore_list_checkouts","title":"List checkouts","description":"List checkouts (carts in progress or abandoned). Cart tokens are not returned. Needs read_orders. GET /api/3.0/checkouts.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-50 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"since_id","type":"integer","required":false,"description":"Start at this checkout id (inclusive)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":102},{"name":"easystore_list_customers","title":"List customers","description":"List customers with contact details, order count, total spent, groups and store credit. Search by name or email with query. Needs read_customers. GET /api/3.0/customers.json.","inputs":[{"name":"created_at_max","type":"string","required":false,"description":"ISO 8601 date or date-time, e.g. 2026-10-01 or 2026-10-01T00:00:00+08:00."},{"name":"created_at_min","type":"string","required":false,"description":"ISO 8601 date or date-time, e.g. 2026-10-01 or 2026-10-01T00:00:00+08:00."},{"name":"ids","type":"string","required":false,"description":"Only these customer ids, comma-separated."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"query","type":"string","required":false,"description":"Match on first name, last name or email."},{"name":"since_id","type":"integer","required":false,"description":"Start at this customer id (inclusive)."},{"name":"sort","type":"string","required":false,"description":"Sort as field.asc or field.desc, e.g. id.asc (a stable order for paging through everything)."},{"name":"updated_at_max","type":"string","required":false,"description":"ISO 8601 date or date-time, e.g. 2026-10-01 or 2026-10-01T00:00:00+08:00."},{"name":"updated_at_min","type":"string","required":false,"description":"ISO 8601 date or date-time, e.g. 2026-10-01 or 2026-10-01T00:00:00+08:00."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":353},{"name":"easystore_search_customers","title":"Search customers","description":"Find customers by exact email, phone number or customer code. Pass at least one. Needs read_customers. GET /api/3.0/customers/search.json.","inputs":[{"name":"code","type":"string","required":false,"description":"Customer code."},{"name":"email","type":"string","required":false,"description":"Exact email address."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"phone","type":"string","required":false,"description":"Phone number as stored, e.g. 601110768827."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"easystore_get_customer","title":"Get customer","description":"One customer by id. Add fields=points,membership for loyalty data. Needs read_customers. GET /api/3.0/customers/{id}.json.","inputs":[{"name":"customer_id","type":"integer","required":true,"description":"EasyStore customer id."},{"name":"fields","type":"string","required":false,"description":"Extra sections, e.g. points,membership."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":72},{"name":"easystore_list_customer_addresses","title":"List customer addresses","description":"The saved addresses of one customer. Needs read_customers. GET /api/3.0/customers/{id}/addresses.json.","inputs":[{"name":"customer_id","type":"integer","required":true,"description":"EasyStore customer id."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":94},{"name":"easystore_get_customer_points","title":"Get customer points","description":"The loyalty points balance of one customer. Needs read_customers. GET /api/3.0/customers/{id}/points.json.","inputs":[{"name":"customer_id","type":"integer","required":true,"description":"EasyStore customer id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":51},{"name":"easystore_list_customer_groups","title":"List customer groups","description":"List customer groups (for example VIP). Needs read_customers. GET /api/3.0/groups.json.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":34},{"name":"easystore_list_pages","title":"List pages","description":"List the store's content pages. Needs read_content. GET /api/3.0/pages.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":75},{"name":"easystore_list_blogs","title":"List blogs","description":"List the store's blogs. Needs read_content. GET /api/3.0/blogs.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"visibility","type":"string","required":false,"description":"Only published or unpublished blogs."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":88},{"name":"easystore_list_articles","title":"List blog articles","description":"List blog articles. Needs read_content. GET /api/3.0/articles.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"visibility","type":"string","required":false,"description":"Only published or unpublished articles."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":84},{"name":"easystore_set_inventory_level","title":"Set inventory level","description":"WRITE. Set the stock of one variant at one location to an exact number (quantity 0 or more). Omit location_id for the primary location. Overwrites the current quantity; use easystore_adjust_inventory_level for a relative change. Needs write_products. PUT /api/4.0/inventory_levels/set.json.","inputs":[{"name":"location_id","type":"integer","required":false,"description":"Location id (see easystore_list_locations). Default: the primary location."},{"name":"quantity","type":"integer","required":true,"description":"The exact available quantity to set."},{"name":"variant_id","type":"integer","required":true,"description":"Variant id (see easystore_list_product_variants)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":129},{"name":"easystore_adjust_inventory_level","title":"Adjust inventory level","description":"WRITE. Add to or remove from the stock of one variant at one location by a relative amount (positive adds, negative removes; 0 is rejected). Not idempotent: repeating it changes the stock again. Omit location_id for the primary location. Needs write_products. PUT /api/4.0/inventory_levels/adjust.json.","inputs":[{"name":"adjustment_quantity","type":"integer","required":true,"description":"Relative change: 5 adds 5, -5 removes 5."},{"name":"location_id","type":"integer","required":false,"description":"Location id (see easystore_list_locations). Default: the primary location."},{"name":"variant_id","type":"integer","required":true,"description":"Variant id (see easystore_list_product_variants)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":143},{"name":"easystore_update_variant","title":"Update variant","description":"WRITE. Change one variant's price, compare-at price, cost price, SKU, barcode or enabled flag. Only the fields you pass change. To change stock use the inventory tools. Needs write_products. PUT /api/3.0/products/{product_id}/variants.json.","inputs":[{"name":"barcode","type":"string","required":false,"description":"Barcode."},{"name":"compare_at_price","type":"number","required":false,"description":"Original price shown struck through."},{"name":"cost_price","type":"number","required":false,"description":"Cost price."},{"name":"is_enabled","type":"boolean","required":false,"description":"Whether the variant can be sold."},{"name":"price","type":"number","required":false,"description":"Selling price in the store's primary currency."},{"name":"product_id","type":"integer","required":true,"description":"The product the variant belongs to."},{"name":"sku","type":"string","required":false,"description":"SKU."},{"name":"variant_id","type":"integer","required":true,"description":"Variant id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":159},{"name":"easystore_cancel_order","title":"Cancel order","description":"WRITE, hard to undo. Cancel an order, with an optional reason. Confirm the order id and number with the user first. Needs write_orders. POST /api/3.0/orders/{id}/cancel.json.","inputs":[{"name":"order_id","type":"integer","required":true,"description":"EasyStore order id (not the order number)."},{"name":"reason","type":"string","required":false,"description":"Why the order is cancelled, e.g. Damaged item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":90},{"name":"easystore_create_fulfillment","title":"Create fulfillment","description":"WRITE. Mark an order (or some of its line items) as shipped, with tracking details. Not idempotent: calling it twice creates two fulfillments. With notify_customer true the customer is emailed. Needs write_fulfillments. POST /api/3.0/orders/{id}/fulfillments.json.","inputs":[{"name":"line_items","type":"array","required":false,"description":"Only these line items and quantities; omit to fulfill the whole order."},{"name":"message","type":"string","required":false,"description":"Note about this fulfillment."},{"name":"notify_customer","type":"boolean","required":false,"description":"Email the customer (default false)."},{"name":"order_id","type":"integer","required":true,"description":"EasyStore order id."},{"name":"status","type":"string","required":false,"description":"Shipment status."},{"name":"tracking_company","type":"string","required":false,"description":"Courier name, e.g. DHL."},{"name":"tracking_number","type":"string","required":false,"description":"Tracking number."},{"name":"tracking_url","type":"string","required":false,"description":"Tracking page URL."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":180},{"name":"easystore_create_customer","title":"Create customer","description":"WRITE. Create a customer. Pass at least one of first_name, last_name, email or phone. Not idempotent. Needs write_customers. POST /api/3.0/customers.json.","inputs":[{"name":"birthdate","type":"string","required":false,"description":"yyyy-mm-dd."},{"name":"code","type":"string","required":false,"description":"Your own customer code."},{"name":"country_code","type":"string","required":false,"description":"Two-letter country code, e.g. MY."},{"name":"email","type":"string","required":false,"description":"Email (unique per store)."},{"name":"first_name","type":"string","required":false,"description":"First name."},{"name":"gender","type":"string","required":false,"description":"Gender."},{"name":"groups","type":"array","required":false,"description":"Group names to assign, e.g. [\"VIP\"]."},{"name":"last_name","type":"string","required":false,"description":"Last name."},{"name":"phone","type":"string","required":false,"description":"Phone number, e.g. +60192233445."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":167},{"name":"easystore_update_customer","title":"Update customer","description":"WRITE. Change fields of an existing customer; only the fields you pass change. Needs write_customers. PUT /api/3.0/customers/{id}.json.","inputs":[{"name":"birthdate","type":"string","required":false,"description":"yyyy-mm-dd."},{"name":"code","type":"string","required":false,"description":"Your own customer code."},{"name":"country_code","type":"string","required":false,"description":"Two-letter country code, e.g. MY."},{"name":"customer_id","type":"integer","required":true,"description":"EasyStore customer id."},{"name":"email","type":"string","required":false,"description":"Email (unique per store)."},{"name":"first_name","type":"string","required":false,"description":"First name."},{"name":"gender","type":"string","required":false,"description":"Gender."},{"name":"groups","type":"array","required":false,"description":"Group names to assign, e.g. [\"VIP\"]."},{"name":"last_name","type":"string","required":false,"description":"Last name."},{"name":"phone","type":"string","required":false,"description":"Phone number, e.g. +60192233445."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":172}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T13:06:58.000Z","track":"remote","endpoint":"https://easystore.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"easystore.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-30","recent":[{"id":"chg_01a1b039-697f-79ed-b052-7f26b3104abf","kind":"score.rubric_changed","summary":"We updated how we score, so this day's move reflects our rubric, not a change to the server","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a1b039-697f-79ed-b052-7f26b3104abf"},{"id":"chg_01a19673-5b5a-7018-a13c-11538757112f","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19673-5b5a-7018-a13c-11538757112f"},{"id":"chg_01a19673-5b5a-7c81-b613-964099b50936","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19673-5b5a-7c81-b613-964099b50936"},{"id":"chg_01a19673-5b5b-74d1-ba9d-4595fc550e69","kind":"check.unverifiable","summary":"Stability (0.03 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19673-5b5b-74d1-ba9d-4595fc550e69"},{"id":"chg_01a19673-5b5b-7b06-898e-212b307896d8","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19673-5b5b-7b06-898e-212b307896d8"},{"id":"chg_01a19673-5b5c-72a2-8f1a-b7507b29c9f7","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19673-5b5c-72a2-8f1a-b7507b29c9f7"},{"id":"chg_01a19673-5b5c-7817-9504-ac025324ce9d","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19673-5b5c-7817-9504-ac025324ce9d"},{"id":"chg_01a19673-5b5c-7e98-aa88-53edd13f569a","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19673-5b5c-7e98-aa88-53edd13f569a"},{"id":"chg_01a19673-5b5d-7466-818c-0d2e5d010993","kind":"score.total_changed","summary":"Trust score (65 → 18)","materiality":"functional","direction":"regression","scoreDelta":-47,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19673-5b5d-7466-818c-0d2e5d010993"},{"id":"chg_01a193fe-50fb-7923-b015-1a0998807360","kind":"check.verdict","summary":"Authorization (partial → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-50fb-7923-b015-1a0998807360"},{"id":"chg_01a193fe-50fc-73e4-9bba-876a2fd65bb4","kind":"check.verdict","summary":"MCP protocol (fail → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-50fc-73e4-9bba-876a2fd65bb4"},{"id":"chg_01a193fe-50fc-78d4-8aac-c8be2a3a8e67","kind":"prompt.added","summary":"New prompt “check_variant_stock_across_locations”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-50fc-78d4-8aac-c8be2a3a8e67"},{"id":"chg_01a193fe-50fc-7d1d-815f-5f1c7c06cc79","kind":"prompt.added","summary":"New prompt “find_a_customer_and_review_recent_orders”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-50fc-7d1d-815f-5f1c7c06cc79"},{"id":"chg_01a193fe-50fd-71cb-8a98-f6dbf438cf42","kind":"prompt.added","summary":"New prompt “reconcile_stock_after_a_physical_count”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-50fd-71cb-8a98-f6dbf438cf42"},{"id":"chg_01a193fe-50fd-7820-85b5-6bd182890e8e","kind":"prompt.added","summary":"New prompt “review_paid_orders_waiting_to_ship”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-50fd-7820-85b5-6bd182890e8e"},{"id":"chg_01a193fe-50fd-7c9e-a5e3-1796e3a377c0","kind":"server.version_changed","summary":"Server version (1.3.0 → 1.5.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-50fd-7c9e-a5e3-1796e3a377c0"},{"id":"chg_01a193fe-50ff-78ac-a1c0-876f8e64a699","kind":"protocol.version_changed","summary":"MCP protocol version (2025-06-18 → 2025-11-25)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-50ff-78ac-a1c0-876f8e64a699"},{"id":"chg_01a193fe-5100-7397-b5b3-6bfee271c1cf","kind":"score.total_changed","summary":"Trust score (63 → 65)","materiality":"functional","direction":"improvement","scoreDelta":2,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a193fe-5100-7397-b5b3-6bfee271c1cf"},{"id":"chg_01a19356-161c-7641-aa8b-7e416afa2aef","kind":"server.version_changed","summary":"Server version (1.2.0 → 1.3.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a19356-161c-7641-aa8b-7e416afa2aef"},{"id":"chg_01a191d9-1a95-775b-9d75-838da23a5b90","kind":"server.version_changed","summary":"Server version (1.1.1 → 1.2.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore#chg-chg_01a191d9-1a95-775b-9d75-838da23a5b90"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore","markdown":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-easystore/easystore.xml","external":[{"label":"Remote endpoint","href":"https://easystore.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/easystore/"}]}}