MCP Analytics
mcpanalytics.ai
· MCP Analytics
The statistical analyst in your AI chat: bring a dataset and a question, get back a citable, re-runnable report with its method named.
mcpanalytics.ai via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
D
Conformance score: 44/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
1 snapshot Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-10-01 08:52:01 current | bda9b92d93b9… |
view → |
Endpoints
| Agent card | https://mcpanalytics.ai/.well-known/agent.json |
| Provider | https://mcpanalytics.ai |
| Docs | https://mcpanalytics.ai/docs/quickstart |
Skills · 28 declared · mapped to canonical taxonomy
Direct link to the right account page for anything not doable in chat: billing, browser upload, report management. Hand the user the link and guide them.
Platform documentation and info: how it works, tiers, usage.
AI help desk: which analysis fits your question, interpreting results, fixing errors. Multi-turn.
Get your data in. Pass `data` as an array of row objects to create the dataset immediately and get a dataset_ref ready for create_analysis; omit it to get an up…
List and search your uploaded datasets, with fuzzy matching on name, description, and tags. Returns each dataset's uuid:// reference for use in create_analysis …
Browse the analyses you can run: the ones you commissioned plus the platform Standard Library (prebuilt tools; each result tagged source:'own' or 'standard_libr…
Get an analysis's parameter schema. ALWAYS call before run_analysis.
Run an analysis on your data. Returns a shareable interactive report URL with statistics you can cite, re-run and share, and the method named.
Commission a NEW analysis built for your question. tier is REQUIRED. The user picks. Easiest: fuzzy_request (plain language) + dataset_ref + tier. Snapshot = in…
Modify an EXISTING analysis into a new version: reword the question, swap the method, or add a variable. Pass tool_name + changes (plain language). Rebuilds on …
START HERE for a new question: free, ~30 s. A rough answer over a sample plus the layout of the complete package, every place named with the question it will an…
The estimate as you review it WITH the user: the question as understood, the estimated answer (sample, marked), every place and its question, the page link, a r…
Apply the user's layout wishes to the estimate's page through the layout agent; a new named arrangement, nothing overwritten, no number changes.
A read of the data (average, count, total, highest/lowest by group, a value in a month) answered in this response, in seconds. Not a read -> immediate=false wit…
Step 0 for a new question: which path answers it on this data. One record: route (reuse | answer | package | ask | none), a score with its reason for each of an…
Before estimating: how did we answer this objective before, on this data or any data? Prior packages and library runs with their tools, mappings, bespoke module…
Before naming a library tool: does it fit THIS dataset for THIS question? Column mapping, missing required inputs, method-fit verdict, the places it delivers. R…
Order what the estimate promised after reviewing it: library tools that fit, a bespoke build, or both, computed on the whole dataset; one reviewed page delivere…
Read an analytics package back: status, every run under it, the report link once delivered.
Run a delivered package again, on its own data or new data: the same tools, the same curated objects, the same layout, as a new package with its own link.
List and search the objects you own across every question: the curated charts, tables and figures of each delivered package, grouped by objective.
Check a commissioned build in-chat: stage progress, queue position, rejection reason if the data didn't match the objective, honest ETA, report link when delive…
Ask a question across all your delivered analyses: a synthesized answer with citations back to specific reports.
Your report library: every analysis delivered, with status and links. Pass semantic_query to search report content in plain language.
Query your org's data warehouse free: browse the catalog (tables with column roles + computed metrics), semantically find data, plain-language ask, or named tem…
Standing re-runs of analyses you own: action='create' (weekly/monthly against a re-runnable data reference, connector:// or an https:// link; report emailed aft…
Get a shareable browser link for a report, viewable without authentication.
Browse a delivered report's individual cards (charts, tables, insights) inline in chat.
Health · last 1 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/mcpanalytics.ai) [](https://agenstry.com/agents/mcpanalytics.ai) [](https://agenstry.com/agents/mcpanalytics.ai) [](https://agenstry.com/agents/mcpanalytics.ai)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"name": "MCP Analytics",
"description": "The statistical analyst in your AI chat: bring a dataset and a question, get back a citable, re-runnable report with its method named.",
"url": "https://api.mcpanalytics.ai/auth0",
"version": "1.0.5",
"provider": {
"organization": "MCP Analytics",
"url": "https://mcpanalytics.ai"
},
"documentationUrl": "https://mcpanalytics.ai/docs/quickstart",
"authentication": {
"schemes": [
"oauth2",
"api-key"
],
"oauthMetadata": "https://api.mcpanalytics.ai/.well-known/oauth-authorization-server",
"note": "Authentication required for tool execution. Tool discovery is public via /mcp/discover."
},
"defaultInputModes": [
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "account_link",
"name": "account link",
"description": "Direct link to the right account page for anything not doable in chat: billing, browser upload, report management. Hand the user the link and guide them."
},
{
"id": "about",
"name": "about",
"description": "Platform documentation and info: how it works, tiers, usage."
},
{
"id": "agent_advisor",
"name": "agent advisor",
"description": "AI help desk: which analysis fits your question, interpreting results, fixing errors. Multi-turn."
},
{
"id": "datasets_upload",
"name": "datasets upload",
"description": "Get your data in. Pass `data` as an array of row objects to create the dataset immediately and get a dataset_ref ready for create_analysis; omit it to get an upload link for a file only the user can reach. Add replace_ref (uuid://ID:KEY) with data to REFRESH an existing dataset in place; schedules and tools holding that reference read the new data on their next run."
},
{
"id": "datasets_list",
"name": "datasets list",
"description": "List and search your uploaded datasets, with fuzzy matching on name, description, and tags. Returns each dataset's uuid:// reference for use in create_analysis and run_analysis."
},
{
"id": "discover_tools",
"name": "discover tools",
"description": "Browse the analyses you can run: the ones you commissioned plus the platform Standard Library (prebuilt tools; each result tagged source:'own' or 'standard_library'). Plain-language match; no query lists everything, your own first. Nothing fits? Commission it with create_analysis."
},
{
"id": "tools_schema",
"name": "tools schema",
"description": "Get an analysis's parameter schema. ALWAYS call before run_analysis."
},
{
"id": "run_analysis",
"name": "run analysis",
"description": "Run an analysis on your data. Returns a shareable interactive report URL with statistics you can cite, re-run and share, and the method named."
},
{
"id": "create_analysis",
"name": "create analysis",
"description": "Commission a NEW analysis built for your question. tier is REQUIRED. The user picks. Easiest: fuzzy_request (plain language) + dataset_ref + tier. Snapshot = instant automated report (~2-10 min). JSON = a fast computed answer, numbers + method, re-runnable tool you own (~5 min). Brief = the computed answer on a one-page report: chart, numbers, method (~7 min). Deck = commissioned deep analysis, a durable re-runnable module you own (30-45 min). Failed builds are never billed."
},
{
"id": "modify_analysis",
"name": "modify analysis",
"description": "Modify an EXISTING analysis into a new version: reword the question, swap the method, or add a variable. Pass tool_name + changes (plain language). Rebuilds on the analysis's own dataset by default; the original stays put. Returns pipeline tracking. Follow with build_status."
},
{
"id": "request_estimate",
"name": "request estimate",
"description": "START HERE for a new question: free, ~30 s. A rough answer over a sample plus the layout of the complete package, every place named with the question it will answer, and a page link. Then review_estimate with the user."
},
{
"id": "review_estimate",
"name": "review estimate",
"description": "The estimate as you review it WITH the user: the question as understood, the estimated answer (sample, marked), every place and its question, the page link, a review checklist. Before order_analytics_package."
},
{
"id": "adjust_estimate",
"name": "adjust estimate",
"description": "Apply the user's layout wishes to the estimate's page through the layout agent; a new named arrangement, nothing overwritten, no number changes."
},
{
"id": "answer_now",
"name": "answer now",
"description": "A read of the data (average, count, total, highest/lowest by group, a value in a month) answered in this response, in seconds. Not a read -> immediate=false with the reason; continue with decide_path."
},
{
"id": "decide_path",
"name": "decide path",
"description": "Step 0 for a new question: which path answers it on this data. One record: route (reuse | answer | package | ask | none), a score with its reason for each of answer, package, ask and none, the compiled read plan when it is a read, the method family and the library's tool fit when it is a package, and the one question to ask when something is missing. Deterministic, read-only."
},
{
"id": "find_precedent",
"name": "find precedent",
"description": "Before estimating: how did we answer this objective before, on this data or any data? Prior packages and library runs with their tools, mappings, bespoke module names, method and verdicts. Platform-wide, read-only."
},
{
"id": "check_tool_fit",
"name": "check tool fit",
"description": "Before naming a library tool: does it fit THIS dataset for THIS question? Column mapping, missing required inputs, method-fit verdict, the places it delivers. Read-only."
},
{
"id": "order_analytics_package",
"name": "order analytics package",
"description": "Order what the estimate promised after reviewing it: library tools that fit, a bespoke build, or both, computed on the whole dataset; one reviewed page delivered. Credits per tool run; failed runs never billed."
},
{
"id": "package_status",
"name": "package status",
"description": "Read an analytics package back: status, every run under it, the report link once delivered."
},
{
"id": "rerun_package",
"name": "rerun package",
"description": "Run a delivered package again, on its own data or new data: the same tools, the same curated objects, the same layout, as a new package with its own link."
},
{
"id": "my_objects",
"name": "my objects",
"description": "List and search the objects you own across every question: the curated charts, tables and figures of each delivered package, grouped by objective."
},
{
"id": "build_status",
"name": "build status",
"description": "Check a commissioned build in-chat: stage progress, queue position, rejection reason if the data didn't match the objective, honest ETA, report link when delivered."
},
{
"id": "ask_library",
"name": "ask library",
"description": "Ask a question across all your delivered analyses: a synthesized answer with citations back to specific reports."
},
{
"id": "reports_list",
"name": "reports list",
"description": "Your report library: every analysis delivered, with status and links. Pass semantic_query to search report content in plain language."
},
{
"id": "warehouse",
"name": "warehouse",
"description": "Query your org's data warehouse free: browse the catalog (tables with column roles + computed metrics), semantically find data, plain-language ask, or named templates. Requires warehouse enablement (business plans)."
},
{
"id": "schedules",
"name": "schedules",
"description": "Standing re-runs of analyses you own: action='create' (weekly/monthly against a re-runnable data reference, connector:// or an https:// link; report emailed after each run), 'list', or 'cancel'."
},
{
"id": "reports_view",
"name": "reports view",
"description": "Get a shareable browser link for a report, viewable without authentication."
},
{
"id": "report_cards",
"name": "report cards",
"description": "Browse a delivered report's individual cards (charts, tables, insights) inline in chat."
}
],
"_generated": {
"by": "scripts/generate-agent-manifests.py",
"from": [
"https://api.mcpanalytics.ai/.well-known/mcp/server-card.json",
"https://api.mcpanalytics.ai/.well-known/mcp.json"
],
"note": "Derived from the canonical MCP documents; do not hand-edit."
}
}