Good Morning Maldives
com.goodmorningmaldives/newsroomgoodmorningmaldives.comstreamable-httpv1.0.0Scanned
Read-only Maldives news, researched entity records, source documents and economy data.
19 tools: 1 can delete or cancel things and 18 only read.
- Reads private data · 7
- Reads text others write · 3
- Can send data out · 0
- 2 findings
Anlyon alternative
1 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
19 tools
Deletes or cancels 1Claude Code: deny
list_first_lightThe archive of published First Light morning briefs, newest first, with each edition date, title and snippet count.2 findings
Why it is in this group
- The name "list_first_light" says "list": a word for reading.
- The description's first verb is "archive": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "list_first_light" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "list_first_light" says "list": a word for reading.
- Warn
The server marks "list_first_light" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "list_first_light" says "list": a word for reading.
Description, as the server wrote it The archive of published First Light morning briefs, newest first, with each edition date, title and snippet count. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 18Show 18 read-only tools
get_articleThe full text of one published article as markdown, with headline, byline, key takeaways and references, ending in its canonical URL.Reads text others writeNo findings
Why it is in this group
- The name "get_article" says "get": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
Description, as the server wrote it The full text of one published article as markdown, with headline, byline, key takeaways and references, ending in its canonical URL. Partner content is returned labelled as partner content, not GMM journalism.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_documentOne primary-source document: issuer, reference, dates, GMM plain-language summary, the file link and the news coverage that cites it, as markdown ending in its canonical URL.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_document" says "get": a word for reading.
What it can reach
- private-dataThe name "get_document" says "get" and "document": it reads documents.
- private-dataThe description's first sentence says "document": it reads documents.
- untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
Description, as the server wrote it One primary-source document: issuer, reference, dates, GMM plain-language summary, the file link and the news coverage that cites it, as markdown ending in its canonical URL.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_entity_recordGMM's researched record of one entity: the dossier as markdown, plus the full record as structured data.No findings
Why it is in this group
- The name "get_entity_record" says "get": a word for reading.
Description, as the server wrote it GMM's researched record of one entity: the dossier as markdown, plus the full record as structured data. Each fact carries a #fact-<id> anchor (cite as <canonical URL>#fact-<id>) and a grade, and the record has a recordRevision; cite both per the guide at /about/citing-gmm. This is GMM's own graded research, not company-supplied material.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_first_lightOne edition of First Light, the daily morning brief, as markdown: its key number and numbered snippets with links.No findings
Why it is in this group
- The name "get_first_light" says "get": a word for reading.
Description, as the server wrote it One edition of First Light, the daily morning brief, as markdown: its key number and numbered snippets with links. Omit date for the latest published edition. Only editions already released to readers are available.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_page_markdownReads any public GMM page as clean markdown, the same text the site serves at the page address with .md appended.No findings
Why it is in this group
- The name "get_page_markdown" says "get": a word for reading.
Description, as the server wrote it Reads any public GMM page as clean markdown, the same text the site serves at the page address with .md appended. Use it to follow a link from another result: /news/<slug>, /partner/<slug>, /briefs/<YYYY-MM-DD>, /entities (index) and /entities/<slug> (a researched dossier), /documents and /documents/<slug>, /projects and /projects/<slug>, /sections/<slug>, /topics/<slug>, /news and the home page /. Every page ends with its canonical URL. Paths outside that set are refused with a message.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_projectOne tracked project: parties, value, financing, status against schedule, variations, documents and coverage, as markdown ending in its canonical URL.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_project" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "document": it reads documents.
- untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
Description, as the server wrote it One tracked project: parties, value, financing, status against schedule, variations, documents and coverage, as markdown ending in its canonical URL.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_tracker_seriesOne economy tracker series: unit, frequency, source, the revision versions MMA has published and the latest observations.No findings
Why it is in this group
- The name "get_tracker_series" says "get": a word for reading.
Description, as the server wrote it One economy tracker series: unit, frequency, source, the revision versions MMA has published and the latest observations. Says so plainly if the tracker database is unavailable.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_documentsThe independent source library, newest first.Reads private dataNo findings
Why it is in this group
- The name "list_documents" says "list": a word for reading.
What it can reach
- private-dataThe name "list_documents" says "list" and "document": it reads documents.
Description, as the server wrote it The independent source library, newest first. Company-supplied documents are not listed here. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_entitiesThe index of GMM entity records, grouped by category (people, companies, institutions, places), optionally limited to one category slug — list_entity_categories has the slugs.No findings
Why it is in this group
- The name "list_entities" says "list": a word for reading.
Description, as the server wrote it The index of GMM entity records, grouped by category (people, companies, institutions, places), optionally limited to one category slug — list_entity_categories has the slugs. Each record has a canonical URL, and says whether it carries a graded dossier. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_entity_categoriesThe categories GMM files its entity records under — people, companies, institutions, places and the rest — with each one's slug and how many records it holds.Reads private dataNo findings
Why it is in this group
- The name "list_entity_categories" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "file": it reads files.
Description, as the server wrote it The categories GMM files its entity records under — people, companies, institutions, places and the rest — with each one's slug and how many records it holds. Read this first when you want to narrow a search: the slug is what the `type` argument of list_entities and search_entities takes.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_indicatorsThe indicators GMM charts in its articles and dashboards (tourism, fiscal, trade, state-owned enterprises), each with its unit, source note and the latest 24 observations.Reads private dataNo findings
Why it is in this group
- The name "list_indicators" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "note": it reads notes.
Description, as the server wrote it The indicators GMM charts in its articles and dashboards (tourism, fiscal, trade, state-owned enterprises), each with its unit, source note and the latest 24 observations. Pages are at /dashboard. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_projectsGMM project tracker: public projects with status, value, employer and contractor, newest first.No findings
Why it is in this group
- The name "list_projects" says "list": a word for reading.
Description, as the server wrote it GMM project tracker: public projects with status, value, employer and contractor, newest first. Optionally one status, e.g. under-construction or delayed. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_recent_articlesThe newest published GMM news articles, optionally from one desk (section slug).No findings
Why it is in this group
- The name "list_recent_articles" says "list": a word for reading.
Description, as the server wrote it The newest published GMM news articles, optionally from one desk (section slug). Partner content is excluded. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_tracker_seriesThe economy tracker's catalogue: Maldives Monetary Authority statistical series grouped by theme, each with its latest figure and year-on-year change.No findings
Why it is in this group
- The name "list_tracker_series" says "list": a word for reading.
Description, as the server wrote it The economy tracker's catalogue: Maldives Monetary Authority statistical series grouped by theme, each with its latest figure and year-on-year change. Open one with get_tracker_series. Says so plainly if the tracker database is unavailable. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_articlesFull-text search of published GMM news articles (title, summary, body), newest first, with an optional desk (section slug) and date range.No findings
Why it is in this group
- The name "search_articles" says "search": a word for reading.
Description, as the server wrote it Full-text search of published GMM news articles (title, summary, body), newest first, with an optional desk (section slug) and date range. Partner content is excluded. Matching is the content store's: the words are matched as whole-word prefixes and accents count, so "Male" does NOT find "Malé". For a forgiving search, or one that also covers First Light, entity records, projects, documents and tracker pages, use search_site. Each result carries the canonical URL to cite. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_documentsSearches primary-source documents (laws, budgets, contracts, reports) by title, summary or reference.Reads private dataNo findings
Why it is in this group
- The name "search_documents" says "search": a word for reading.
What it can reach
- private-dataThe name "search_documents" says "search" and "document": it reads documents.
- private-dataThe description's first sentence says "search" and "document": it reads documents.
Description, as the server wrote it Searches primary-source documents (laws, budgets, contracts, reports) by title, summary or reference. Open a match with get_document. Matching is the content store's substring match and accents count; search_site folds accents and searches every kind at once. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_entitiesSearches GMM's researched entity records (people, companies, institutions, places) by name, role or summary.No findings
Why it is in this group
- The name "search_entities" says "search": a word for reading.
Description, as the server wrote it Searches GMM's researched entity records (people, companies, institutions, places) by name, role or summary. Open a match with get_entity_record. Filter by type slug. Matching is the content store's substring match and accents count, so "Male" does not find "Malé"; search_site folds accents and searches every kind at once. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_siteSearches the whole publication at once and says what kind each hit is: news articles, First Light items, entity records, projects, source documents and tracker pages.Reads private dataNo findings
Why it is in this group
- The name "search_site" says "search": a word for reading.
What it can reach
- private-dataThe description's first sentence says "search" and "document": it reads documents.
Description, as the server wrote it Searches the whole publication at once and says what kind each hit is: news articles, First Light items, entity records, projects, source documents and tracker pages. This is the broad search — prefer it when the question is not already about one kind of thing, because search_articles and the other per-kind tools look only in their own kind. Matching ignores case AND accents, so "Male" finds "Malé"; a query wrapped in slashes (/min(istry|ister)/) is a regular expression. Every hit carries the canonical URL to cite. Searches the most recent 400 stories and 45 First Light editions, and all reference records. Paginates: when more results remain, the structured answer has a nextCursor (absent on the last page). To continue, call this tool again with the same arguments and cursor set to that value. The cursor moves every kind on together: each page shows the next `limit` hits of each kind.
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.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.
- Reads private data7
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write3
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
- Warnlist_first_light
The server marks "list_first_light" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "list_first_light" says "list": a word for reading.
- Warnlist_first_light
The server marks "list_first_light" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "list_first_light" says "list": a word for reading.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http newsroom https://www.goodmorningmaldives.com/mcpclaude mcp add --transport http newsroom https://www.goodmorningmaldives.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__newsroom__search_site",
"mcp__newsroom__search_articles",
"mcp__newsroom__list_recent_articles",
"mcp__newsroom__get_article",
"mcp__newsroom__get_page_markdown",
"mcp__newsroom__get_first_light",
"mcp__newsroom__list_entity_categories",
"mcp__newsroom__search_entities",
"mcp__newsroom__list_entities",
"mcp__newsroom__get_entity_record",
"mcp__newsroom__search_documents",
"mcp__newsroom__list_documents",
"mcp__newsroom__get_document",
"mcp__newsroom__list_projects",
"mcp__newsroom__get_project",
"mcp__newsroom__list_tracker_series",
"mcp__newsroom__get_tracker_series",
"mcp__newsroom__list_indicators"
],
"ask": [],
"deny": [
"mcp__newsroom__list_first_light"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as newsroom. Review it before you use it.
Capability tags behind 8 rules
- mcp__newsroom__search_site private-data
- mcp__newsroom__get_article untrusted-input
- mcp__newsroom__list_entity_categories private-data
- mcp__newsroom__search_documents private-data
- mcp__newsroom__list_documents private-data
- mcp__newsroom__get_document private-data, untrusted-input
- mcp__newsroom__get_project private-data, untrusted-input
- mcp__newsroom__list_indicators private-data
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/com.goodmorningmaldives/newsroom/verify?hash=cb1ce0b61cc4edf0da2951adf7ca8fd27a3c1d5725fc9927ad2ebaa69f2eedd7" | jq -e '.changed == false'Pinned hash cb1ce0b61cc4, from Oct 30, 2026, 15:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.goodmorningmaldives/newsroom/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.goodmorningmaldives/newsroom)Source: MCP Registry. Synced Oct 30, 2026, 15:17 UTC.