anish632 avatar

Ground Truth - Fresh Evidence for AI Agents

io.github.anish632/ground-truth

Gives your AI agent live fact-checking capabilities across endpoints, security configurations, pricing data, regulatory compliance, and market information. You'd reach for this when you need to verify claims in real time rather than relying on stale training data. The streamable HTTP transport means you can query it for things like whether an API endpoint is actually live, what security headers a site implements, or current pricing for services. Think of it as a verification layer that sits between your agent and the world, catching outdated information before it becomes a hallucination.

tools
19
auth
Secret needed
transport
HTTP
last updated
Aug 10, 2026

Install

From registry metadata
$ npx add-mcp https://ground-truth-mcp.anishdasmail.workers.dev/mcp --name ground-truth --header 'X-API-Key: ${X_API_KEY}'

Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http ground-truth https://ground-truth-mcp.anishdasmail.workers.dev/mcp --header 'X-API-Key: YOUR_X_API_KEY'

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 19 tools

Verified live against the running server on Nov 6, 2026.

check_endpointPreflight an unfamiliar public URL or API before an AI agent relies on it. It performs one live fetch and returns a PASS/WARN/FAIL verdict with HTTP status, content type, response time, final URL/redirect behavior, auth and rate-limit signals, and a short response sample. A PA...1 params

Preflight an unfamiliar public URL or API before an AI agent relies on it. It performs one live fetch and returns a PASS/WARN/FAIL verdict with HTTP status, content type, response time, final URL/redirect behavior, auth and rate-limit signals, and a short response sample. A PA...

Parameters* required
url*string
Public http(s) URL or bare domain to probe. Bare domains like google.com are accepted and normalized to https:// automatically.
preflight_endpointRun reachability/response and security-header checks together for an unfamiliar URL or API before an AI agent trusts or acts on it. Returns one combined PASS/WARN/FAIL verdict with evidence from both checks. It does not prove that a service is safe, authenticated, or correct.1 params

Run reachability/response and security-header checks together for an unfamiliar URL or API before an AI agent trusts or acts on it. Returns one combined PASS/WARN/FAIL verdict with evidence from both checks. It does not prove that a service is safe, authenticated, or correct.

Parameters* required
url*string
Public http(s) URL or bare domain to preflight.
estimate_marketSearch 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 comp...2 params

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 comp...

Parameters* required
query*string
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.one of npm · pypidefault: npm
check_pricingFetch 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,...1 params

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,...

Parameters* required
url*string
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_headersInspect security-related HTTP response headers for an unfamiliar public URL before an agent trusts or recommends it. It identifies missing or weak HSTS, CSP, framing, referrer, permissions, and cross-origin headers. It reports observable configuration only and does not prove t...1 params

Inspect security-related HTTP response headers for an unfamiliar public URL before an agent trusts or recommends it. It identifies missing or weak HSTS, CSP, framing, referrer, permissions, and cross-origin headers. It reports observable configuration only and does not prove t...

Parameters* required
url*string
Public http(s) URL or bare domain to inspect. Bare domains are normalized to https:// automatically.
preview_monitorCapture a free live baseline for a source that should remain trustworthy over time. Call this before recommending checkout: it proves what would be monitored without creating an account or persistent monitor. After a successful preview, offer create_monitor only when the user...3 params

Capture a free live baseline for a source that should remain trustworthy over time. Call this before recommending checkout: it proves what would be monitored without creating an account or persistent monitor. After a successful preview, offer create_monitor only when the user...

Parameters* required
instructionsstring
For vendor_claim, the public evidence URL. For custom_prompt, comma-separated keywords.
target_type*string
Source type. Use pricing_page for pricing/packaging, endpoint for API availability, package for npm:package or pypi:package, vendor_claim for claim text plus an evidence URL in instructions, and cu...one of url · endpoint · pricing_page · package · vendor_claim · custom_prompt
target_value*string
Public URL, package identifier, or vendor claim to baseline, depending on target_type.
list_resourcesList 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.

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. Call it with no arguments.

compare_pricing_pagesCompare 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 d...1 params

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 d...

Parameters* required
pages*array
Two to five named pricing pages to compare side by side.
compare_competitorsCompare 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 retu...2 params

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 retu...

