maldives-statistics-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@maldives-statistics-mcpWhat are the latest census releases?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Maldives Statistics MCP
A read-only, standard-stdio Model Context Protocol server for public information from the Maldives Bureau of Statistics. The site is a WordPress installation; this server uses its public WordPress pages and REST endpoints, plus public PDF attachments, without authentication.
The server is written in TypeScript and runs on Node.js using the official @modelcontextprotocol/sdk. It is model- and harness-agnostic: the same built process can be registered with any MCP host that supports local stdio servers.
Features
Public reachability/status check for the Bureau of Statistics website.
Search across WordPress posts and pages.
Paginated page and post listings.
Readable page content with links to public PDFs.
Publication, press-release, statistics-section, jobs, and event discovery.
Bounded inspection of same-host attachments, with optional built-in PDF text extraction (first 20,000 characters).
Exact-host allowlisting for
statisticsmaldives.gov.mv.Structured, machine-readable errors and JSON-serializable tool results.
No credentials, cookies, authentication headers, or write operations.
Related MCP server: @nor-data/statfin-mcp
Tool reference
The server exposes exactly the following 18 tools. Parameter defaults are part of the public contract in SPEC.md.
Tool | Description | Key parameters |
| Check site reachability and return HTTP status, page title, and UTC check time. | None |
| Search the WordPress search endpoint across posts and pages. |
|
| List report and other WordPress pages, optionally filtered and paginated. |
|
| List news/release WordPress posts, optionally filtered and paginated. |
|
| Fetch one page by WordPress slug or an allowlisted full URL; return readable text and PDF links. |
|
| Parse the public publications index and return report-page links. | None |
| Parse the public press-release page and return release links and direct PDF file URLs when available. |
|
| Return the curated list of public statistics sections and their full URLs. | None |
| List Statistical Yearbook editions (2005–present) with URLs. | None |
| List a yearbook edition's tables (chapter + label + PDF/XLS links), optionally filtered by keyword. |
|
| List census release pages (e.g. Census 2022 statistical releases). |
|
| List Economic Survey report pages and PDFs. | None |
| List public downloads (forms and documents). |
|
| List dated update posts (latest statistical releases). |
|
| Parse the jobs page for main-content job links. |
|
| List events from the public WordPress |
|
| Inspect an allowlisted public file with bounded HEAD/GET behavior; optionally extract the first 20,000 characters of a PDF. |
|
| Download and parse an allowlisted .xlsx (e.g. yearbook table) into rows of cell values. |
|
Errors use the structured shape {"error": "<machine-readable reason>", "detail": "<human message>"}. The documented reasons include unreachable, http_error, no_results, invalid_url, blocked_url, parse_failed, and too_large.
Quickstart
Requirements: Node.js 20+ and npm.
From the repository root:
npm install
npm run build
npm start # runs node dist/server.jsdist/server.js speaks MCP over stdio. Keep stdout available for protocol traffic; diagnostics go to stderr. PDF text extraction in mbs_attachment uses a small built-in extractor (uncompressed or zlib-inflated text streams); PDFs without extractable text return "text": null rather than failing the tool.
The examples below use this placeholder:
<REPO_ROOT>— the absolute path to this checkout, such as/path/to/maldives-statistics-mcp.
Replace the placeholder before using a configuration. Do not put credentials in any MCP configuration for this server.
Registering with MCP hosts
All examples launch the same local stdio process: node <REPO_ROOT>/dist/server.js (use an absolute path to the node binary if it is not on the host's PATH). Client configuration schemas and command names can change between releases; consult the host's current documentation if your installed version differs.
Claude Desktop — claude_desktop_config.json
Add the server under mcpServers in Claude Desktop's configuration file:
{
"mcpServers": {
"maldives-statistics": {
"command": "node",
"args": ["<REPO_ROOT>/dist/server.js"]
}
}
}Restart or reload Claude Desktop after saving the file.
Claude Code
Register the command from a shell:
claude mcp add maldives-statistics -- node <REPO_ROOT>/dist/server.jsUse the host's MCP listing command to confirm that maldives-statistics is registered.
Codex CLI
A local stdio server can be added with the Codex CLI command form:
codex mcp add maldives-statistics -- node <REPO_ROOT>/dist/server.jsThe equivalent project/user configuration, where supported, is conceptually:
[mcp_servers.maldives-statistics]
command = "node"
args = ["<REPO_ROOT>/dist/server.js"]Cursor
In Cursor's MCP settings or .cursor/mcp.json, add:
{
"mcpServers": {
"maldives-statistics": {
"command": "node",
"args": ["<REPO_ROOT>/dist/server.js"]
}
}
}Gemini CLI
In the applicable Gemini CLI settings.json (commonly ~/.gemini/settings.json), add the server under mcpServers:
{
"mcpServers": {
"maldives-statistics": {
"command": "node",
"args": ["<REPO_ROOT>/dist/server.js"]
}
}
}Merge this object into an existing settings file rather than replacing unrelated settings.
Windsurf
In Windsurf's MCP configuration (commonly ~/.codeium/windsurf/mcp_config.json), use the standard mcpServers shape:
{
"mcpServers": {
"maldives-statistics": {
"command": "node",
"args": ["<REPO_ROOT>/dist/server.js"]
}
}
}Cline / Roo Code
In the relevant MCP settings JSON for Cline or Roo Code, add this entry to mcpServers:
{
"mcpServers": {
"maldives-statistics": {
"command": "node",
"args": ["<REPO_ROOT>/dist/server.js"],
"disabled": false
}
}
}The exact settings-file location is controlled by the extension and editor profile; the server entry itself is a local stdio command.
VS Code
Create or edit .vscode/mcp.json (or the user MCP configuration) with VS Code's servers schema:
{
"servers": {
"maldives-statistics": {
"type": "stdio",
"command": "node",
"args": ["<REPO_ROOT>/dist/server.js"]
}
}
}Hermes Agent
Hermes Agent is one option among many MCP hosts. Register the same stdio command with:
hermes mcp add maldives-statistics --command /usr/bin/node --args <REPO_ROOT>/dist/server.jsAfter registration, use the host's MCP test/list facility and start a new session if the host injects tools only at session start.
Generic stdio clients
For a client that accepts a command and argument array, use:
{
"name": "maldives-statistics",
"transport": "stdio",
"command": "node",
"args": ["<REPO_ROOT>/dist/server.js"]
}The equivalent shell command is:
node <REPO_ROOT>/dist/server.jsThe client must own the process's stdin/stdout and speak the MCP stdio protocol. Do not pipe ordinary logs into stdout.
Testing
Run the protocol tests from the repository root (build first):
npm run build
npm testThe default suite includes live checks against the public website. To skip live network checks while still exercising initialization, tool discovery, and the blocked-URL safety path:
MBS_OFFLINE=1 npm testA successful live run verifies MCP initialization, discovery of all 18 tools, status, search, publications, a page lookup, attachment handling, yearbook tables, XLSX parsing, census releases, economic survey, downloads, and updates. Network availability and the remote site's current content can affect live checks.
Limitations
Read-only: this server only reads public content. It does not authenticate, submit forms, upload files, create or modify records, or write to the website.
The
.Statdata portal is unavailable:https://data.statisticsmaldives.gov.mv/currently has a broken TLS certificate and is intentionally not used.Source format: data is obtained from public WordPress pages, WordPress REST responses, and PDF attachments on the Bureau's site; it is not a replacement for the Bureau's official source documents.
Jobs may be sparse: the jobs page may contain few or no extractable job links at a given time. In that case
mbs_jobsreturns an empty list and a note when available.Remote dependency: live results depend on the public site's reachability, HTTP behavior, page structure, and current content.
Bounded extraction: attachment downloads and extracted PDF text are intentionally size-limited. PDF text extraction is minimal (uncompressed/inflated text streams only); scanned or exotic PDFs return
"text": null.Exact host allowlist: only
statisticsmaldives.gov.mvis accepted for fetches, including attachment inspection. Off-host links are not followed.
License
This project is released under the MIT License. Copyright 2026 Maldives Statistics MCP contributors.
Available Tools
18 toolsmbs_attachmentA
Inspect a public file on statisticsmaldives.gov.mv (PDFs under /mbs/wp-content/uploads/). Optionally extract PDF text (first 20k chars).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | File URL on statisticsmaldives.gov.mv | |
| extract_text | No | Extract text if it is a PDF (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry full behavioral disclosure. It reveals the optional text extraction and the 20k character limit, but the core action 'inspect' is vague—unclear whether it returns file metadata, status, or raw content. It does not describe behavior for non-PDF files when extract_text is true, nor expected response formats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences present the main purpose and an optional behavior modification. Every word adds value, and the structure is front-loaded with the primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete for a simple 2-parameter tool with no output schema and no annotations. It fails to explain what 'inspect' returns when extract_text is false, lacks error scenarios, and does not specify response structure. The width and depth of behavior are not adequately covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides descriptions for both parameters (url and extract_text), which is 100% coverage. The description adds meaningful constraints: the URL must be under /mbs/wp-content/uploads/, and extraction is limited to first 20k chars—details not present in the schema. This enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific action ('Inspect a public file') with a clear resource (files on statisticsmaldives.gov.mv, particularly PDFs under /mbs/wp-content/uploads/). It distinguishes from sibling tools by focusing on file inspection with optional PDF text extraction, differentiating it from content-specific tools like mbs_xlsx_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to inspect public files, specifically PDFs in the designated uploads path. It implies a scope without explicitly naming alternatives or exclusion criteria, but the path and file type guidance give sufficient situational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_census_releasesA
List linked Census 2022 release pages and same-host files from the MBS census releases section.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max linked releases (default 50, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it lists linked pages and same-host files, implying a read-only operation. However, it does not elaborate on the meaning of 'linked', pagination behavior, or rate limits. With no annotations, the description carries full burden but only partially covers behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single succinct sentence that front-loads the verb and resource, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter and no output schema, the description adequately conveys what is returned (pages and files). It omits minor edge-case behaviors like how links are resolved or pagination details, but remains sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'limit' is fully described in the schema (default 50, max 100), and the description adds no additional parameter semantics. With 100% schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Census 2022 release pages and same-host files from the MBS census releases section, using a specific verb and resource. It distinguishes itself from sibling tools like mbs_press_releases or mbs_publications by focusing on census releases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative guidance is given. The usage is implied by the tool name and resource specificity, but there is no stated scenario for choosing this over other MBS listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_downloadsA
List public MBS downloads, preserving the source link and detected file kind.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max downloads (default 50, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses that the tool lists only 'public' downloads (suggesting no auth) and that output preserves the source link and detected file kind, giving useful behavioral context. However, it does not elaborate on potential edge cases or exact response formatting, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, resource, and key output traits without any filler. Every word contributes value, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is largely complete: it states what it lists and what output characteristics are preserved. Minor gaps include lack of explicit pagination behavior or a full return structure, but the 'limit' schema and phrasing cover most needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for the single parameter 'limit', including default and max values. The description adds no extra semantic meaning beyond what the schema already states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('public MBS downloads'), and adds unique output details ('preserving the source link and detected file kind'). This distinguishes it from siblings like mbs_search or mbs_attachment, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to list downloads) but provides no explicit context about when to prefer this tool over alternatives, nor any exclusions or prerequisites. It meets the minimum viability but lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_economic_surveyA
List Economic Survey report pages and linked files published by the MBS Economic Survey section.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states that the tool 'list' items without disclosing output format, pagination, authentication needs, or any side effects. The agent is left without expectations about the actual response or operational bounds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the verb 'List' and clearly states the resource. There is no redundant wording, and it is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no parameters and no output schema, the description adequately covers the purpose and scope by naming the section and content type. It lacks details on response format or limitations, but these are not critical for a basic listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100%, so there is nothing additional to explain. The description adds context about the content being listed, which is sufficient for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and clearly identifies the resource as 'Economic Survey report pages and linked files' from the MBS Economic Survey section. This distinguishes it from sibling tools like mbs_list_pages, mbs_publications, or mbs_census_releases, which cover different content areas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving Economic Survey-specific content, but it does not explicitly state when to use this tool versus alternatives or exclude other listing tools. The context signals a specialized listing, yet no direct guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_eventsA
List events (WordPress event post type, e.g. datathon launches).
| Name | Required | Description | Default |
|---|---|---|---|
| per_page | No | Max events (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only restates the basic list action and does not disclose ordering, filtering, status defaults, pagination behavior beyond the schema, or return format. Significant behavioral details are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear, front-loaded sentence with no wasted words. It provides the essential purpose and a helpful example in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is adequate but not fully complete. It covers purpose and gives an example, but lacks context about expected return structure, ordering, or any filtering behavior, leaving some ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter per_page, including its meaning ('Max events (default 10)'), so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List events') and the resource ('WordPress event post type'), with a concrete example ('datathon launches'). This distinguishes it from sibling tools like mbs_list_posts and mbs_publications by specifying the event post type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (for events such as datathon launches) but does not explicitly state when not to use it or mention alternatives. Sibling tool names provide context but no exclusion is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_get_pageA
Fetch one page by slug or full URL: readable text plus PDF attachment links.
| Name | Required | Description | Default |
|---|---|---|---|
| slug_or_url | Yes | Page slug (e.g. labour-force-survey-2024-25) or full URL on statisticsmaldives.gov.mv |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that the output includes readable text and PDF attachment links, which is useful. However, it does not mention error handling, prerequisites, or any other behavioral traits beyond the basic fetch operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and output, with no redundant words. Every clause adds relevant information, making it appropriately concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with no output schema, the description covers the key aspects: input format and output content. It does not explain edge cases or metadata beyond the text and PDF links, but for the tool's simplicity this is largely sufficient, though not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the tool description simply restates the parameter name and format ('slug or full URL') without adding new meaning. The baseline for high coverage is 3, and no extra semantic detail is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (fetch), the resource (one page), and the output (readable text plus PDF attachment links). It distinguishes from siblings by specifying 'one page by slug or full URL', which is a distinct use case compared to listing or searching tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a specific slug or URL, but does not explicitly contrast with alternatives like mbs_search or mbs_list_pages. No exclusions or when-not-to-use guidance are provided, so guidelines are only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_jobsA
List job openings from the MBS jobs page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only says 'List job openings' which implies a read operation, but provides no additional detail on pagination, return format, or any limitations. The description adds little beyond what the tool name suggests.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately conveys the tool's purpose. It contains no redundant information and is well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one parameter and no output schema, the description is minimally viable. It communicates the source and action but omits details about the return value (e.g., fields, format), which could leave an agent uncertain about how to handle the response. It is complete enough for basic use but lacks deeper context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'limit' parameter with a clear description ('Max items (default 20)'). The tool description does not mention the parameter, but since schema coverage is 100%, a baseline score of 3 is appropriate; no additional param information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists job openings from the MBS jobs page, specifying both the action and the resource. This distinguishes it from sibling tools like mbs_events or mbs_publications, which target different content types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on the source (MBS jobs page) and the action (listing jobs), making it obvious when to use this tool. However, it does not explicitly mention alternatives or situations where it should not be used, so it lacks a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_list_pagesA
List WordPress pages (statistical report pages) with optional search.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| search | No | Optional keyword | |
| per_page | No | Results per page (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'List' implies a read-only operation, and the optional search behavior is noted, but the description does not explicitly state that it is non-destructive, or disclose any other behavioral traits such as return format or pagination details beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core action and resource. Every word contributes ('WordPress pages', 'statistical report pages', 'optional search'), with zero redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple list tool with no output schema or annotations. The description, combined with the parameter schema, provides enough for an agent to select and invoke the tool. It could be slightly more complete by describing the response shape, but for a straightforward list operation, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all three parameters (page, search, per_page) already described. The description's mention of 'optional search' adds no extra meaning beyond the schema, so it does not compensate or add value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('List') and resource ('WordPress pages'), and distinguishes from siblings like mbs_list_posts by clarifying these are 'statistical report pages.' This makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to list pages with optional search) but does not explicitly mention when to use this tool vs alternatives like mbs_get_page or mbs_list_posts. No exclusions or explicit alternatives are provided, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_list_postsB
List WordPress posts (news/release items) with optional search.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| search | No | Optional keyword | |
| per_page | No | Results per page (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'optional search' but does not explain return format, pagination behavior, default sorting, or whether only published posts are returned. The read-only nature is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the key action and resource front-loaded. There is no redundant or extraneous information, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description omits return value information (no output schema exists) and provides no differentiation from similar sibling tools. Given the lack of annotations and output schema, the description is not sufficient for an agent to fully understand what to expect from invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (page, search, per_page). The description adds only the phrase 'optional search', which is already captured by the search parameter description. No additional semantic value is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List') on a specific resource ('WordPress posts'), with a parenthetical clarifying they are news/release items. This distinguishes it from sibling tools like mbs_list_pages (pages vs posts) and conveys a well-defined purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as mbs_search, mbs_list_pages, or mbs_publications. The description simply states what it does, without offering context for selection or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_press_releasesB
List press releases (mostly direct PDF links under /mbs/wp-content/uploads/).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It does disclose that results are 'mostly direct PDF links under /mbs/wp-content/uploads/', which is a useful detail, but it omits other behaviors like whether ordering or pagination is applied, what fields are returned, or potential errors. This is only a minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb and resource, and the parenthetical adds relevant detail without redundancy. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional parameter, no output schema), and the description gives the core purpose and the nature of the links, which provides a basic sense of what the response contains. However, it lacks guidance on selecting this tool among siblings and does not describe return format or additional behaviors, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description covers 100% of the single parameter 'limit' with 'Max items (default 20)'. The tool description does not mention or elaborate on this parameter, so it adds no value beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'List press releases' as a specific verb+resource, clearly stating the tool's action and object. The parenthetical 'mostly direct PDF links under /mbs/wp-content/uploads/' adds distinguishing detail that separates it from sibling tools like mbs_publications or mbs_census_releases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as mbs_census_releases or mbs_publications. There is no mention of context, exclusions, or alternative tools, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_publicationsB
List publications (statistical report pages) from the publications index.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic listing action. It does not disclose behavioral details such as pagination, sorting, or whether the list includes all publication types, which is important given the sibling tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's purpose without unnecessary detail or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters, the description is adequate, but it lacks context on how 'publications' relates to the sibling tools and does not clarify the scope of the list. This could lead to ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema already covers all inputs. The description adds no parameter information, but none is needed, and the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List' and the resource 'publications' from the 'publications index', making the tool's function obvious. However, it does not explicitly differentiate from sibling tools like mbs_press_releases or mbs_census_releases, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus its many siblings. The description does not mention alternatives, exclusions, or typical use cases, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_searchA
Full-text search across posts and pages on statisticsmaldives.gov.mv (WordPress search).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| per_page | No | Max results (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It mentions 'WordPress search' which implies standard search behavior, but doesn't disclose details like safety, rate limits, or exact matching semantics. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the main verb and resource, no fluff. Extremely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with two parameters and no output schema, the description covers purpose and scope. The return value is implied by 'search' and the schema documents parameters, making it sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters described. The description adds no additional semantics beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Full-text search across posts and pages on statisticsmaldives.gov.mv', using a specific verb and resource. It distinguishes from sibling list tools by explicitly indicating search functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool (when performing full-text search) and the scope (posts and pages). It doesn't explicitly exclude alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_sectionsB
List statistics sections (census, surveys, downloads, release calendar).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden of behavioral disclosure. It only states the action of listing and gives examples; it does not disclose return format, whether the data is live or static, pagination, or any side effects. For an unannotated tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no redundant words; the verb is front-loaded and the examples are efficiently packed in parentheses. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema and no annotations, the description provides a basic understanding of the operation. It could specify whether the returned list contains names, slugs, or full metadata, but given the tool's simplicity, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so the baseline is 4. The description adds meaningful context by enumerating example section types (census, surveys, downloads, release calendar), clarifying what 'sections' refers to and adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource as 'statistics sections' with clarifying examples (census, surveys, downloads, release calendar). This helps distinguish the tool from siblings like mbs_census_releases or mbs_downloads, though it does not explicitly name alternatives, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus siblings such as mbs_census_releases or mbs_downloads. The intended context of retrieving an overview of sections is implied, but no explicit exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_statusA
Check reachability of the Maldives Bureau of Statistics site and return metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description is minimal. It does not explain how the reachability check is performed, what 'metadata' refers to, or any failure/error behavior. This leaves significant ambiguity for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core purpose. No extraneous words are used.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic action and a broad output ('metadata'), but it lacks specifics about the return format or potential failure modes. Given the simplicity of the tool (no params, no output schema), a somewhat more detailed description would be expected to fully inform the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so there is nothing for the description to clarify regarding inputs. The description correctly avoids mentioning parameters, and the baseline of 4 is appropriate for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: checking reachability of the MBS site and returning metadata. This distinguishes it from sibling tools that search, list, or retrieve content. The verb 'check' is specific and the resource is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit usage guidance or alternatives are provided. The purpose implies it should be used when determining if the site is accessible, but there is no comparative context with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_updatesB
List dated statistical update posts from the MBS Updates archive.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Archive page number (default 1) | |
| limit | No | Max updates (default 20, max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action ('List') and does not explicitly disclose that this is a read-only operation, nor does it mention pagination behavior, default ordering, or any side effects. This is insufficient when annotations are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundant words or filler. It is front-loaded with the verb 'List' and immediately states the resource and source, making it extremely concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with two optional parameters and no output schema. The description, combined with the schema, communicates the core purpose and parameters, but it lacks details about return format or behavior when no updates are found. This makes it minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (page and limit) have descriptions in the input schema, so schema coverage is 100%. The description adds no additional parameter information, so the score stays at the baseline of 3 as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource as 'dated statistical update posts' from the 'MBS Updates archive'. This distinguishes it from siblings like mbs_list_posts or mbs_status, which target different post types or statuses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or reference sibling tools like mbs_search or mbs_status. The agent must infer usage solely from the tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_xlsx_tableA
Download and parse an .xlsx file from statisticsmaldives.gov.mv (e.g. a yearbook table) into rows of cell values. Returns the first worksheet as string rows.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | XLSX file URL on statisticsmaldives.gov.mv | |
| max_rows | No | Row cap (default 200, max 1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that only the first worksheet is returned, values are converted to strings, and the source is restricted to a specific domain. It doesn't mention error handling or authentication, but the main operational behavior is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: two sentences, front-loaded with the action and object, and no redundant information. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description is sufficiently complete: it explains the return type, scopes the source domain, and notes worksheet selection. The max_rows default is already covered in the schema, so the description doesn't need to repeat it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for both parameters (url and max_rows), so the baseline is 3. The description adds domain context and an example but doesn't go beyond the schema in explaining parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Download and parse') and identifies the resource ('an .xlsx file from statisticsmaldives.gov.mv') and the output ('rows of cell values'). It clearly distinguishes this from sibling tools like mbs_yearbook_tables, which likely list tables rather than parse them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use for .xlsx files on statisticsmaldives.gov.mv, such as yearbook tables. However, it doesn't explicitly name alternatives or state when to prefer a different tool, so it stops short of full when/where-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_yearbook_editionsA
List Statistical Yearbook editions (2005–present) with their URLs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the burden of disclosing behavioral traits. The verb 'List' implies a read-only operation, and the date range adds context, but the description does not mention output format, pagination, or any possible limitations. It provides basic transparency but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the verb and resource. It includes the scope and output in a compact format without any filler. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description provides the essential information: what is listed, the date range, and the content of the results (URLs). It could potentially mention ordering or format, but for a minimal listing tool, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so the baseline of 4 applies. The description does not need to explain parameters, and it adds value by specifying the resource ('Statistical Yearbook editions') and the output fields ('with their URLs'), which is sufficiently precise for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the specific resource 'Statistical Yearbook editions', the date range '2005–present', and the included output 'with their URLs'. This makes the tool's purpose unambiguous and distinguishes it from sibling tools like mbs_yearbook_tables, which likely handles tables within editions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear scope and resource, making the intended use fairly obvious. However, it does not explicitly mention when to use this tool versus alternatives such as mbs_yearbook_tables or mbs_publications, nor does it state any exclusions or prerequisites. The usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mbs_yearbook_tablesA
List Statistical Yearbook tables for a year edition (chapter + table label + PDF/XLS links). Optional keyword filter (e.g. electricity, tourism, population).
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Yearbook edition year, e.g. 2025 | |
| query | No | Optional keyword filter on chapter/table titles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden. It correctly implies a read-only list operation and mentions the optional keyword filter. However, it does not disclose potential behaviors like pagination limits, sorting, or authentication requirements, which are common for list tools. Still, the description does not mislead and covers the core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the main action ('List Statistical Yearbook tables') and includes all essential information. It is concise and free of redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains the return values (chapter + table label + PDF/XLS links). It also specifies the required year and optional query filter without excess detail. For a simple list tool, this is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both 'year' and 'query' have descriptions). The description adds value by providing concrete keyword examples ('electricity, tourism, population'), which go beyond the schema's generic wording. This helps the agent understand the expected format and scope of the query parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a specific resource ('Statistical Yearbook tables'), and a specific scope ('for a year edition'). It also enumerates the output contents (chapter, table label, PDF/XLS links), making it distinct from sibling tools like mbs_yearbook_editions, which likely lists editions rather than tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool to list tables for a given year edition. It does not explicitly name alternatives or exclusions, but the purpose is unambiguous, so no further guidance is needed. The optional keyword filter further clarifies how to narrow results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
v0.1.0- First observed
mbs_attachment - First observed
mbs_census_releases - First observed
mbs_downloads - First observed
mbs_economic_survey - First observed
mbs_events - First observed
mbs_get_page - First observed
mbs_jobs - First observed
mbs_list_pages - First observed
mbs_list_posts - First observed
mbs_press_releases - First observed
mbs_publications - First observed
mbs_search - First observed
mbs_sections - First observed
mbs_status - First observed
mbs_updates - First observed
mbs_xlsx_table - First observed
mbs_yearbook_editions - First observed
mbs_yearbook_tables
TDQS
Scored across 18 tools
Each tool targets a clearly distinct content type or action: status checks, search, page/post retrieval, and specialized lists for publications, press releases, yearbook tables, jobs, events, etc. Even overlapping list tools are differentiated by the specific section they address, such as census releases versus economic survey.
All tools use the 'mbs_' prefix and snake_case, which is consistent. However, there is a mix of verb-led names (mbs_status, mbs_search, mbs_list_*, mbs_get_page) and noun-only names (mbs_publications, mbs_jobs, mbs_events, etc.), which is a minor inconsistency but not chaotic.
With 18 tools, the server is on the heavier side but still well-scoped for a statistics portal that covers multiple content categories. The count is justified by the variety of distinct resources exposed, and there is no obvious bloat or redundancy.
The tool surface comprehensively covers the domain of browsing and retrieving content from the Maldives Bureau of Statistics site: search, page/post retrieval, specialized listings, attachment inspection, and XLSX parsing. It covers both metadata and data extraction, leaving no major dead ends for typical use cases.
Maintenance
Related MCP Connectors
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Hosted MCP server for finding authoritative primary data sources and official portals.
MCP server for Statistics Sweden (SCB) - 1200+ tables with population, economy, environment data
Statistics Canada (StatCan) WDS MCP — Canadian official statistics (no auth)
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server for Japan's e-Stat (Government Statistics Portal). Search statistical datasets, retrieve data tables, and access metadata from official Japanese government statistics.28 PyPI10Apache 2.0
- AlicenseAqualityDmaintenanceMCP server for official statistics from Statistics Finland (Tilastokeskus) — the StatFin database, exposed through the PxWeb API. Search 3000+ tables, inspect their dimensions, and pull data as JSON-stat2.424 npmMIT
- AlicenseNot gradedqualityCmaintenanceMCP server for accessing North Macedonia's official statistics via PxWeb, enabling subject navigation, table metadata retrieval, and data queries.3 npmMIT
- FlicenseBqualityBmaintenanceA read-only MCP server for the official Maldives Government Gazette, enabling search and retrieval of gazette records and Iulaan announcements, including attachments.10-