io.github.anish632/ground-truth
Official16 toolsGround Truth - First Call Activation
First MCP call: run check_endpoint with url=https://example.com. Paid plan adds monitors.
Monitor endpoint health and uptime with basic checks and paid monitoring plans.
Captured live from the server via tools/list.
check_endpoint
Perform one live, unauthenticated fetch against a public URL or API endpoint before you recommend it, document it, or build on top of it. Use this when the question is simply whether an endpoint currently responds and what kind of response it returns. It reports HTTP status, content type, elapsed time, likely auth/rate-limit signals, and a short response sample. A successful result only proves basic reachability at fetch time. Do not use it to validate authenticated flows, POST side effects, JavaScript execution, or deeper business logic.
Parameters (1)
- urlstringrequired
Public http(s) URL or bare domain to probe. Bare domains like google.com are accepted and normalized to https:// automatically.
estimate_market
Search npm or PyPI to estimate how crowded a package category is before you claim that a market is empty, niche, or competitive. Use this when you have a category or search phrase such as 'edge orm' and want live result counts plus representative matches. Do not use it to compare exact known package names or to infer adoption from downloads; it reflects search results, not market share. Registry responses are cached for 5 minutes.
Parameters (2)
- querystringrequired
Short registry search phrase to evaluate, for example 'mcp memory server' or 'edge orm'.
- registrystring
Registry to search. Use 'npm' for JavaScript ecosystems and 'pypi' for Python ecosystems.
check_pricing
Fetch a public pricing page and extract first-pass pricing signals before you quote plan costs, free tiers, or plan names. Use this when you already have a likely pricing URL and need a quick live scan of visible page text. It returns price-like strings, heuristic plan labels, free or free-trial signals, and cache information. It does not map prices to exact plans, normalize currencies, execute checkout flows, or guarantee that a price applies to a specific region or customer type. JavaScript-rendered, logged-in, or heavily obfuscated pricing details can be missed. Results are cached for 5 minutes.
Parameters (1)
- urlstringrequired
Public pricing or plans URL to analyze. Prefer the specific pricing page, for example https://stripe.com/pricing, rather than a generic homepage.
inspect_security_headers
Fetch a public URL and inspect security-relevant response headers before you claim that a product or endpoint has a strong browser-facing security baseline. Use this for quick due diligence on public apps and docs sites. It checks for common headers such as HSTS, CSP, X-Frame-Options, Referrer-Policy, Permissions-Policy, and X-Content-Type-Options. It does not replace a real security review, authenticated testing, or vulnerability scanning.
Parameters (1)
- urlstringrequired
Public http(s) URL or bare domain to inspect. Bare domains are normalized to https:// automatically.
list_resources
List all available Ground Truth tools and their access tiers. Zero-cost schema discovery. Call this to explore what verification tools are available before making a tool call. No quota consumption, no API key required.
No parameters.
compare_pricing_pages
Compare two to five public pricing pages side by side before you make competitive pricing or packaging claims. Use this when you want a quick, live comparison of visible prices, free-plan signals, and plan-name hints across vendors. The output is heuristic and page-level: it does not map every price to every plan or normalize regional billing differences.
Parameters (1)
- pagesarrayrequired
Two to five named pricing pages to compare side by side.
compare_competitors
Compare two or more exact package names side by side using live npm or PyPI metadata. Use this when you already know the candidate packages and need evidence for claims such as 'tool A is newer', 'tool B is still maintained', or 'these packages use different licenses'. It returns per-package registry metadata in input order, with field availability varying by registry. Missing or unpublished packages return found=false. Do not use it to discover unknown alternatives, estimate market size, or compare packages across different registries. Registry responses are cached for 5 minutes.
Parameters (2)
- packagesarrayrequired
Two to ten exact package names from the same registry, for example ['react', 'vue']. Use exact registry names, not search phrases or categories.
- registrystring
Registry that all package names belong to. All compared packages must come from the same registry, and returned metadata fields differ slightly between npm and PyPI.
verify_claim
Check whether a factual claim is supported by a specific set of public evidence URLs that you already have. For each source, the tool performs a case-insensitive keyword match over the fetched page body, then marks that source as supporting the claim when at least half of the supplied keywords appear. Use this for evidence-backed claim checks on known pages, not for open-ended search, semantic reasoning, or contradiction extraction. The aggregate verdict is driven only by the per-page keyword support ratio. Fetched pages are cached for 5 minutes.
Parameters (3)
- claimstringrequired
Plain-language claim to verify, for example 'AWS Business support includes 24/7 phone support'.
- evidence_urlsarrayrequired
One to ten public documentation, pricing, policy, or support URLs that are likely to contain direct evidence for the claim.
- keywordsarrayrequired
Keywords or short phrases that should appear on supporting pages. Matching is case-insensitive substring matching, so choose phrases that are likely to appear verbatim.
assess_compliance_posture
Scan a public security, trust, compliance, or legal page for common enterprise buying signals before you claim a vendor supports a particular compliance posture. It looks for public references to SOC 2, ISO 27001, GDPR, HIPAA, DPA terms, subprocessors, SSO, SCIM, encryption, and data residency language. This is a signal scanner, not proof of certification or legal sufficiency.
Parameters (1)
- urlstringrequired
Public trust, security, compliance, or policy URL to scan.
test_hypothesis
Run a small verification plan made of concrete live checks and summarize whether a hypothesis is supported. Use this when one conclusion depends on multiple simple checks such as endpoint reachability, npm search counts, or whether a page contains an exact substring. This is a coordination tool, not an open-ended research agent: every test must be explicitly defined in advance, and tests run in order with no branching or early exit. The final verdict is mechanical: all tests passing => SUPPORTED, zero passing => REFUTED, otherwise PARTIALLY SUPPORTED. Use verify_claim when you already have evidence URLs, estimate_market for category sizing, and compare_competitors when you already know exact package names.
Parameters (2)
- hypothesisstringrequired
Claim to test, for example 'there are fewer than 50 MCP email servers on npm'.
- testsarrayrequired
Ordered list of one to ten checks to run. Each test object uses only the fields required by its type.
create_monitor
Create a persistent monitor that tracks a URL, pricing page, package version, endpoint status, vendor claim, or custom keyword pattern over time. Monitors run automatically on their configured schedule (hourly/daily/weekly) via the Cloudflare cron trigger, or on demand with run_monitor_now. Results are stored in the Durable Object SQLite database. Requires a team API key.
Parameters (6)
- namestringrequired
Human-readable name for this monitor.
- target_typestringrequired
What to monitor. url/endpoint: HTTP reachability and status. pricing_page: pricing signals (prices, plans, free tier). package: package version on npm or pypi (target_value as 'npm:pkg-name' or 'pypi:pkg-name'). vendor_claim: keyword presence at a URL (target_value=claim text, instructions=URL to check). custom_prompt: comma-separated keywords checked against a URL (target_value=URL, instructions=keywords).
- target_valuestringrequired
Primary target. For url/endpoint/pricing_page/custom_prompt: a public https URL. For package: 'npm:package-name' or 'pypi:package-name'. For vendor_claim: the claim text to search for.
- instructionsstring
Supplementary instructions. For vendor_claim: the URL to check. For custom_prompt: comma-separated keywords. Optional for other types.
- schedulestring
How often the monitor runs automatically. manual means only via run_monitor_now.
- notification_destinationstring
Optional destination for change alerts (email or webhook URL). Stored for future use.
list_monitors
List all monitors owned by this API key, with last run status and schedule. Requires a team API key.
Parameters (1)
- active_onlyboolean
When true returns only active monitors. Set false to include paused monitors.
run_monitor_now
Immediately run a monitor's verification check outside its normal schedule. Records the result and returns whether the observed value changed since the last run. Counts against your monthly quota. Requires a team API key.
Parameters (1)
- monitor_idstringrequired
The monitor ID returned by create_monitor.
get_monitor_result
Retrieve the most recent run results for a monitor, including change details, confidence score, evidence URLs, and any error information. Requires a team API key.
Parameters (2)
- monitor_idstringrequired
The monitor ID to retrieve results for.
- limitinteger
Maximum number of results to return, newest first.
delete_monitor
Permanently delete a monitor and all its stored results. This action cannot be undone. Requires a team API key.
Parameters (1)
- monitor_idstringrequired
The monitor ID to delete.
generate_change_report
Generate a summary report of monitor activity for a time window. Shows monitors run, changes detected, failures, risk levels, and recommended follow-up actions. Requires a team API key.
Parameters (2)
- periodstring
Report period. daily covers the past 24 hours, weekly covers the past 7 days.
- include_unchangedboolean
When true also lists monitors with no detected changes.
README not available yet.
Install
claude_desktop_config.json
{
"mcpServers": {
"ground-truth": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://ground-truth-mcp.anishdasmail.workers.dev/mcp"
]
}
}
}Desktop config is stdio-only; this bridges via mcp-remote. Native remote: Settings > Connectors.