# Ground Truth - First Call Activation (remote · ground-truth-mcp.anishdasmail.workers.dev)

First MCP call: run check_endpoint with url=https://example.com. Paid plan adds monitors.

- Trust score: 62/100 (medium)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `ground-truth-mcp.anishdasmail.workers.dev`: 62/100 (this document), [markdown](https://verifymcp.io/servers/anish632-ground-truth/ground-truth-mcp.md), [page](https://verifymcp.io/servers/anish632-ground-truth/ground-truth-mcp)

## Channel facts

- Endpoint: `https://ground-truth-mcp.anishdasmail.workers.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.5.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_monitor).
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 72/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2086 tokens (~130/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http anish632-ground-truth https://ground-truth-mcp.anishdasmail.workers.dev/mcp
```

### Codex

```toml
[mcp_servers.anish632-ground-truth]
url = "https://ground-truth-mcp.anishdasmail.workers.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "anish632-ground-truth": {
      "type": "remote",
      "url": "https://ground-truth-mcp.anishdasmail.workers.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add anish632-ground-truth --url https://ground-truth-mcp.anishdasmail.workers.dev/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  anish632-ground-truth:
    url: "https://ground-truth-mcp.anishdasmail.workers.dev/mcp"
```

### Other

```json
{
  "mcpServers": {
    "anish632-ground-truth": {
      "type": "http",
      "url": "https://ground-truth-mcp.anishdasmail.workers.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 60, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 62, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 60, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 60)

First indexed and scored.

## MCP tools (16)

### `check_endpoint` (~147 tokens)

Endpoint Reachability Check

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.

Input parameters:

- `url` (string, required): Public http(s) URL or bare domain to probe. Bare domains like google.com are accepted and normalized to https:// automatically.

Output parameters:

- `accessible` (boolean): True when the endpoint returned a 2xx HTTP status.
- `authRequired` (boolean): True when the server responded with 401 or 403, which usually means credentials are required.
- `contentType` (string|null): Response Content-Type header, if present.
- `error` (string): Validation or network error when the request could not be completed.
- `inputUrl` (string): Original user input when normalization changed it, for example when https:// was added.
- `rateLimited` (boolean): True when the server responded with 429 Too Many Requests.
- `responseTimeMs` (integer): Elapsed request time in milliseconds.
- `sampleResponse` (string): 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.
- `status` (integer): HTTP status code returned by the endpoint, when a response was received.
- `url` (string): Normalized URL that was actually fetched.

### `estimate_market` (~149 tokens)

Package Market Search

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.

Input parameters:

- `query` (string, required): Short registry search phrase to evaluate, for example 'mcp memory server' or 'edge orm'.
- `registry` (string): Registry to search. Use 'npm' for JavaScript ecosystems and 'pypi' for Python ecosystems.

Output parameters:

- `query` (string): Search phrase that was evaluated.
- `registry` (string): Registry that was searched.
- `topResults` (array): Representative top search matches that help interpret the market count.
- `totalResults`: Total number of matching packages reported by the registry search.

### `check_pricing` (~166 tokens)

Pricing Page Scan

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.

Input parameters:

- `url` (string, required): Public pricing or plans URL to analyze. Prefer the specific pricing page, for example https://stripe.com/pricing, rather than a generic homepage.

Output parameters:

- `cached` (boolean): True when the page body came from the 5-minute cache instead of a new fetch.
- `error` (string): Fetch or parsing error when the pricing page could not be analyzed.
- `hasFreeOption` (boolean): True when the page contains signals that a free plan or $0 option exists somewhere on the page. This is a page-level signal, not proof that the offer is currently self-serve or globally available.
- `hasFreeTrial` (boolean): True when the page contains signals that a free trial exists somewhere on the page.
- `pageLength` (integer): Size of the fetched page body in characters.
- `plansDetected` (array): Lowercased heuristic plan labels detected from the page text. They are useful hints, not authoritative plan identifiers.
- `pricesFound` (array): Distinct price-like strings extracted from the page text. These are not linked back to specific plans or billing conditions.
- `url` (string): Pricing page that was analyzed.

### `inspect_security_headers` (~126 tokens)

Security Header Inspection

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.

Input parameters:

- `url` (string, required): Public http(s) URL or bare domain to inspect. Bare domains are normalized to https:// automatically.

Output parameters:

- `accessible` (boolean): True when the endpoint returned an HTTP response.
- `error` (string): Validation or network error when the request could not be completed.
- `headers` (object): Tracked response headers and their raw values when present.
- `https` (boolean): True when the normalized URL used https.
- `inputUrl` (string): Original user input when normalization changed it.
- `missingRecommended` (array): Tracked headers that were not present on the response.
- `presentCount` (integer): Number of tracked security headers that were present.
- `score` (string): Heuristic security-header score based on how many tracked headers were present.
- `status` (integer): HTTP status code returned by the endpoint.
- `url` (string): Normalized URL that was fetched.

### `list_resources` (~48 tokens)

Server Resource Discovery

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.

Output parameters:

- `freeTools` (array): Tools available in the free tier with no API key required.
- `monitorTools` (array): Monitor management tools requiring team API key.
- `paidTools` (array): Tools requiring team API key or agentic payment.
- `serverVersion` (string): Current server version.

### `compare_pricing_pages` (~95 tokens)

Pricing Page Comparison

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.

Input parameters:

- `pages` (array, required): Two to five named pricing pages to compare side by side.

Output parameters:

- `pages` (array): Per-page pricing signals returned in input order.
- `summary` (object): Aggregate counts across all compared pricing pages.

### `compare_competitors` (~192 tokens)

Named Package Comparison

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.

Input parameters:

- `packages` (array, required): Two to ten exact package names from the same registry, for example ['react', 'vue']. Use exact registry names, not search phrases or categories.
- `registry` (string): 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.

Output parameters:

- `comparisons` (array): Per-package lookup results returned in the same order as the input package list. Some fields only exist for npm or only for PyPI, so consumers should treat absent fields as normal.
- `packages` (array): Package names that were requested for comparison.
- `registry` (string): Registry used for all comparisons.

### `verify_claim` (~206 tokens)

Claim Support Check

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.

Input parameters:

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

Output parameters:

- `claim` (string): Claim that was evaluated.
- `sources` (array): Per-source evidence results.
- `verdict` (object): Aggregate verdict across all supplied sources.

### `assess_compliance_posture` (~113 tokens)

Compliance Signal Scan

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.

Input parameters:

- `url` (string, required): Public trust, security, compliance, or policy URL to scan.

Output parameters:

- `cached` (boolean): True when the page body came from the 5-minute cache.
- `error` (string): Fetch or parsing error when the page could not be analyzed.
- `matchedSignals` (array): Signal names that were detected on the page.
- `pageLength` (integer): Size of the fetched page body in characters.
- `signals` (object): Boolean scan results for common enterprise compliance and security signals.
- `url` (string): Compliance or trust page that was analyzed.

### `test_hypothesis` (~200 tokens)

Multi-step Hypothesis Test

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.

Input parameters:

- `hypothesis` (string, required): Claim to test, for example 'there are fewer than 50 MCP email servers on npm'.
- `tests` (array, required): Ordered list of one to ten checks to run. Each test object uses only the fields required by its type.

Output parameters:

- `hypothesis` (string): Hypothesis that was evaluated.
- `tests` (array): Per-test execution results in input order.
- `verdict` (object): High-level verdict for the hypothesis.

### `create_monitor` (~325 tokens)

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.

Input parameters:

- `instructions` (string): Supplementary instructions. For vendor_claim: the URL to check. For custom_prompt: comma-separated keywords. Optional for other types.
- `name` (string, required): Human-readable name for this monitor.
- `notification_destination` (string): Optional destination reserved for a future alert-delivery integration.
- `schedule` (string): How often the monitor runs automatically. manual means only via run_monitor_now.
- `target_type` (string, required): 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…
- `target_value` (string, required): 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.

Output parameters:

- `created_at` (string): Creation timestamp ISO 8601.
- `error` (string): Error message if creation failed.
- `id` (string): Unique monitor ID.
- `name` (string): Monitor name.
- `schedule` (string): Monitor schedule.
- `target_type` (string): Monitor target type.
- `target_value` (string): Monitor target value.

### `list_monitors` (~52 tokens)

List Monitors

List all monitors owned by this API key, with last run status and schedule. Requires a team API key.

Input parameters:

- `active_only` (boolean): When true returns only active monitors. Set false to include paused monitors.

Output parameters:

- `error` (string)
- `monitors` (array): List of monitors belonging to this API key.
- `total` (number): Total number of monitors returned.

### `run_monitor_now` (~63 tokens)

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.

Input parameters:

- `monitor_id` (string, required): The monitor ID returned by create_monitor.

Output parameters:

- `changed` (boolean)
- `confidence` (number|null)
- `error` (string)
- `evidence` (array)
- `monitor_id` (string)
- `new_value` (string|null)
- `old_value` (string|null)
- `result_id` (string)
- `run_at` (string)
- `status` (string)

### `get_monitor_result` (~71 tokens)

Get Monitor Results

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.

Input parameters:

- `limit` (integer): Maximum number of results to return, newest first.
- `monitor_id` (string, required): The monitor ID to retrieve results for.

Output parameters:

- `error` (string)
- `monitor_id` (string)
- `results` (array)
- `total` (number)

### `delete_monitor` (~44 tokens)

Delete Monitor

Permanently delete a monitor and all its stored results. This action cannot be undone. Requires a team API key.

Input parameters:

- `monitor_id` (string, required): The monitor ID to delete.

Output parameters:

- `deleted` (boolean)
- `error` (string)
- `monitor_id` (string)
- `results_deleted` (number): Number of result records also deleted.

### `generate_change_report` (~89 tokens)

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.

Input parameters:

- `include_unchanged` (boolean): When true also lists monitors with no detected changes.
- `period` (string): Report period. daily covers the past 24 hours, weekly covers the past 7 days.

Output parameters:

- `changes` (array)
- `error` (string)
- `failures` (array)
- `from` (string)
- `period` (string)
- `recommended_actions` (array)
- `summary` (object)
- `to` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/anish632-ground-truth/ground-truth-mcp#diagnostics

## Score history

- 2026-08-03: 62
- 2026-08-02: 61
- 2026-08-01: 61
- 2026-07-31: 60
- 2026-07-30: 62
- 2026-07-29: 62
- 2026-07-28: 61
- 2026-07-27: 60
- 2026-07-26: 60

## Links

- Remote endpoint: https://ground-truth-mcp.anishdasmail.workers.dev/mcp
- Changelog RSS feed: https://verifymcp.io/servers/anish632-ground-truth/ground-truth-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/anish632-ground-truth/ground-truth-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/anish632-ground-truth/ground-truth-mcp
