Skip to content

Monitly

by ContentWriterco · remote · no sign-in to list tools · v1.2.0 · published by GitHub user ContentWriterco

Official statistics for AI agents: Eurostat, World Bank, OECD, IMF and WHO data for 150+ countries.

Deletes · 3Changes · 7

21 tools: 3 can delete or cancel things, 7 change things and 11 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 monitly https://monit.ly/api/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "execute_sql" 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 "execute_sql" says "execute": 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.

21 tools

Deletes or cancels 3Claude Code: deny
  • delete_api_keyRevoke a REST API key by id.No findings

    Why it is in this group

    • The name "delete_api_key" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revoke a REST API key by id. The last remaining key cannot be deleted.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_mcp_keyRevoke an MCP key by id.No findings

    Why it is in this group

    • The name "delete_mcp_key" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revoke an MCP key by id. The key used for the current session cannot be revoked here.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • remove_from_watchlistUnfollow a dataset by id.No findings

    Why it is in this group

    • The name "remove_from_watchlist" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Unfollow a dataset by id.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Changes things 7Claude Code: ask
  • add_to_watchlistFollow a dataset by id (from search_catalog).No findings

    Why it is in this group

    • The name "add_to_watchlist" says "add": a word for a change.
    Description, as the server wrote it
    Follow a dataset by id (from search_catalog). The user gets alerts when it updates. Respects the plan's watchlist limit.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • add_watchlist_batchFollow up to 100 datasets in one call.No findings

    Why it is in this group

    • The name "add_watchlist_batch" says "add": a word for a change.
    Description, as the server wrote it
    Follow up to 100 datasets in one call. Skips duplicates and stops at the plan limit (reported in skipped_limit).

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_api_keyCreate a REST API key (mon_…) for /api endpoints.No findings

    Why it is in this group

    • The name "create_api_key" says "create": a word for a change.
    Description, as the server wrote it
    Create a REST API key (mon_…) for /api endpoints. The raw key is returned once. Limit: 3 (Essential) / 10 (Pro).

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_mcp_keyCreate another MCP key (mcpk_…), e.g.No findings

    Why it is in this group

    • The name "create_mcp_key" says "create": a word for a change.
    Description, as the server wrote it
    Create another MCP key (mcpk_…), e.g. for a second client. The raw key is returned once.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • execute_sqlRun a read-only SELECT (or WITH … SELECT) against tables main and data only.1 finding

    Why it is in this group

    • The name "execute_sql" says "execute": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "execute_sql" 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 "execute_sql" says "execute": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Run a read-only SELECT (or WITH … SELECT) against tables main and data only. Use after search_catalog + inspect_dataset to pull the time series for a known data.id / main_id.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_notification_preferencesaction='get' returns e-mail/Slack alert settings.No findings

    Why it is in this group

    • The name "set_notification_preferences" says "set": a word for a change.
    Description, as the server wrote it
    action='get' returns e-mail/Slack alert settings. action='set' changes email_notifications / slack_notifications, or turns alerts for one followed dataset on/off (dataset_id + dataset_notifications).

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • upgrade_planCreate a Stripe Checkout session for the Pro plan and return checkout_url.No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    Create a Stripe Checkout session for the Pro plan and return checkout_url. Open it in the browser for the user to pay.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 11Claude Code: allow
  • export_datasetReturn a CSV download URL for a dataset, optionally filtered by countries and dimension values (dim1…dim8 from inspect_dataset).No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    Return a CSV download URL for a dataset, optionally filtered by countries and dimension values (dim1…dim8 from inspect_dataset).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_datasetGet one dataset metadata row from main by id (includes dimensions, default_view, geos).No findings

    Why it is in this group

    • The name "get_dataset" says "get": a word for reading.
    Description, as the server wrote it
    Get one dataset metadata row from main by id (includes dimensions, default_view, geos).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_planCurrent plan of the key owner: name, status, period end and limits (API/day, MCP/month, watchlist, API keys).No findings

    Why it is in this group

    • The name "get_plan" says "get": a word for reading.
    Description, as the server wrote it
    Current plan of the key owner: name, status, period end and limits (API/day, MCP/month, watchlist, API keys).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_usageMCP queries this billing period, REST API requests today and watchlist slots — used, limit, remaining.No findings

    Why it is in this group

    • The name "get_usage" says "get": a word for reading.
    Description, as the server wrote it
    MCP queries this billing period, REST API requests today and watchlist slots — used, limit, remaining.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • inspect_datasetPeek one dataset by main.id: default slice, whether a country is in the series, dataId, and the last few values.No findings

    Why it is in this group

    • The name "inspect_dataset" says "inspect": a word for reading.
    Description, as the server wrote it
    Peek one dataset by main.id: default slice, whether a country is in the series, dataId, and the last few values. Uses indexed main_id lookup — do not scan the data table yourself for discovery.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_api_keysActive REST API keys (mon_…) of the account: id, name, prefix, created/last used.No findings

    Why it is in this group

    • The name "list_api_keys" says "list": a word for reading.
    Description, as the server wrote it
    Active REST API keys (mon_…) of the account: id, name, prefix, created/last used.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_mcp_keysActive MCP keys (mcpk_…).No findings

    Why it is in this group

    • The name "list_mcp_keys" says "list": a word for reading.
    Description, as the server wrote it
    Active MCP keys (mcpk_…). The key used for this session is marked current=true.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_plansList Monitly plans (Essential, Pro, Enterprise) with prices and limits.No findings

    Why it is in this group

    • The name "list_plans" says "list": a word for reading.
    Description, as the server wrote it
    List Monitly plans (Essential, Pro, Enterprise) with prices and limits.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_watchlistDatasets the user follows (watchlist) with source, latest period and alert status.No findings

    Why it is in this group

    • The name "list_watchlist" says "list": a word for reading.
    Description, as the server wrote it
    Datasets the user follows (watchlist) with source, latest period and alert status. Paginate with limit/offset.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_catalogFind statistical datasets in the catalog (Eurostat, World Bank, OECD, etc.).No findings

    Why it is in this group

    • The name "search_catalog" says "search": a word for reading.
    Description, as the server wrote it
    Find statistical datasets in the catalog (Eurostat, World Bank, OECD, etc.). Index-backed hybrid search (name/code + embeddings). Optional country and source_name filters. Use this instead of SELECT … FROM main ILIKE. Returns compact cards, not series values.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_datasetsAlias of search_catalog.No findings

    Why it is in this group

    • The name "search_datasets" says "search": a word for reading.
    Description, as the server wrote it
    Alias of search_catalog. Find statistical datasets by query, optional country and source_name.

    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.2.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http monitly https://monit.ly/api/mcp

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__monitly__search_catalog",
      "mcp__monitly__search_datasets",
      "mcp__monitly__inspect_dataset",
      "mcp__monitly__get_dataset",
      "mcp__monitly__list_plans",
      "mcp__monitly__get_plan",
      "mcp__monitly__get_usage",
      "mcp__monitly__list_watchlist",
      "mcp__monitly__list_api_keys",
      "mcp__monitly__list_mcp_keys",
      "mcp__monitly__export_dataset"
    ],
    "ask": [
      "mcp__monitly__execute_sql",
      "mcp__monitly__upgrade_plan",
      "mcp__monitly__add_to_watchlist",
      "mcp__monitly__add_watchlist_batch",
      "mcp__monitly__set_notification_preferences",
      "mcp__monitly__create_api_key",
      "mcp__monitly__create_mcp_key"
    ],
    "deny": [
      "mcp__monitly__remove_from_watchlist",
      "mcp__monitly__delete_api_key",
      "mcp__monitly__delete_mcp_key"
    ]
  }
}

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 monitly. Review it before you use it.