Parameters* required
packages*array
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.one of npm · pypidefault: npm
verify_claimVerify a factual claim against specific public evidence URLs before an agent repeats it or acts on it. The tool checks whether supplied keywords appear in each fetched source and reports per-source evidence. It does not perform open-ended search, semantic contradiction analysi...3 params

Verify a factual claim against specific public evidence URLs before an agent repeats it or acts on it. The tool checks whether supplied keywords appear in each fetched source and reports per-source evidence. It does not perform open-ended search, semantic contradiction analysi...

Parameters* required
claim*string
Plain-language claim to verify, for example 'AWS Business support includes 24/7 phone support'.
evidence_urls*array
One to ten public documentation, pricing, policy, or support URLs that are likely to contain direct evidence for the claim.
keywords*array
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_postureScan 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, a...1 params

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, a...

Parameters* required
url*string
Public trust, security, compliance, or policy URL to scan.
test_hypothesisRun 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...2 params

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...

Parameters* required
hypothesis*string
Claim to test, for example 'there are fewer than 50 MCP email servers on npm'.
tests*array
Ordered list of one to ten checks to run. Each test object uses only the fields required by its type.
create_monitorCreate 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 ru...6 params

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 ru...

Parameters* required
instructionsstring
Supplementary instructions. For vendor_claim: the URL to check. For custom_prompt: comma-separated keywords. Optional for other types.
name*string
Human-readable name for this monitor.
notification_destinationstring
Optional change-alert destination, sent only when a scheduled check detects a change. One of: an HTTPS webhook URL (JSON POST, no API key included), a Slack Incoming Webhook URL (https://hooks.slac...
schedulestring
How often the monitor runs automatically. manual means only via run_monitor_now.one of manual · hourly · daily · weeklydefault: daily
target_type*string
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 'py...one of url · pricing_page · package · endpoint · vendor_claim · custom_prompt
target_value*string
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.
list_monitorsList all monitors owned by this API key, with last run status and schedule. Requires a free watch key or paid API key.1 params

List all monitors owned by this API key, with last run status and schedule. Requires a free watch key or paid API key.

Parameters* required
active_onlyboolean
When true returns only active monitors. Set false to include paused monitors.default: true
run_monitor_nowImmediately 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 free watch key or paid API key.1 params

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 free watch key or paid API key.

Parameters* required
monitor_id*string
The monitor ID returned by create_monitor.
get_monitor_resultRetrieve the most recent run results for a monitor, including change details, confidence score, evidence URLs, and any error information. Requires a free watch key or paid API key.2 params

Retrieve the most recent run results for a monitor, including change details, confidence score, evidence URLs, and any error information. Requires a free watch key or paid API key.

Parameters* required
limitinteger
Maximum number of results to return, newest first.default: 10
monitor_id*string
The monitor ID to retrieve results for.
delete_monitorPermanently delete a monitor and all its stored results. This action cannot be undone. Requires a free watch key or paid API key.1 params

Permanently delete a monitor and all its stored results. This action cannot be undone. Requires a free watch key or paid API key.

Parameters* required
monitor_id*string
The monitor ID to delete.
generate_change_reportGenerate 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 free watch key or paid API key.2 params

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 free watch key or paid API key.

Parameters* required
include_unchangedboolean
When true also lists monitors with no detected changes.default: false
periodstring
Report period. daily covers the past 24 hours, weekly covers the past 7 days.one of daily · weeklydefault: daily
create_share_linkCreate a read-only public link to the latest result for one of your monitors. The link contains monitor metadata and evidence, never the API key, and expires automatically. Use it to share a verified change with a teammate, customer, or agent. Requires a free watch key or paid...3 params

Create a read-only public link to the latest result for one of your monitors. The link contains monitor metadata and evidence, never the API key, and expires automatically. Use it to share a verified change with a teammate, customer, or agent. Requires a free watch key or paid...

Parameters* required
expires_in_daysinteger
Link lifetime in days, up to 30 days.default: 30
monitor_id*string
The monitor ID whose latest evidence should be shared.
titlestring
Optional human-readable title for the shared report.

Sponsors

Details

Transport
HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026