# AI Agent Analytics (remote · analytics.davisvillelabs.com)

Seller-side analytics for AI-agent discovery, settled revenue, delivery, and repeat use.

- Trust score: 70/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-28

## Components

- remote · `analytics.davisvillelabs.com`: 70/100 (this document), [markdown](https://verifymcp.io/servers/davisvillelabs-ai-agent-analytics/analytics.md), [page](https://verifymcp.io/servers/davisvillelabs-ai-agent-analytics/analytics)

## Channel facts

- Endpoint: `https://analytics.davisvillelabs.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## 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-09-28.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - 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 2020 tokens (~168/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 24/100
  - Stability check failed: schema churn in the 9 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 1 additions.
- **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.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the AI Agent Analytics MCP server?

AI Agent Analytics is a hosted endpoint at https://analytics.davisvillelabs.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http davisvillelabs-ai-agent-analytics 'https://analytics.davisvillelabs.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "davisvillelabs-ai-agent-analytics": {
      "url": "https://analytics.davisvillelabs.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "davisvillelabs-ai-agent-analytics": {
      "type": "http",
      "url": "https://analytics.davisvillelabs.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.davisvillelabs-ai-agent-analytics]
url = "https://analytics.davisvillelabs.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "davisvillelabs-ai-agent-analytics": {
      "type": "remote",
      "url": "https://analytics.davisvillelabs.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add davisvillelabs-ai-agent-analytics --url 'https://analytics.davisvillelabs.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  davisvillelabs-ai-agent-analytics:
    url: "https://analytics.davisvillelabs.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "davisvillelabs-ai-agent-analytics": {
      "Transport": "http",
      "Url": "https://analytics.davisvillelabs.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add davisvillelabs-ai-agent-analytics -t streamable-http -u 'https://analytics.davisvillelabs.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "davisvillelabs-ai-agent-analytics": {
      "type": "http",
      "url": "https://analytics.davisvillelabs.com/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-09-28 (score 70, +1)

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

### 2026-09-26 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 14 to 18.

### 2026-09-25 (score 68, 0)

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

### 2026-09-24 (score 68, +1)

- [functional] New tool “get_attention_queue”

### 2026-09-23 (score 67, 0)

- [security] Tool “validate_installation” rewrote its description, which is the text the model reads

### 2026-09-22 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 1 to 4.

### 2026-09-20 (score 66, −1)

- [security regression] Stability: unverified → fail
- [security regression] A breaking change shipped without a version bump: still 1.0.0
- [security] Tool “get_agents” rewrote its description, which is the text the model reads
- [security] Tool “get_connection_health” rewrote its description, which is the text the model reads
- [security] Tool “get_daily_pulse” rewrote its description, which is the text the model reads
- [security] Tool “get_discovery” rewrote its description, which is the text the model reads
- [security] Tool “get_evidence” rewrote its description, which is the text the model reads
- [security] Tool “get_portfolio_pulse” rewrote its description, which is the text the model reads
- [security] Tool “get_report” rewrote its description, which is the text the model reads
- [security] Tool “get_revenue” rewrote its description, which is the text the model reads
- [security] Tool “list_products” rewrote its description, which is the text the model reads
- [security] Tool “scan_agent_commerce_readiness” rewrote its description, which is the text the model reads
- [security] Tool “validate_installation” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: pass → fail
- [functional regression] “get_report” made “end” required, so existing callers break
- [functional regression] “get_report” made “start” required, so existing callers break
- [functional improvement] Tool “get_agents” now declares an output schema
- [functional improvement] Tool “get_connection_health” now declares an output schema
- [functional improvement] Tool “get_daily_pulse” now declares an output schema
- [functional improvement] Tool “get_discovery” now declares an output schema
- [functional improvement] Tool “get_evidence” now declares an output schema
- [functional improvement] Tool “get_portfolio_pulse” now declares an output schema
- [functional improvement] Tool “get_report” now declares an output schema
- [functional improvement] Tool “get_revenue” now declares an output schema
- [functional improvement] Tool “list_products” now declares an output schema
- [functional improvement] Tool “scan_agent_commerce_readiness” now declares an output schema
- [functional improvement] Tool “validate_installation” now declares an output schema
- [functional] First check of Tool coverage: 100
- [cosmetic] “get_agents” reworded the description of “limit”
- [cosmetic] “get_agents” reworded the description of “product_id”
- [cosmetic] “get_connection_health” reworded the description of “days”
- [cosmetic] “get_connection_health” reworded the description of “product_id”
- [cosmetic] “get_daily_pulse” reworded the description of “day”
- [cosmetic] “get_daily_pulse” reworded the description of “product_id”
- [cosmetic] “get_discovery” reworded the description of “days”
- [cosmetic] “get_discovery” reworded the description of “product_id”
- [cosmetic] “get_evidence” reworded the description of “day”
- [cosmetic] “get_evidence” reworded the description of “product_id”
- [cosmetic] “get_report” reworded the description of “end”
- [cosmetic] “get_report” reworded the description of “product_id”
- [cosmetic] “get_report” reworded the description of “start”
- [cosmetic] “get_revenue” reworded the description of “days”
- [cosmetic] “get_revenue” reworded the description of “product_id”
- [cosmetic] “scan_agent_commerce_readiness” reworded the description of “url”
- [cosmetic] “validate_installation” reworded the description of “product_id”

### 2026-09-19 (score 67)

First indexed and scored.

## MCP tools (12)

### `list_products` (~102 tokens)

List analytics products

List active products in the bearer token's organization and return the IDs needed by product-scoped tools. Use this when you need a product_id; do not use it for metrics, use get_portfolio_pulse instead. Takes no parameters because organization scope comes from the token. Requires products:read or products:create; invalid or expired authority fails closed, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Output parameters:

- `products` (array): Active products visible to this authorization.
- `schema` (string): Response schema identifier.

### `get_portfolio_pulse` (~116 tokens)

Get Portfolio Pulse

Return cross-product Portfolio Pulse for the bearer token's organization. Use this for organization-wide comparison; do not use it for one product/day, use get_daily_pulse, or for one product over a date window, use get_report. Takes no parameters because organization scope comes from the token. Requires portfolio:read; the same actor may count in more than one product, invalid or expired authority fails closed, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Output parameters:

- `organization` (object)
- `portfolio` (object)
- `schema` (string): Delegated portfolio response schema identifier.

### `get_daily_pulse` (~200 tokens)

Get Daily Pulse

Return the six core Daily Pulse metrics for product_id on one product-local day. Use this for headline daily status; use get_evidence to explain why metrics counted, get_report for multi-day analysis, or get_portfolio_pulse for organization-wide comparison. day is optional: omit it for the current product-local day, which may return a live partial pulse until finalized data is ready. Requires analytics:read; product_id is tenant-checked, missing evidence is never promoted, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Input parameters:

- `day` (string): Product-local calendar day as YYYY-MM-DD. Omit to read the current product-local day, with live-pulse fallback when the finalized daily pulse is not ready.
- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.

Output parameters:

- `product` (object)
- `pulse` (object)
- `schema` (string): Delegated response schema identifier.

### `get_discovery` (~184 tokens)

Get agent discovery evidence

Return evidence-backed discovery sources for product_id over a trailing days window. Use this to answer how the product was found; do not use it for repeat relationships, use get_agents, or for settled commerce, use get_revenue. days defaults to 30 and includes the current partial day plus the preceding 29 days; changing days changes only the window, never evidence classification. Requires analytics:read; product_id is tenant-checked, traffic classes remain separate, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Input parameters:

- `days` (integer): Lookback length in whole days, 1 through 90 inclusive. Defaults to 30 when omitted.
- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.

Output parameters:

- `discovery` (object)
- `product` (object)
- `schema` (string): Delegated response schema identifier.

### `get_agents` (~192 tokens)

Get observed agent relationships

Return the most recently observed countable-external pseudonymous agent relationships for product_id, ordered newest first by last_seen_at. Use this for repeat and relationship history; do not use it for acquisition sources, use get_discovery, or for settled commerce, use get_revenue. limit defaults to 100, maxes at 200, and only truncates returned rows, not evidence thresholds or identity rules. Requires analytics:read; unknown traffic is excluded, raw prompts/IPs/credentials are never returned, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Input parameters:

- `limit` (integer): Maximum relationship rows to return, 1 through 200 inclusive. Defaults to 100 when omitted.
- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.

Output parameters:

- `agents` (object)
- `product` (object)
- `schema` (string): Delegated response schema identifier.

### `get_revenue` (~184 tokens)

Get agent revenue evidence

Return settled-revenue intelligence for product_id over a trailing days window. Use this for actual settled commerce; do not use it for a headline daily snapshot, use get_daily_pulse, or for a complete bounded-window funnel, use get_report. days defaults to 30 and includes the current partial UTC day plus the preceding 29 days. Requires analytics:read; challenges and attempts are not revenue, settlement remains distinct from delivery, unlike money is never combined, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Input parameters:

- `days` (integer): Lookback length in whole days, 1 through 90 inclusive. Defaults to 30 when omitted.
- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.

Output parameters:

- `product` (object)
- `revenue` (object)
- `schema` (string): Delegated response schema identifier.

### `get_connection_health` (~188 tokens)

Get instrumentation connection health

Return telemetry connection health for product_id, including credential state, accepted-event freshness, funnel coverage, setup evidence, and aggregate rejection reasons. Use this for instrumentation troubleshooting; do not use it for the narrow post-setup verdict, use validate_installation. days defaults to 30 and includes the current partial day plus the preceding 29 days; an unobserved business stage remains unknown, not broken instrumentation. Requires analytics:read; rejected payload contents and credentials are never returned, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Input parameters:

- `days` (integer): Diagnostic lookback length in whole days, 1 through 90 inclusive. Defaults to 30 when omitted.
- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.

Output parameters:

- `health` (object)
- `product` (object)
- `schema` (string): Delegated response schema identifier.

### `validate_installation` (~132 tokens)

Validate an Agent Analytics installation

Verify setup plumbing and report evidence for eligibility/preflight, payment challenge, durable sandbox settlement, and delivery without executing a payment. Use this after installation or when an authorized coding agent needs to see which commercial stages are proven versus untested; use get_connection_health for broader ingestion diagnostics. Fixture coverage is separate and never implies sandbox or production readiness. Requires analytics:read only; the tool cannot purchase, administer billing, execute customer code, or create production activity.

Input parameters:

- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.

Output parameters:

- `product` (object)
- `schema` (string): Delegated response schema identifier.
- `validation` (object)

### `get_attention_queue` (~114 tokens)

Get the agent attention queue

Return the prioritized active issue queue for product_id. Use this when an authorized agent needs the most important supported delivery, ingestion, or unresolved-payment issue plus the next safe action; use get_evidence or get_revenue for broader analysis. Requires analytics:read; the tool is read-only and cannot retry charges, issue refunds, send notifications, or modify merchant systems.

Input parameters:

- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.

Output parameters:

- `attention` (object)
- `product` (object)
- `schema` (string): Delegated response schema identifier.

### `scan_agent_commerce_readiness` (~196 tokens)

Scan public agent-commerce readiness

Inspect a fixed set of public machine-facing surfaces at the HTTPS origin derived from url. Use this before recommending or integrating a public agent-facing product; do not use it for an authorized customer's instrumentation state, use get_connection_health, and never treat the result as a security score. url path/query/fragment are ignored; redirects are not followed, credentials are never sent, direct/private-style or non-public DNS targets are rejected, and response bodies are bounded. No authorization is required; DNS rebinding cannot be proven impossible, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Input parameters:

- `url` (string, required): Any public HTTPS URL on the product host. Only its scheme and host are used; path, query, and fragment are ignored. Custom ports, embedded credentials, IP literals, localhost/private-style hostnames,…

Output parameters:

- `checks` (array): Results for the fixed public surfaces; no user-supplied paths are fetched.
- `gaps` (array): Evidence-based follow-up gaps; absence is not proof a capability does not exist.
- `integrity` (object): Scanner safety properties and explicit limitations.
- `observed_at` (string): UTC scan timestamp.
- `schema` (string): Readiness-scan schema identifier.
- `summary` (object)
- `target` (object)

### `get_evidence` (~190 tokens)

Inspect metric evidence

Return privacy-minimized evidence explaining why the six core metrics counted for product_id on one product-local day. Use this to audit metric rationale; do not use it for headline daily status, use get_daily_pulse, or for a multi-day window, use get_report. day is optional: omit it for the current product-local day, and partially observed days are labeled as partial. Requires analytics:read; unresolved evidence stays unresolved, raw prompts/private payloads/credentials/full paid results are never returned, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Input parameters:

- `day` (string): Product-local calendar day as YYYY-MM-DD. Omit to inspect the current product-local day.
- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.

Output parameters:

- `evidence` (object)
- `product` (object)
- `schema` (string): Delegated response schema identifier.

### `get_report` (~222 tokens)

Get bounded product report

Return an evidence-backed report for product_id over the required half-open UTC window [start, end). Use this for bounded multi-day analysis; do not use it for one day, use get_daily_pulse, for metric rationale, use get_evidence, or for settlement-focused analysis, use get_revenue. start and end are required UTC YYYY-MM-DD dates: start is inclusive, end is exclusive, and the span cannot exceed 31 days. Requires analytics:read; insufficient-history windows return an explicit unavailable blocker rather than invented data, and the shared MCP limit is 300 calls per 60 seconds per caller before HTTP 429 with Retry-After.

Input parameters:

- `end` (string, required): Required UTC calendar end date as YYYY-MM-DD, exclusive. Must be after start and no more than 31 UTC days later.
- `product_id` (string, required): Exact AI Agent Analytics product/property ID returned by list_products. Do not pass a product name, URL, or organization ID.
- `start` (string, required): Required UTC calendar start date as YYYY-MM-DD, inclusive.

Output parameters:

- `product` (object)
- `report` (object)
- `schema` (string): Delegated response schema identifier.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/davisvillelabs-ai-agent-analytics/analytics#diagnostics

## Score history

- 2026-09-28: 70
- 2026-09-27: 69
- 2026-09-26: 69
- 2026-09-25: 68
- 2026-09-24: 68
- 2026-09-23: 67
- 2026-09-22: 67
- 2026-09-21: 66
- 2026-09-20: 66
- 2026-09-19: 67

## Common questions

### What is the AI Agent Analytics MCP server?

AI Agent Analytics is an MCP server listed in the public MCP registry as io.github.davisvillelabs/ai-agent-analytics. Seller-side analytics for AI-agent discovery, settled revenue, delivery, and repeat use. This page covers its hosted endpoint (https://analytics.davisvillelabs.com/mcp).

### Is the AI Agent Analytics MCP server safe to use?

AI Agent Analytics scores 70 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the AI Agent Analytics MCP server expose?

AI Agent Analytics exposes 12 tools: list_products, get_portfolio_pulse, get_daily_pulse, get_discovery, get_agents, and 7 more. Their descriptions and schemas cost roughly 2,020 tokens of context every time the server is loaded.

### Does the AI Agent Analytics MCP server require authentication?

No. We connected to AI Agent Analytics without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the AI Agent Analytics MCP server still maintained?

AI Agent Analytics is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://analytics.davisvillelabs.com/mcp
- Website: https://analytics.davisvillelabs.com/
- Changelog RSS feed: https://verifymcp.io/servers/davisvillelabs-ai-agent-analytics/analytics.xml
- Changelog JSON feed: https://verifymcp.io/servers/davisvillelabs-ai-agent-analytics/analytics.json
- HTML version of this page: https://verifymcp.io/servers/davisvillelabs-ai-agent-analytics/analytics
