{"$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-05T17:23:56.750Z","url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads","markdownUrl":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads.md","server":{"slug":"com-spywinads-mcp","name":"SpyWinAds","registryName":"com.spywinads/mcp","description":"Facebook video ad intel: a video ad's real age and every store running the same video.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"spywinads","type":"remote","identifier":"https://spywinads.com/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads","version":"1.0.0","transport":null,"scoredAt":"2026-11-05T03:15:37.400Z"},"score":{"total":84,"tier":"high trust","status":"scored","weekDelta":4,"history":[{"date":"2026-11-05","total":84},{"date":"2026-11-04","total":83},{"date":"2026-11-03","total":83},{"date":"2026-11-02","total":82},{"date":"2026-11-01","total":82},{"date":"2026-10-31","total":81},{"date":"2026-10-30","total":81},{"date":"2026-10-29","total":80}]},"categories":[{"name":"Endpoint Security","score":97,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC check failed: this domain isn't protected by DNSSEC.","The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.rfc9728_invoke","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","args":{}},{"code":"dnssec.absent","args":{}},{"code":"auth.registration_cimd","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":76,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 560 tokens (~112/item across 5 items; 5 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"112","items":"5","tools":"5","tokens":"560","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":23,"verdict":"partial","reasons":["Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"7"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 6 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"5"}},{"code":"toolsafety.manipulation_clean","args":{"units":"6","judged":"6"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"spywinads","type":"remote","identifier":"https://spywinads.com/mcp","withdrawn":false,"score":84,"current":true,"url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads","markdownUrl":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads.md"}],"facts":[{"label":"Endpoint","value":"https://spywinads.com/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"required"},{"label":"Version","value":"1.0.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"spywin_lookup_video_ad","title":"Look up a Facebook video ad","description":"Check how old a Facebook video ad really is and which stores run the same video. Input: a Meta Ad Library link or ad ID. Returns the day the video file was first uploaded to Facebook (accurate to 1-2 days), the first ad date, live ads, how many stores run the same video now and ever, and the earliest stores in the SpyWinAds library.","inputs":[{"name":"ad","type":"string","required":true,"description":"Meta Ad Library link (https://www.facebook.com/ads/library/?id=...) or the numeric ad ID"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":119},{"name":"spywin_spy_store_ads","title":"Spy on a store's Facebook ads","description":"See the Facebook video ads a Shopify / online store is running. Input: the store domain. Returns live ads, new ads in 7 days, number of videos, products and Pages, and the top videos with their real age and how many stores run each one.","inputs":[{"name":"domain","type":"string","required":true,"description":"Store domain, e.g. example.com"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":81},{"name":"spywin_get_page_ads","title":"Video ads of a Facebook Page","description":"See the video ads a Facebook Page runs: total and live ads, videos, top videos with real age, and the stores the Page sends traffic to. Input: Facebook Page link or Page ID.","inputs":[{"name":"page","type":"string","required":true,"description":"Facebook Page link (https://www.facebook.com/...) or numeric Page ID"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":73},{"name":"spywin_export_shopify_product","title":"Copy a Shopify product to CSV","description":"Read a public Shopify product page and return its title, prices, variants and images, plus a download link to a Shopify-import CSV (valid 24 hours) and the product's video ads if the SpyWinAds library has them.","inputs":[{"name":"url","type":"string","required":true,"description":"Product URL, e.g. https://store.com/products/handle"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":79},{"name":"spywin_get_video_reuse_research","title":"Video Reuse Index (research)","description":"Headline numbers from SpyWinAds Research 'Video Reuse Index': how often Facebook video ads are old videos brought back, how many stores share a video, and how fast a video spreads to 5 stores. With method link.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":61}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T03:15:37.000Z","track":"remote","endpoint":"https://spywinads.com/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=spywinads.com","issuer":"CN=YE1,O=Let's Encrypt,C=US","notBefore":"2026-10-15T05:53:41Z","notAfter":"2027-01-13T05:53:40Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=YE1,O=Let's Encrypt,C=US","issuer":"CN=Root YE,O=ISRG,C=US","notBefore":"2025-09-03T00:00:00Z","notAfter":"2028-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true},{"subject":"CN=Root YE,O=ISRG,C=US","issuer":"CN=ISRG Root X2,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true},{"subject":"CN=ISRG Root X2,O=Internet Security Research Group,C=US","issuer":"CN=ISRG Root X1,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"spywinads.com.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"com.","outcome":"verified","label":"Verified"},{"zone":"spywinads.com.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"enforced_validated","label":"Enforced and verified","gate":"invoke","gateLabel":"On tool calls","status":200,"authorizationServers":["https://spywinads.com"]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-29","recent":[{"id":"chg_01a1a9b4-714f-78fa-98b0-8329609f93ae","kind":"score.total_changed","summary":"Trust score (83 → 84)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads#chg-chg_01a1a9b4-714f-78fa-98b0-8329609f93ae"},{"id":"chg_01a19f66-7fd7-77b5-8724-6decd91b0df5","kind":"score.total_changed","summary":"Trust score (82 → 83)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads#chg-chg_01a19f66-7fd7-77b5-8724-6decd91b0df5"},{"id":"chg_01a1951a-d642-768d-98dd-25e63e9085f5","kind":"score.total_changed","summary":"Trust score (81 → 82)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads#chg-chg_01a1951a-d642-768d-98dd-25e63e9085f5"},{"id":"chg_01a18acd-b989-735a-a9be-9ae5b2e5a4cb","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads#chg-chg_01a18acd-b989-735a-a9be-9ae5b2e5a4cb"},{"id":"chg_01a18acd-b98a-737b-93d9-bc2b6a54bcb1","kind":"score.total_changed","summary":"Trust score (80 → 81)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads#chg-chg_01a18acd-b98a-737b-93d9-bc2b6a54bcb1"},{"id":"chg_01a18864-234b-7d8f-9912-adb055f711cd","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads#chg-chg_01a18864-234b-7d8f-9912-adb055f711cd"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads","markdown":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads.md","changelogJson":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads/changelog.json","changelogRss":"https://verifymcp.io/servers/com-spywinads-mcp/spywinads.xml","external":[{"label":"Remote endpoint","href":"https://spywinads.com/mcp"},{"label":"Repository","href":"https://github.com/anhnguyendj/spywinads-mcp"},{"label":"Website","href":"https://spywinads.com/developers"}]}}