{"$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-05T15:50:27.436Z","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo.md","server":{"slug":"io-usefulapi-sapo","name":"Sapo MCP by usefulapi","registryName":"io.usefulapi/sapo","description":"Read Sapo store products, orders, customers and stock levels; edit order notes and stock.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"sapo","type":"remote","identifier":"https://sapo.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo","version":"1.13.3","transport":null,"scoredAt":"2026-11-05T15:05:03.293Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":-45,"history":[{"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":68},{"date":"2026-10-31","total":67},{"date":"2026-10-30","total":64},{"date":"2026-10-29","total":63},{"date":"2026-10-28","total":63},{"date":"2026-10-27","total":63},{"date":"2026-10-26","total":62},{"date":"2026-10-25","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":"sapo","type":"remote","identifier":"https://sapo.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo.md"}],"facts":[{"label":"Endpoint","value":"https://sapo.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.13.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"sapo_get_store","title":"Get store","description":"The Sapo store this login belongs to: name, domain, currency, timezone, plan and other settings. GET /admin/store.json.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":38},{"name":"sapo_list_products","title":"List products","description":"List products with their variants, prices, SKUs and images. Filter by name, vendor, type, collection or created/modified dates. Paged: pass next_page as page. GET /admin/products.json.","inputs":[{"name":"collection_id","type":"integer","required":false,"description":"Only products in this collection (see sapo_list_custom_collections)."},{"name":"created_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"created_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"ids","type":"array","required":false,"description":"Only these product ids."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-250 (default 50)."},{"name":"modified_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"modified_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"product_type","type":"string","required":false,"description":"Exact product type."},{"name":"query","type":"string","required":false,"description":"Search by product name."},{"name":"since_id","type":"integer","required":false,"description":"Only products with an id greater than this."},{"name":"vendor","type":"string","required":false,"description":"Exact vendor (brand) name."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":380},{"name":"sapo_count_products","title":"Count products","description":"Number of products matching the filters. GET /admin/products/count.json.","inputs":[{"name":"collection_id","type":"integer","required":false,"description":"Only products in this collection (see sapo_list_custom_collections)."},{"name":"created_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"created_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"product_type","type":"string","required":false,"description":"Exact product type."},{"name":"vendor","type":"string","required":false,"description":"Exact vendor (brand) name."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":169},{"name":"sapo_get_product","title":"Get product","description":"One product by id, with variants and images. GET /admin/products/{id}.json.","inputs":[{"name":"product_id","type":"integer","required":true,"description":"Sapo product id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":41},{"name":"sapo_list_product_variants","title":"List product variants","description":"The variants (size, color, SKU, barcode, price) of one product. Paged. GET /admin/products/{product_id}/variants.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-250 (default 50)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"product_id","type":"integer","required":true,"description":"Sapo product id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":99},{"name":"sapo_get_product_variant","title":"Get product variant","description":"One product variant by id. GET /admin/variants/{id}.json.","inputs":[{"name":"variant_id","type":"integer","required":true,"description":"Sapo variant id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":39},{"name":"sapo_list_custom_collections","title":"List collections","description":"List manual product collections (danh mục thủ công). Paged. GET /admin/custom_collections.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-250 (default 50)."},{"name":"name","type":"string","required":false,"description":"Filter by collection name."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"product_id","type":"integer","required":false,"description":"Only collections that contain this product."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":103},{"name":"sapo_list_orders","title":"List orders","description":"List orders with line items, customer, totals, payment and fulfillment status. Filter by status, tag, customer or dates. Paged: pass next_page as page. GET /admin/orders.json.","inputs":[{"name":"created_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"created_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"customer_id","type":"integer","required":false,"description":"Only orders of this customer."},{"name":"financial_status","type":"string","required":false,"description":"Payment status: authorized, pending, paid, refunded, voided, or any. Sapo default when omitted: authorized, pending and paid only (refunded and voided are left out)."},{"name":"fulfillment_status","type":"string","required":false,"description":"Fulfillment status (for example unfulfilled, fulfilled, partial)."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-250 (default 50)."},{"name":"modified_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"modified_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"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":"Search text (order number, customer name, phone, email)."},{"name":"status","type":"string","required":false,"description":"Order status: open (Sapo default when omitted, so archived orders are left out), closed, or any (all orders). Pass any for date-range totals."},{"name":"tag","type":"string","required":false,"description":"Only orders with this tag."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":443},{"name":"sapo_count_orders","title":"Count orders","description":"Number of orders matching the filters. GET /admin/orders/count.json.","inputs":[{"name":"created_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"created_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"financial_status","type":"string","required":false,"description":"Payment status: authorized, pending, paid, refunded, voided, or any. Sapo default when omitted: authorized, pending and paid only (refunded and voided are left out)."},{"name":"fulfillment_status","type":"string","required":false,"description":"Fulfillment status (for example unfulfilled, fulfilled, partial)."},{"name":"modified_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"modified_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"status","type":"string","required":false,"description":"Order status: open (Sapo default when omitted, so archived orders are left out), closed, or any (all orders). Pass any for date-range totals."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":329},{"name":"sapo_get_order","title":"Get order","description":"One order by id with line items, addresses, discounts, payment and shipping. GET /admin/orders/{id}.json.","inputs":[{"name":"order_id","type":"integer","required":true,"description":"Sapo order id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":47},{"name":"sapo_list_order_transactions","title":"List order transactions","description":"The payment transactions recorded on one order. GET /admin/orders/{order_id}/transactions.json.","inputs":[{"name":"order_id","type":"integer","required":true,"description":"Sapo order id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":42},{"name":"sapo_list_customers","title":"List customers","description":"List customers with contact details, addresses, order count and total spent. Paged. GET /admin/customers.json.","inputs":[{"name":"created_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"created_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-250 (default 50)."},{"name":"modified_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"modified_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"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":"Only customers with an id greater than this."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":295},{"name":"sapo_count_customers","title":"Count customers","description":"Total number of customers. GET /admin/customers/count.json.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":24},{"name":"sapo_get_customer","title":"Get customer","description":"One customer by id. GET /admin/customers/{id}.json.","inputs":[{"name":"customer_id","type":"integer","required":true,"description":"Sapo customer id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":37},{"name":"sapo_list_locations","title":"List locations","description":"List branches, stores and warehouses (id, name, address, whether they track stock). Use the ids for stock levels. Paged. GET /admin/locations.json.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-250 (default 50)."},{"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":"Search by name, code or phone."},{"name":"status","type":"string","required":false,"description":"Branch status; Sapo spells the inactive value \"expried\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":122},{"name":"sapo_list_inventory_items","title":"List inventory items","description":"List inventory items (one per variant) by SKU/barcode search, variant or product ids. The id is what stock levels use as inventory_item_id. Paged. GET /admin/inventory_items.json.","inputs":[{"name":"ids","type":"array","required":false,"description":"Only these inventory item ids."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-250 (default 50)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"product_ids","type":"array","required":false,"description":"Only these product ids."},{"name":"query","type":"string","required":false,"description":"Search by barcode or SKU."},{"name":"variant_ids","type":"array","required":false,"description":"Only these variant ids."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":145},{"name":"sapo_list_inventory_levels","title":"List inventory levels","description":"Stock per item and location: on_hand, available, committed, incoming, reserved. Filter by inventory item or location ids, or by a minimum/maximum available quantity. Sapo documents no paging for this list, so narrow it with ids. GET /admin/inventory_levels.json.","inputs":[{"name":"available_max","type":"number","required":false,"description":"Only levels with at most this much available."},{"name":"available_min","type":"number","required":false,"description":"Only levels with at least this much available."},{"name":"inventory_item_ids","type":"array","required":false,"description":"Only these inventory item ids (see sapo_list_inventory_items)."},{"name":"location_ids","type":"array","required":false,"description":"Only these location ids (see sapo_list_locations)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":139},{"name":"sapo_list_price_rules","title":"List price rules","description":"List discount price rules (percentage, fixed amount, fixed price) with validity dates and usage counts. Paged. GET /admin/price_rules.json.","inputs":[{"name":"created_on_max","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"created_on_min","type":"string","required":false,"description":"ISO 8601 date or date-time (UTC unless it carries an offset), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."},{"name":"ends_on_max","type":"string","required":false,"description":"Only rules that end on or before this date."},{"name":"ends_on_min","type":"string","required":false,"description":"Only rules that end on or after this date."},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-250 (default 50)."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"starts_on_max","type":"string","required":false,"description":"Only rules that start on or before this date."},{"name":"starts_on_min","type":"string","required":false,"description":"Only rules that start on or after this date."},{"name":"times_used","type":"integer","required":false,"description":"Only rules used exactly this many times."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":273},{"name":"sapo_update_order","title":"Update order note or tags","description":"WRITE: set the note and/or the tags of an order (Sapo only lets an order's items and quantities stay fixed after creation). The value REPLACES the existing note or tags: read the order first to keep what is there. PUT /admin/orders/{id}.json.","inputs":[{"name":"note","type":"string","required":false,"description":"New order note (replaces the old one; empty string clears it)."},{"name":"order_id","type":"integer","required":true,"description":"Sapo order id."},{"name":"tags","type":"array","required":false,"description":"New tag list (replaces all tags; an empty list clears them)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":122},{"name":"sapo_set_inventory_level","title":"Set stock quantity","description":"WRITE: set the physical stock (on_hand) of one inventory item at one location to an exact quantity, with a reason. This OVERWRITES the current number and is recorded as a stock adjustment: read the level first (sapo_list_inventory_levels). PUT /admin/inventory_levels/set.json.","inputs":[{"name":"inventory_item_id","type":"integer","required":true,"description":"Inventory item id (see sapo_list_inventory_items)."},{"name":"location_id","type":"integer","required":true,"description":"Location id (see sapo_list_locations)."},{"name":"on_hand","type":"number","required":true,"description":"Physical on-hand quantity to set (at most 3 decimals are kept)."},{"name":"reason","type":"string","required":false,"description":"Why the stock changes (default: Sapo's own default)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":148}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:05:03.000Z","track":"remote","endpoint":"https://sapo.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":"sapo.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-25","recent":[{"id":"chg_01a19b26-5b3e-7365-839b-3db66862bd5b","kind":"check.unverifiable","summary":"Stability (0.23 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19b26-5b3e-7365-839b-3db66862bd5b"},{"id":"chg_01a19b26-5b3f-711f-85cf-8aa4b387c068","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19b26-5b3f-711f-85cf-8aa4b387c068"},{"id":"chg_01a19b26-5b3f-7757-97f5-62c59ac32d39","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19b26-5b3f-7757-97f5-62c59ac32d39"},{"id":"chg_01a19b26-5b3f-7d81-b2f3-335651abc41e","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19b26-5b3f-7d81-b2f3-335651abc41e"},{"id":"chg_01a19b26-5b40-7397-8388-0e9a2d63e9bc","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19b26-5b40-7397-8388-0e9a2d63e9bc"},{"id":"chg_01a19b26-5b40-78d7-9212-d3455ec063c3","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19b26-5b40-78d7-9212-d3455ec063c3"},{"id":"chg_01a19b26-5b40-7dd3-a404-599c7e2efcf4","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19b26-5b40-7dd3-a404-599c7e2efcf4"},{"id":"chg_01a19b26-5b41-73b2-9d8c-2c81b7e29651","kind":"score.total_changed","summary":"Trust score (68 → 18)","materiality":"functional","direction":"regression","scoreDelta":-50,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19b26-5b41-73b2-9d8c-2c81b7e29651"},{"id":"chg_01a19601-3bd7-7603-85f5-1645d120ab1b","kind":"score.total_changed","summary":"Trust score (67 → 68)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19601-3bd7-7603-85f5-1645d120ab1b"},{"id":"chg_01a193fc-675c-737a-93c7-b67c02c28cb4","kind":"check.verdict","summary":"Authorization (partial → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a193fc-675c-737a-93c7-b67c02c28cb4"},{"id":"chg_01a193fc-675c-7e37-8434-0801d02abf15","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-sapo/sapo#chg-chg_01a193fc-675c-7e37-8434-0801d02abf15"},{"id":"chg_01a193fc-675d-7500-8e82-7149093c524c","kind":"prompt.added","summary":"New prompt “browse_products_variants_and_discount_rules”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a193fc-675d-7500-8e82-7149093c524c"},{"id":"chg_01a193fc-675d-7d14-bab0-d3c1d70dd405","kind":"prompt.added","summary":"New prompt “change_an_order_s_note_or_tags_or_set_a_stock_quantity”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a193fc-675d-7d14-bab0-d3c1d70dd405"},{"id":"chg_01a193fc-675e-73c0-9e24-3c4cb0bb72e6","kind":"prompt.added","summary":"New prompt “find_products_that_are_low_on_stock”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a193fc-675e-73c0-9e24-3c4cb0bb72e6"},{"id":"chg_01a193fc-675e-79cb-ac61-983ece125a63","kind":"prompt.added","summary":"New prompt “look_up_customers_and_how_much_they_spent”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a193fc-675e-79cb-ac61-983ece125a63"},{"id":"chg_01a193fc-675f-7037-b07b-c24b483b64cf","kind":"prompt.added","summary":"New prompt “review_orders_and_what_is_unpaid”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a193fc-675f-7037-b07b-c24b483b64cf"},{"id":"chg_01a193fc-675f-7624-bf9b-8f8e3f251d94","kind":"server.version_changed","summary":"Server version (1.9.0 → 1.11.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a193fc-675f-7624-bf9b-8f8e3f251d94"},{"id":"chg_01a193fc-675f-7c14-aae6-99a3b890ca50","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-sapo/sapo#chg-chg_01a193fc-675f-7c14-aae6-99a3b890ca50"},{"id":"chg_01a193fc-6760-718d-8a9d-05c027d0fe42","kind":"score.total_changed","summary":"Trust score (64 → 67)","materiality":"functional","direction":"improvement","scoreDelta":3,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a193fc-6760-718d-8a9d-05c027d0fe42"},{"id":"chg_01a19320-10be-7261-b9f6-32d4a9cf7031","kind":"server.version_changed","summary":"Server version (1.8.0 → 1.9.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo#chg-chg_01a19320-10be-7261-b9f6-32d4a9cf7031"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo","markdown":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-sapo/sapo.xml","external":[{"label":"Remote endpoint","href":"https://sapo.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/sapo/"}]}}