{
  "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."
  }
}
