Ground Truth - Fresh Evidence for AI Agents
Server Details
Keep AI answers fresh with free source previews, scheduled monitoring, evidence history, and alerts.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 50.2% over 58 days
- Last Tested
- Transport
- Streamable HTTP
- URL
- Server Listing
- ground-truth-mcp
TDQS
Scored across 19 tools
Several tools have closely related scopes, especially check_endpoint vs preflight_endpoint vs inspect_security_headers, and verify_claim vs test_hypothesis. The descriptions provide enough selection cues to disambiguate most cases, but an agent could still misselect between the overlapping URL-checking and verification tools.
All tool names follow a strict snake_case verb_noun pattern such as list_monitors, create_monitor, delete_monitor, and compare_pricing_pages. The naming is highly predictable and makes the tool surface easy to navigate.
At 19 tools, the surface is slightly heavy, but the count is justified by two clear clusters: one-off verification tools and persistent monitor lifecycle tools. Each tool has a distinct responsibility, so the set does not feel padded or redundant.
The one-off verification coverage is broad, including URLs, pricing, compliance, packages, and claims. However, the monitor lifecycle lacks an update or pause operation, so changing a monitor requires deleting and recreating it, which loses stored history.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
create_monitor1 field changed- changed
Output schema / properties / active_monitor_limit / descriptionPrevious value: -"Maximum active monitors included in the paid plan."New value: +"Maximum active monitors included in the current plan."
- Changed
list_monitors1 field changed- changed
Output schema / properties / active_monitor_limit / descriptionPrevious value: -"Maximum active monitors included in the paid plan."New value: +"Maximum active monitors included in the current plan."
4 tool updates
- Changed
check_endpoint2 fields changed- added
Output schema / properties / next_stepAdded value: +{ + "description": "Agent-readable follow-up for sources that should remain trustworthy over time.", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "url", - "accessible", - "verdict", - "summary", - "evidence", - "recommended_action" -]New value: +[ + "url", + "accessible", + "verdict", + "summary", + "evidence", + "recommended_action", + "next_step" +]
- Changed
inspect_security_headers2 fields changed- added
Output schema / properties / next_stepAdded value: +{ + "description": "Agent-readable follow-up for sources that should be checked repeatedly.", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "url", - "accessible", - "https", - "verdict", - "summary", - "evidence", - "recommended_action" -]New value: +[ + "url", + "accessible", + "https", + "verdict", + "summary", + "evidence", + "recommended_action", + "next_step" +]
- Changed
list_resources3 fields changed- added
Output schema / properties / activationPathAdded value: +{ + "description": "Agent-readable path from a free proof to persistent monitoring.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / recommendedFirstToolAdded value: +{ + "description": "Best first tool for proving recurring value before checkout.", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "freeTools", - "paidTools", - "monitorTools", - "serverVersion" -]New value: +[ + "freeTools", + "paidTools", + "monitorTools", + "serverVersion", + "recommendedFirstTool", + "activationPath" +]
- Added
preview_monitor
3 tool updates
- Changed
create_monitor2 fields changed- changed
Input schema / properties / notification_destination / descriptionPrevious value: -"Optional destination reserved for a future alert-delivery integration."New value: +"Optional HTTPS webhook URL. A POST is sent only when a scheduled check detects a change; no API key is included." - added
Output schema / properties / active_monitor_limitAdded value: +{ + "description": "Maximum active monitors included in the paid plan.", + "type": "number" +}
- Added
create_share_link - Changed
list_monitors3 fields changed- added
Output schema / properties / active_monitor_limitAdded value: +{ + "description": "Maximum active monitors included in the paid plan.", + "type": "number" +} - added
Output schema / properties / remaining_active_slotsAdded value: +{ + "description": "Active monitor slots remaining for this API key.", + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "monitors", - "total" -]New value: +[ + "monitors", + "total", + "active_monitor_limit", + "remaining_active_slots" +]
1 tool update
- Changed
preflight_endpoint2 fields changed- added
Output schema / properties / next_stepAdded value: +{ + "description": "Concrete follow-up after reviewing the evidence.", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "url", - "verdict", - "summary", - "evidence", - "recommended_action" -]New value: +[ + "url", + "verdict", + "summary", + "evidence", + "recommended_action", + "next_step" +]
3 tool updates
- Changed
check_endpoint7 fields changed- added
Output schema / properties / evidenceAdded value: +{ + "additionalProperties": false, + "description": "Structured observations used to produce the verdict.", + "properties": { + "authRequired": { + "type": "boolean" + }, + "contentType": { + "type": [ + "string", + "null" + ] + }, + "error": { + "type": "string" + }, + "finalUrl": { + "type": "string" + }, + "rateLimited": { + "type": "boolean" + }, + "redirected": { + "type": "boolean" + }, + "responseTimeMs": { + "minimum": 0, + "type": "integer" + }, + "status": { + "type": "integer" + } + }, + "type": "object" +} - added
Output schema / properties / finalUrlAdded value: +{ + "description": "Final response URL when the runtime exposes it.", + "type": "string" +} - added
Output schema / properties / recommended_actionAdded value: +{ + "description": "Suggested next step based only on observed response behavior.", + "enum": [ + "proceed", + "proceed_with_caution", + "stop" + ], + "type": "string" +} - added
Output schema / properties / redirectedAdded value: +{ + "description": "True when the fetch followed a redirect to a different final URL.", + "type": "boolean" +} - added
Output schema / properties / summaryAdded value: +{ + "description": "Short human-readable explanation of the verdict.", + "type": "string" +} - added
Output schema / properties / verdictAdded value: +{ + "description": "Operational preflight verdict. It is evidence for an agent decision, not a security guarantee.", + "enum": [ + "PASS", + "WARN", + "FAIL" + ], + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "url", - "accessible" -]New value: +[ + "url", + "accessible", + "verdict", + "summary", + "evidence", + "recommended_action" +]
- Changed
inspect_security_headers5 fields changed- added
Output schema / properties / evidenceAdded value: +{ + "additionalProperties": false, + "description": "Structured header observations used to produce the verdict.", + "properties": { + "error": { + "type": "string" + }, + "https": { + "type": "boolean" + }, + "missingRecommended": { + "items": { + "type": "string" + }, + "type": "array" + }, + "presentCount": { + "minimum": 0, + "type": "integer" + }, + "score": { + "enum": [ + "strong", + "moderate", + "weak" + ], + "type": "string" + }, + "status": { + "type": "integer" + } + }, + "required": [ + "https" + ], + "type": "object" +} - added
Output schema / properties / recommended_actionAdded value: +{ + "description": "Suggested next step; not a security guarantee.", + "enum": [ + "proceed", + "proceed_with_caution", + "stop" + ], + "type": "string" +} - added
Output schema / properties / summaryAdded value: +{ + "description": "Short human-readable explanation of the verdict.", + "type": "string" +} - added
Output schema / properties / verdictAdded value: +{ + "description": "Header preflight verdict based on reachability, HTTPS, and tracked header presence.", + "enum": [ + "PASS", + "WARN", + "FAIL" + ], + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "url", - "accessible", - "https" -]New value: +[ + "url", + "accessible", + "https", + "verdict", + "summary", + "evidence", + "recommended_action" +]
- Added
preflight_endpoint
1 tool update
- Changed
create_monitor1 field changed- changed
Input schema / properties / notification_destination / descriptionPrevious value: -"Optional destination for change alerts (email or webhook URL). Stored for future use."New value: +"Optional destination reserved for a future alert-delivery integration."
1 tool update
- Added
list_resources
6 tool updates
- Added
create_monitor - Added
delete_monitor - Added
generate_change_report - Added
get_monitor_result - Added
list_monitors - Added
run_monitor_now
1 tool update
- Changed
test_hypothesis1 field changed- changed
Input schema / properties / tests / items / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "description": { - "description": "Short explanation of what this endpoint check is meant to prove.", - "minLength": 3, - "type": "string" - }, - "type": { - "const": "endpoint_exists", - "description": "Perform one unauthenticated GET request and pass when the endpoint returns a 2xx HTTP status.", - "type": "string" - }, - "url": { - "description": "Public URL to probe, for example https://api.github.com.", - "format": "uri", - "type": "string" - } - }, - "required": [ - "description", - "type", - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "description": { - "description": "Short explanation of what this npm lower-bound count check is meant to prove.", - "minLength": 3, - "type": "string" - }, - "query": { - "description": "npm search phrase to count, for example 'mcp email server'.", - "minLength": 2, - "type": "string" - }, - "threshold": { - "description": "Lower bound that the npm search result count must exceed.", - "minimum": 0, - "type": "integer" - }, - "type": { - "const": "npm_count_above", - "description": "Search npm and pass when the reported result count is strictly greater than the threshold.", - "type": "string" - } - }, - "required": [ - "description", - "type", - "query", - "threshold" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "description": { - "description": "Short explanation of what this npm upper-bound count check is meant to prove.", - "minLength": 3, - "type": "string" - }, - "query": { - "description": "npm search phrase to count, for example 'business verification mcp'.", - "minLength": 2, - "type": "string" - }, - "threshold": { - "description": "Upper bound that the npm search result count must stay below.", - "minimum": 0, - "type": "integer" - }, - "type": { - "const": "npm_count_below", - "description": "Search npm and pass when the reported result count is strictly less than the threshold.", - "type": "string" - } - }, - "required": [ - "description", - "type", - "query", - "threshold" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "description": { - "description": "Short explanation of what this response-content check is meant to prove.", - "minLength": 3, - "type": "string" - }, - "substring": { - "description": "Exact case-sensitive text to search for in the fetched response body.", - "minLength": 1, - "type": "string" - }, - "type": { - "const": "response_contains", - "description": "Fetch a public URL and pass when the response body contains the exact substring using case-sensitive matching. The tool does not parse DOM structure or execute JavaScript before matching.", - "type": "string" - }, - "url": { - "description": "Public URL whose response body should contain the expected text.", - "format": "uri", - "type": "string" - } - }, - "required": [ - "description", - "type", - "url", - "substring" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "description": { + "description": "Short explanation of what this endpoint check is meant to prove.", + "minLength": 3, + "type": "string" + }, + "type": { + "const": "endpoint_exists", + "description": "Perform one unauthenticated GET request and pass when the endpoint returns a 2xx HTTP status.", + "type": "string" + }, + "url": { + "description": "Public URL to probe, for example https://example.com.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "description", + "type", + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "description": "Short explanation of what this npm lower-bound count check is meant to prove.", + "minLength": 3, + "type": "string" + }, + "query": { + "description": "npm search phrase to count, for example 'mcp email server'.", + "minLength": 2, + "type": "string" + }, + "threshold": { + "description": "Lower bound that the npm search result count must exceed.", + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "npm_count_above", + "description": "Search npm and pass when the reported result count is strictly greater than the threshold.", + "type": "string" + } + }, + "required": [ + "description", + "type", + "query", + "threshold" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "description": "Short explanation of what this npm upper-bound count check is meant to prove.", + "minLength": 3, + "type": "string" + }, + "query": { + "description": "npm search phrase to count, for example 'business verification mcp'.", + "minLength": 2, + "type": "string" + }, + "threshold": { + "description": "Upper bound that the npm search result count must stay below.", + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "npm_count_below", + "description": "Search npm and pass when the reported result count is strictly less than the threshold.", + "type": "string" + } + }, + "required": [ + "description", + "type", + "query", + "threshold" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "description": "Short explanation of what this response-content check is meant to prove.", + "minLength": 3, + "type": "string" + }, + "substring": { + "description": "Exact case-sensitive text to search for in the fetched response body.", + "minLength": 1, + "type": "string" + }, + "type": { + "const": "response_contains", + "description": "Fetch a public URL and pass when the response body contains the exact substring using case-sensitive matching. The tool does not parse DOM structure or execute JavaScript before matching.", + "type": "string" + }, + "url": { + "description": "Public URL whose response body should contain the expected text.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "description", + "type", + "url", + "substring" + ], + "type": "object" + } +]
3 tool updates
- Changed
assess_compliance_posture10 fields changed- added
Output schema / properties / signals / properties / dataResidency / descriptionAdded value: +"True when the page references data residency, data regions, or regional storage controls." - added
Output schema / properties / signals / properties / dpa / descriptionAdded value: +"True when the page references a data processing agreement or DPA." - added
Output schema / properties / signals / properties / encryption / descriptionAdded value: +"True when the page references encryption, data encrypted at rest, or data encrypted in transit." - added
Output schema / properties / signals / properties / gdpr / descriptionAdded value: +"True when the page references GDPR or the General Data Protection Regulation." - added
Output schema / properties / signals / properties / hipaa / descriptionAdded value: +"True when the page references HIPAA compliance language." - added
Output schema / properties / signals / properties / iso27001 / descriptionAdded value: +"True when the page references ISO 27001 certification or compliance language." - added
Output schema / properties / signals / properties / scim / descriptionAdded value: +"True when the page references SCIM provisioning." - added
Output schema / properties / signals / properties / soc2 / descriptionAdded value: +"True when the page references SOC 2 or SOC2 compliance language." - added
Output schema / properties / signals / properties / sso / descriptionAdded value: +"True when the page references SSO or single sign-on." - added
Output schema / properties / signals / properties / subprocessorList / descriptionAdded value: +"True when the page references subprocessors or a subprocessor list."
- Changed
check_endpoint1 field changed- changed
Output schema / properties / sampleResponse / descriptionPrevious value: -"First 1,000 characters of the response body for quick inspection."New value: +"First 1,000 characters of the response body for quick inspection. Use this as a debugging hint only; it may be truncated and should not be treated as a complete page capture."
- Changed
compare_pricing_pages13 fields changed- added
Output schema / properties / pages / items / properties / cached / descriptionAdded value: +"True when this page body came from the 5-minute cache." - added
Output schema / properties / pages / items / properties / error / descriptionAdded value: +"Fetch or parsing error for this specific pricing page when it could not be analyzed." - added
Output schema / properties / pages / items / properties / hasFreeOption / descriptionAdded value: +"True when this page contains visible text suggesting a free plan, free tier, or $0 option." - added
Output schema / properties / pages / items / properties / hasFreeTrial / descriptionAdded value: +"True when this page contains visible text suggesting a free trial." - added
Output schema / properties / pages / items / properties / name / descriptionAdded value: +"Short vendor or product label from the input page object." - added
Output schema / properties / pages / items / properties / pageLength / descriptionAdded value: +"Size of this fetched page body in characters." - added
Output schema / properties / pages / items / properties / plansDetected / descriptionAdded value: +"Lowercased heuristic plan labels detected on this page, such as free, pro, team, or enterprise." - added
Output schema / properties / pages / items / properties / pricesFound / descriptionAdded value: +"Distinct price-like strings extracted from this page. These are page-level hints and are not mapped to specific plans." - added
Output schema / properties / pages / items / properties / url / descriptionAdded value: +"Pricing page URL that was fetched for this named vendor." - added
Output schema / properties / summary / properties / pagesCompared / descriptionAdded value: +"Number of pricing pages included in the comparison." - added
Output schema / properties / summary / properties / pagesWithFreeOption / descriptionAdded value: +"Number of pages with page-level text suggesting a free plan, free tier, or $0 option." - added
Output schema / properties / summary / properties / pagesWithFreeTrial / descriptionAdded value: +"Number of pages with page-level text suggesting a free trial." - added
Output schema / properties / summary / properties / pagesWithVisiblePrices / descriptionAdded value: +"Number of pages where at least one price-like string was detected."
9 tool updates
- First observed
assess_compliance_posture - First observed
check_endpoint - First observed
check_pricing - First observed
compare_competitors - First observed
compare_pricing_pages - First observed
estimate_market - First observed
inspect_security_headers - First observed
test_hypothesis - First observed
verify_claim
Related MCP Connectors
Evidence-grade monitoring of public web sources: changes, records and exports. Free plan available.
Real-time fact-check, citation verification, and source-freshness for AI agents.
Track brand visibility in ChatGPT, Gemini and Google AI answers: competitors, cited sources, checks.
Source-traced evidence research for AI agents. We organise the evidence; you decide.
Related MCP Servers
- AlicenseAqualityAmaintenanceEvidence-backed web research for AI agents. Real-time search with cited claims, confidence scores, and compare mode showing raw LLM hallucination vs evidence-backed answers.520Apache 2.0
- AlicenseAqualityBmaintenanceEnables grounded, dated research from a curated AI-knowledge repository, offering free BM25 retrieval and a research loop that combines the knowledge base, curated sources, and the open web with tiered citations.2MIT
- AlicenseNot gradedqualityDmaintenanceProvides content intelligence tools for AI agents, including extraction, analysis, research, comparison, monitoring, and briefing, powered by free LLMs with pay-per-call or subscription pricing.MIT
- FlicenseNot gradedqualityCmaintenanceProvides AI agents and RAG pipelines with production-grade web search, deep research, news, academic, extraction, crawling, and source verification tools. Enables citation-anchored, deduplicated, fresh, and security-hardened evidence gathering from across the web.-
Glama MCP Gateway
Add one secure layer between your agents and this server.