Skip to content

MCP Analytics

by mcpanalytics.ai · remote · no sign-in to list tools · v1.0.8 · published by ai.mcpanalytics

A statistical analyst in your AI chat: bring data and a question, get a citable, re-runnable report.

Deletes · 1Changes · 14

27 tools: 1 can delete or cancel things, 14 change things and 12 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http analytics https://api.mcpanalytics.ai/mcp/api-key --header 'X-API-Key: <your-x-api-key>'

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "account_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "account_link" says "link": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

27 tools

Deletes or cancels 1Claude Code: deny
  • schedulesStanding 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'…No findings

    Why it is in this group

    • The name "schedules" says "schedule": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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'.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Changes things 14Claude Code: ask
  • aboutPlatform documentation and info: how it works (Answer, Analytics, Custom Analytics), usage.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Platform documentation and info: how it works (Answer, Analytics, Custom Analytics), usage.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • adjust_estimateApply the user's layout wishes to the estimate's page through the layout agent; a new named arrangement, nothing overwritten, no number changes.No findings

    Why it is in this group

    • The description's first verb is "apply": a word for a change.
    Description, as the server wrote it
    Apply the user's layout wishes to the estimate's page through the layout agent; a new named arrangement, nothing overwritten, no number changes.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • agent_advisorAI help desk: which analysis fits your question, interpreting results, fixing errors.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    AI help desk: which analysis fits your question, interpreting results, fixing errors. Multi-turn.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ask_libraryAsk a question across all your delivered analyses: a synthesized answer with citations back to specific reports.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Ask a question across all your delivered analyses: a synthesized answer with citations back to specific reports.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • check_tool_fitBefore naming a library tool: does it fit THIS dataset for THIS question?No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • datasets_uploadGet your data in.No findings

    Why it is in this group

    • The name "datasets_upload" says "upload": a word for a change.
    Description, as the server wrote it
    Get your data in. Pass `data` as an array of row objects to create the dataset immediately and get a dataset_ref ready for path_resolver; 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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • path_bespokeOrder a custom analysis built for this data from a confirmed estimate, optionally with library tools alongside.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Order a custom analysis built for this data from a confirmed estimate, optionally with library tools alongside. Needs the person's yes and an idempotency key; a retry returns the first order. Time: as path_resolver quotes.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • path_estimateA rough answer over a sample and the layout of the full report, for the person to confirm before anything is ordered.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    A rough answer over a sample and the layout of the full report, for the person to confirm before anything is ordered. Time: as path_resolver quotes.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • path_rerunRun a delivered analysis again, on its own dataset or a new one: the same tools and mappings, no rebuild.No findings

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    Description, as the server wrote it
    Run a delivered analysis again, on its own dataset or a new one: the same tools and mappings, no rebuild. Time: as path_resolver quotes.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • path_resolverWhich path a question about data should take (reuse, rerun, answer, tool_run, estimate, bespoke, ask or none), with the reason, every path's score and time, and the ready input for…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Which path a question about data should take (reuse, rerun, answer, tool_run, estimate, bespoke, ask or none), with the reason, every path's score and time, and the ready input for the path it picks. Executes nothing and charges nothing.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • path_reuseHand back the report already delivered for this question on this data.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Hand back the report already delivered for this question on this data. Time: as path_resolver quotes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • path_tool_runRun one or more tested library tools on this dataset, with charts and a written report.No findings

    Why it is in this group

    • The name "path_tool_run" says "run": a word for a change.
    Description, as the server wrote it
    Run one or more tested library tools on this dataset, with charts and a written report. No custom build. Time: as path_resolver quotes.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • review_estimateThe 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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 path_bespoke.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 12Claude Code: allow
  • build_statusCheck 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.No findings

    Why it is in this group

    • The name "build_status" says "status": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • datasets_listList and search your uploaded datasets, with fuzzy matching on name, description, and tags.No findings

    Why it is in this group

    • The name "datasets_list" says "list": a word for reading.
    Description, as the server wrote it
    List and search your uploaded datasets, with fuzzy matching on name, description, and tags. Returns each dataset's uuid:// reference for use in path_resolver and path_tool_run.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • discover_toolsBrowse the analyses you can run: the ones you commissioned plus the platform Standard Library (prebuilt tools; each result tagged source:'own' or 'standard_library').No findings

    Why it is in this group

    • The description's first verb is "browse": a word for reading.
    Description, as the server wrote it
    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 path_resolver.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • find_precedentBefore estimating: how did we answer this objective before, on this data or any data?No findings

    Why it is in this group

    • The name "find_precedent" says "find": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • my_objectsList and search the objects you own across every question: the curated charts, tables and figures of each delivered package, grouped by objective.No findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.
    Description, as the server wrote it
    List and search the objects you own across every question: the curated charts, tables and figures of each delivered package, grouped by objective.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • package_statusRead an analytics package back: status, every run under it, the report link once delivered.No findings

    Why it is in this group

    • The name "package_status" says "status": a word for reading.
    Description, as the server wrote it
    Read an analytics package back: status, every run under it, the report link once delivered.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • path_answerA read of the data (a total, an average, a count, the top group), computed on every row, in this response.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    A read of the data (a total, an average, a count, the top group), computed on every row, in this response. When the question is not a read it says so and names the next step. Time: as path_resolver quotes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • report_cardsBrowse a delivered report's individual cards (charts, tables, insights) inline in chat.No findings

    Why it is in this group

    • The description's first verb is "browse": a word for reading.
    Description, as the server wrote it
    Browse a delivered report's individual cards (charts, tables, insights) inline in chat.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • reports_listYour report library: every analysis delivered, with status and links.No findings

    Why it is in this group

    • The name "reports_list" says "list": a word for reading.
    Description, as the server wrote it
    Your report library: every analysis delivered, with status and links. Pass semantic_query to search report content in plain language.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • reports_viewGet a shareable browser link for a report, viewable without authentication.No findings

    Why it is in this group

    • The name "reports_view" says "view": a word for reading.
    Description, as the server wrote it
    Get a shareable browser link for a report, viewable without authentication.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • tools_schemaGet an analysis's parameter schema.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get an analysis's parameter schema. ALWAYS call before path_tool_run.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • warehouseQuery your org's data warehouse free: browse the catalog (tables with column roles + computed metrics), semantically find data, plain-language ask, or named templates.No findings

    Why it is in this group

    • The description's first verb is "query": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.8. Values in angle brackets are yours to fill in.

