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.
21 tools: 3 can delete or cancel things, 7 change things and 11 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things7Claude Code: ask: see these tools
- Only reads11Claude Code: allow: see these tools
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/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnexecute_sql
The server marks "execute_sql" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "execute_sql" says "execute": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "execute_sql" says "execute": a word for a change.
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.
