{"$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-05T16:33:20.794Z","url":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews","markdownUrl":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews.md","server":{"slug":"ai-legitreviews-legitreviews","name":"Is it legit? Reviews trust checker","registryName":"ai.legitreviews/legitreviews","description":"Scores whether a business's Google Maps reviews are genuine. Your agent collects them, we judge.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"legitreviews","type":"remote","identifier":"https://legitreviews.ai/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews","version":"2.0.0","transport":null,"scoredAt":"2026-11-05T00:02:55.111Z"},"score":{"total":68,"tier":"medium","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":68},{"date":"2026-11-04","total":67},{"date":"2026-11-03","total":67}]},"categories":[{"name":"Endpoint Security","score":77,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.","HTTPS is enforced; there's no plaintext access path.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC is configured correctly; the domain's records validate against the full chain to the root."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_no_destructive","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.validated","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":58,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 2104 tokens (~300/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"300","items":"7","tools":"7","tokens":"2104","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":7,"verdict":"partial","reasons":["Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"2"}}]},{"name":"Tool Coverage","score":92,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","76% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"76"}}]},{"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 7 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 8 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":"7"}},{"code":"toolsafety.manipulation_clean","args":{"units":"8","judged":"8"}}]},{"name":"Capabilities","score":60,"verdict":"fail","reasons":["Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28."],"codes":[{"code":"protocol.outdated","args":{"latest":"2026-07-28","version":"2025-06-18"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"legitreviews","type":"remote","identifier":"https://legitreviews.ai/mcp","withdrawn":false,"score":68,"current":true,"url":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews","markdownUrl":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews.md"}],"facts":[{"label":"Endpoint","value":"https://legitreviews.ai/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"2.0.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"describe_review_source","title":"Which review fields to collect for a platform","description":"Read this BEFORE scraping. Returns, per platform, the exact submission format: identity fields for the listing, the per-review fields (required vs optional; everything required is visible on the review card), where each lives on the platform's pages, the sort-by-newest and 500-most-recent rules, an example payload, and how to deliver it. Without a platform it lists the supported platforms. Only Google Maps exists today.","inputs":[{"name":"platform","type":"string","required":false,"description":"Platform to describe (default: all)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":109},{"name":"check_place","title":"Is this place already analyzed?","description":"Call first. Resolves a Google Maps link or place_id and reports whether a trust result is cached, how fresh it is, and a recommendation: use the cached result, or collect and submit the reviews (also when a cached single-source result would benefit from your corroboration). Never contacts Google.","inputs":[{"name":"place_id","type":"string","required":false,"description":"Google's feature id for the place (0x…:0x…, the '!1s' segment of a /maps/place URL)."},{"name":"url","type":"string","required":false,"description":"Alternative to place_id: a Google Maps place link (long /maps/place/… URL or ?cid= link). Share short-links cannot be resolved; open them first."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":143},{"name":"begin_submission","title":"Start a review submission (get an upload URL)","description":"Reserves a submission and returns an upload_url. POST the complete JSON payload (format from describe_review_source) to it from your own environment or the user's browser; the HTTP response is the trust report. The URL is a secret that completes the submission under YOUR identity whoever posts to it, so the POST needs no key. Alternatively feed the same submission_id to submit_reviews in inline chunks. Pending submissions expire after 2 hours (or are closed as superseded when you one-shot the same place instead).","inputs":[{"name":"agent","type":"string","required":false,"description":"Your agent/product name, recorded as the submission's provenance (e.g. 'Muse', 'Claude Code')."},{"name":"expected_reviews","type":"integer","required":false,"description":"The review count the listing shows, if known."},{"name":"place_id","type":"string","required":false,"description":"Google's feature id for the place (0x…:0x…, the '!1s' segment of a /maps/place URL)."},{"name":"platform","type":"string","required":true,"description":null},{"name":"url","type":"string","required":false,"description":"Alternative to place_id: a Google Maps place link (long /maps/place/… URL or ?cid= link). Share short-links cannot be resolved; open them first."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":236},{"name":"submit_reviews","title":"Submit review data inline","description":"Submit the review feed inside the tool call. Without submission_id this is a one-shot submission of the whole payload (fine up to about 150 reviews). For more, call begin_submission, then send chunks of up to 150 reviews each with the same submission_id and final=false; send final=true with the last chunk (the identity fields may arrive with any chunk). Use this only when you cannot POST to the upload_url yourself (no page fetch, no curl): retyping reviews you already hold in a page or script is slow and error-prone. Returns the trust report when finalized.","inputs":[{"name":"address","type":"string","required":false,"description":null},{"name":"agent","type":"string","required":false,"description":"Your agent/product name, recorded as the submission's provenance (e.g. 'Muse', 'Claude Code')."},{"name":"capped","type":"boolean","required":false,"description":"True when deliberately stopped at 5000+ reviews of a much larger listing."},{"name":"cid","type":"string","required":false,"description":"Decimal cid from a ?cid= link, when placeId is unknown."},{"name":"complete","type":"boolean","required":false,"description":"True only if the review list reached its end; false for a newest-first window of the 500 most recent reviews (at least 200)."},{"name":"final","type":"boolean","required":false,"description":"With submission_id: true when this is the last chunk (default true)."},{"name":"lat","type":"number","required":false,"description":null},{"name":"listedRating","type":"number","required":false,"description":"The star rating Google displays."},{"name":"listedReviews","type":"integer","required":false,"description":"The review count Google displays on the listing."},{"name":"lon","type":"number","required":false,"description":null},{"name":"mapsUrl","type":"string","required":false,"description":null},{"name":"name","type":"string","required":false,"description":null},{"name":"placeId","type":"string","required":false,"description":"Google feature id 0x…:0x…"},{"name":"platform","type":"string","required":false,"description":"Which review source the data follows (describe_review_source)."},{"name":"pulledAt","type":"string","required":false,"description":"ISO 8601 datetime of collection (relative dates are resolved against it)."},{"name":"ratingHistogram","type":"array","required":false,"description":"The five-bar rating histogram next to the star rating, as review counts for 1, 2, 3, 4 and 5 stars IN THAT ORDER (Google draws 5 stars first; reverse what you read). Each bar's accessibility label or…"},{"name":"reviews","type":"array","required":false,"description":null},{"name":"sort","type":"string","required":false,"description":"The order collected in: 'newest' (required for a window) or 'relevant'."},{"name":"submission_id","type":"string","required":false,"description":"From begin_submission (omit for a one-shot submission)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":500},{"name":"finalize_submission","title":"Finalize a submission / fetch its report","description":"For a submission fed by inline chunks: validates, scores, stores and returns the report. For one already uploaded to its upload_url: returns the stored report. Pending with nothing uploaded yet: says so.","inputs":[{"name":"submission_id","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":57},{"name":"get_place_trust","title":"Trust analysis of a place's reviews (cached)","description":"The cached fraud analysis for a place: verdict (looks_legit / not_sure / past_manipulation / inflated / manipulated) with its label and a one-sentence summary, letter grade, 0-100 trust score, the adjusted rating credible reviewers actually give (vs the headline average), reviewer-mix tiers, review-injection statistics, cross-business duplicate-review evidence, red flags, and provenance. Cache only: on a miss, collect and submit the reviews (see check_place).","inputs":[{"name":"place_id","type":"string","required":false,"description":"Google's feature id for the place (0x…:0x…, the '!1s' segment of a /maps/place URL)."},{"name":"url","type":"string","required":false,"description":"Alternative to place_id: a Google Maps place link (long /maps/place/… URL or ?cid= link). Share short-links cannot be resolved; open them first."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":184},{"name":"list_scored_places","title":"Browse the directory of analyzed places","description":"The ranked directory of places already analyzed for review fraud, best adjusted rating first (what the site's home and city pages show). 25 per page. Optional city or curated-list filter; the response lists the available cities/lists and their counts.","inputs":[{"name":"city","type":"string","required":false,"description":"Limit to one city's places (a slug from the `cities` field of a previous response)."},{"name":"list","type":"string","required":false,"description":"Limit to one curated list's places."},{"name":"page","type":"number","required":false,"description":"Page number, 0-based."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":111}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T00:02:55.000Z","track":"remote","endpoint":"https://legitreviews.ai/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=legitreviews.ai","issuer":"CN=YE1,O=Let's Encrypt,C=US","notBefore":"2026-09-08T13:22:56Z","notAfter":"2026-12-07T13:22:55Z","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":"secure","label":"Secure","name":"legitreviews.ai.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"ai.","outcome":"verified","label":"Verified"},{"zone":"legitreviews.ai.","outcome":"verified","label":"Verified"},{"zone":"legitreviews.ai.","outcome":"verified","label":"Verified"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":308},"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-11-03","recent":[{"id":"chg_01a1a904-0445-79db-bcb1-c84d598c9655","kind":"score.total_changed","summary":"Trust score (67 → 68)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews#chg-chg_01a1a904-0445-79db-bcb1-c84d598c9655"},{"id":"chg_01a1a3dd-de2e-7dcf-a78b-93fdb1db4029","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews#chg-chg_01a1a3dd-de2e-7dcf-a78b-93fdb1db4029"},{"id":"chg_01a1a0b8-8f05-7354-85d4-fde7fb0b482f","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews#chg-chg_01a1a0b8-8f05-7354-85d4-fde7fb0b482f"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews/changelog.json"},"links":{"html":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews","markdown":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews.md","changelogJson":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews/changelog.json","changelogRss":"https://verifymcp.io/servers/ai-legitreviews-legitreviews/legitreviews.xml","external":[{"label":"Remote endpoint","href":"https://legitreviews.ai/mcp"},{"label":"Website","href":"https://legitreviews.ai/"}]}}