claude mcp add --transport http analytics https://api.mcpanalytics.ai/mcp/api-key --header 'X-API-Key: <your-x-api-key>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__analytics__datasets_list",
      "mcp__analytics__discover_tools",
      "mcp__analytics__tools_schema",
      "mcp__analytics__find_precedent",
      "mcp__analytics__package_status",
      "mcp__analytics__my_objects",
      "mcp__analytics__build_status",
      "mcp__analytics__reports_list",
      "mcp__analytics__warehouse",
      "mcp__analytics__reports_view",
      "mcp__analytics__report_cards",
      "mcp__analytics__path_answer"
    ],
    "ask": [
      "mcp__analytics__account_link",
      "mcp__analytics__about",
      "mcp__analytics__agent_advisor",
      "mcp__analytics__datasets_upload",
      "mcp__analytics__review_estimate",
      "mcp__analytics__adjust_estimate",
      "mcp__analytics__check_tool_fit",
      "mcp__analytics__ask_library",
      "mcp__analytics__path_resolver",
      "mcp__analytics__path_reuse",
      "mcp__analytics__path_rerun",
      "mcp__analytics__path_tool_run",
      "mcp__analytics__path_estimate",
      "mcp__analytics__path_bespoke"
    ],
    "deny": [
      "mcp__analytics__schedules"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as analytics. Review it before you use it.