# AI Agent Analytics

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

- name: io.github.davisvillelabs/ai-agent-analytics
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 76/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.davisvillelabs%2Fai-agent-analytics
- tools: https://api.protogrid.dev/v1/servers/io.github.davisvillelabs%2Fai-agent-analytics/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

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


## Trust

- hygiene: 80
- liveness: 98
- freshness: 85
- provenance: 45
- drivers: +website +reachable +uptime-95% ~updated-31d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 3 of 3 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 631 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 12 tool changes in 30 days
- fail `stability.rug_pull`: 1 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 3, about 631 tokens to load them all
- tool set hash: 46ffc38d4a13d82b6daf5eccd82be819
- tools last changed: 2026-10-03T06:54:59.808Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.davisvillelabs/ai-agent-analytics.svg)](https://protogrid.dev/servers/io.github.davisvillelabs/ai-agent-analytics)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-03 `get_revenue` removed
  - 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.
- 2026-10-03 `get_evidence` removed
  - 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.
- 2026-10-03 `get_discovery` removed
  - 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.
- 2026-10-03 `get_report` removed
  - 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.
- 2026-10-03 `get_attention_queue` removed
  - 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.
- 2026-10-03 `validate_installation` removed
  - 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.
- 2026-10-03 `get_connection_health` removed
  - 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.
- 2026-10-03 `get_agents` removed
  - 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.
- 2026-10-03 `get_portfolio_pulse` removed
  - 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.
- 2026-10-03 `get_daily_pulse` changed (description, inputSchema, outputSchema) **meaning changed**
  - before: 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.
  - after: Return the customer's latest precomputed 24-hour Daily Pulse snapshot. Use this for the same bounded once-daily view shown in the customer dashboard. It does not run a historical event scan when called and takes no parameters because the organization comes from the authorization. Requires analytics:read; if the first 6 PM local snapshot has not been built yet, state is preparing.

Full history: https://api.protogrid.dev/v1/servers/io.github.davisvillelabs%2Fai-agent-analytics/changes

## Remotes

- https://analytics.davisvillelabs.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.94690263)

## Packages

_none_

## Tools (3)

- `get_daily_pulse`: Return the customer's latest precomputed 24-hour Daily Pulse snapshot. Use this for the same bounded once-daily view shown in the customer dashboard. It does not run a historical event scan when called and takes no parameters because the organization comes from the authorization. Requires analytics:read; if the first 6 PM local snapshot has not been built yet, state is preparing.
- `list_products`: List the active product in the bearer token's organization. Use this for setup and identity checks; use get_daily_pulse for the customer's current precomputed 24-hour snapshot. The current Founder plan supports one active product. 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.
- `scan_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.
