AI Agent Analytics
Seller-side analytics for AI-agent discovery, settled revenue, delivery, and repeat use.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"ai-agent-analytics": {
"url": "https://analytics.davisvillelabs.com/mcp"
}
}
}Remote endpoints
https://analytics.davisvillelabs.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "This tool takes no parameters."
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string",
"description": "Response schema identifier."
},
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Stable product/property ID to pass as product_id to product-scoped tools."
},
"name": {
"type": "string",
"description": "Customer-visible product name."
},
"status": {
"type": "string",
"description": "Current product state."
},
"time_zone": {
"type": "string",
"description": "IANA time zone used for product-local daily metrics."
},
"created_at": {
"type": "string",
"description": "UTC ISO-8601 product creation timestamp."
}
},
"required": [
"id",
"name",
"status",
"time_zone",
"created_at"
],
"additionalProperties": {}
},
"description": "Active products visible to this authorization."
}
},
"required": [
"schema",
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "This tool takes no parameters."
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string",
"description": "Delegated Daily Pulse response schema."
},
"state": {
"type": "string",
"enum": [
"ready",
"preparing"
],
"description": "Whether a precomputed Daily Pulse snapshot is available."
},
"source": {
"type": "string",
"const": "precomputed_daily_snapshot"
},
"history_scan_on_read": {
"type": "boolean",
"const": false
},
"organization": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": {}
},
"snapshot": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"required": [
"schema",
"state",
"source",
"history_scan_on_read",
"organization",
"snapshot"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢scan_agent_commerce_readiness(url)
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 Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "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, and non-public A/AAAA answers are rejected."
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string",
"description": "Readiness-scan schema identifier."
},
"target": {
"type": "object",
"properties": {
"origin": {
"type": "string",
"description": "Normalized public HTTPS origin that was inspected."
},
"hostname": {
"type": "string",
"description": "Normalized public hostname that passed syntax and DNS preflight checks."
}
},
"required": [
"origin",
"hostname"
],
"additionalProperties": {}
},
"observed_at": {
"type": "string",
"description": "UTC scan timestamp."
},
"summary": {
"type": "object",
"properties": {
"machine_interface_observed": {
"type": "boolean",
"description": "Whether at least one public machine interface was directly observed."
},
"mcp": {
"type": "string",
"description": "Observed MCP state such as present, protected, absent, invalid, or unavailable."
},
"openapi": {
"type": "string",
"description": "Observed OpenAPI state."
},
"llms_txt": {
"type": "string",
"description": "Observed llms.txt state."
},
"security_txt": {
"type": "string",
"description": "Observed security.txt state."
},
"oauth_protected_resource_metadata": {
"type": "string",
"description": "Whether RFC 9728 metadata was observed for a protected MCP."
},
"portable_skill_index": {
"type": "string",
"description": "Observed portable-skill index state."
},
"payment_or_commercial_surface_declared": {
"type": "boolean",
"description": "Whether public OpenAPI evidence declares a payment or commercial surface."
}
},
"required": [
"machine_interface_observed",
"mcp",
"openapi",
"llms_txt",
"security_txt",
"oauth_protected_resource_metadata",
"portable_skill_index",
"payment_or_commercial_surface_declared"
],
"additionalProperties": {}
},
"checks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Fixed machine-surface identifier."
},
"standard": {
"type": "string",
"description": "Protocol or convention being checked."
},
"url": {
"type": "string",
"description": "Exact public URL inspected."
},
"status": {
"type": "string",
"description": "Observed status such as present, protected, absent, invalid, redirected, or unavailable."
},
"http_status": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Observed HTTP status when a response was received."
},
"error": {
"description": "Bounded scanner error classification when applicable.",
"type": "string"
},
"evidence": {
"description": "Small public evidence summary for this surface.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"id",
"standard",
"url",
"status",
"http_status"
],
"additionalProperties": {}
},
"description": "Results for the fixed public surfaces; no user-supplied paths are fetched."
},
"gaps": {
"type": "array",
"items": {
"type": "string"
},
"description": "Evidence-based follow-up gaps; absence is not proof a capability does not exist."
},
"integrity": {
"type": "object",
"properties": {
"security_score_assigned": {
"type": "boolean"
},
"redirects_followed": {
"type": "boolean"
},
"credentials_sent": {
"type": "boolean"
},
"user_supplied_paths_fetched": {
"type": "boolean"
},
"fixed_public_surfaces_only": {
"type": "boolean"
},
"direct_ip_and_private_style_targets_rejected": {
"type": "boolean"
},
"dns_a_aaaa_preflight_verified_public": {
"type": "boolean"
},
"dns_rebinding_fully_eliminated": {
"type": "boolean"
},
"response_body_limit_bytes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"note": {
"type": "string"
}
},
"required": [
"security_score_assigned",
"redirects_followed",
"credentials_sent",
"user_supplied_paths_fetched",
"fixed_public_surfaces_only",
"direct_ip_and_private_style_targets_rejected",
"dns_a_aaaa_preflight_verified_public",
"dns_rebinding_fully_eliminated",
"response_body_limit_bytes",
"note"
],
"additionalProperties": {},
"description": "Scanner safety properties and explicit limitations."
}
},
"required": [
"schema",
"target",
"observed_at",
"summary",
"checks",
"gaps",
"integrity"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}Community
Evidence