Skip to main content
Glama
Rayyan011

maldives-statistics-mcp

by Rayyan011

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

mbs_status

Check site reachability and return HTTP status, page title, and UTC check time.

None

mbs_search

Search the WordPress search endpoint across posts and pages.

query: string, per_page: number = 10

mbs_list_pages

List report and other WordPress pages, optionally filtered and paginated.

search: string = "", per_page: number = 20, page: number = 1

mbs_list_posts

List news/release WordPress posts, optionally filtered and paginated.

search: string = "", per_page: number = 20, page: number = 1

mbs_get_page

Fetch one page by WordPress slug or an allowlisted full URL; return readable text and PDF links.

slug_or_url: string

mbs_publications

Parse the public publications index and return report-page links.

None

mbs_press_releases

Parse the public press-release page and return release links and direct PDF file URLs when available.

limit: number = 20

mbs_sections

Return the curated list of public statistics sections and their full URLs.

None

mbs_yearbook_editions

List Statistical Yearbook editions (2005–present) with URLs.

None

mbs_yearbook_tables

List a yearbook edition's tables (chapter + label + PDF/XLS links), optionally filtered by keyword.

year: number, query: string = ""

mbs_census_releases

List census release pages (e.g. Census 2022 statistical releases).

limit: number = 20

mbs_economic_survey

List Economic Survey report pages and PDFs.

None

mbs_downloads

List public downloads (forms and documents).

limit: number = 20

mbs_updates

List dated update posts (latest statistical releases).

limit: number = 10, page: number = 1

mbs_jobs

Parse the jobs page for main-content job links.

limit: number = 20

mbs_events

List events from the public WordPress event endpoint, including available ACF fields.

per_page: number = 10

mbs_attachment

Inspect an allowlisted public file with bounded HEAD/GET behavior; optionally extract the first 20,000 characters of a PDF.

url: string, extract_text: boolean = false

mbs_xlsx_table

Download and parse an allowlisted .xlsx (e.g. yearbook table) into rows of cell values.

url: string, max_rows: number = 200

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.js

dist/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.js

Use 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.js

The 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.js

After 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.js

The 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 test

The 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 test

A 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 .Stat data 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_jobs returns 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.mv is 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 tools
mbs_attachmentA

Inspect a public file on statisticsmaldives.gov.mv (PDFs under /mbs/wp-content/uploads/). Optionally extract PDF text (first 20k chars).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFile URL on statisticsmaldives.gov.mv
extract_textNoExtract text if it is a PDF (default false)

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax linked releases (default 50, max 100)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax downloads (default 50, max 100)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
per_pageNoMax events (default 10)

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slug_or_urlYesPage slug (e.g. labour-force-survey-2024-25) or full URL on statisticsmaldives.gov.mv

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items (default 20)

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
searchNoOptional keyword
per_pageNoResults per page (default 20)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
searchNoOptional keyword
per_pageNoResults per page (default 20)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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/).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items (default 20)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_sectionsB

List statistics sections (census, surveys, downloads, release calendar).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoArchive page number (default 1)
limitNoMax updates (default 20, max 50)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesXLSX file URL on statisticsmaldives.gov.mv
max_rowsNoRow cap (default 200, max 1000)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesYearbook edition year, e.g. 2025
queryNoOptional keyword filter on chapter/table titles

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 18 tool updatesv0.1.0
    • First observedmbs_attachment
    • First observedmbs_census_releases
    • First observedmbs_downloads
    • First observedmbs_economic_survey
    • First observedmbs_events
    • First observedmbs_get_page
    • First observedmbs_jobs
    • First observedmbs_list_pages
    • First observedmbs_list_posts
    • First observedmbs_press_releases
    • First observedmbs_publications
    • First observedmbs_search
    • First observedmbs_sections
    • First observedmbs_status
    • First observedmbs_updates
    • First observedmbs_xlsx_table
    • First observedmbs_yearbook_editions
    • First observedmbs_yearbook_tables

TDQS

A3.8/5.0

Scored across 18 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for Japan's e-Stat (Government Statistics Portal). Search statistical datasets, retrieve data tables, and access metadata from official Japanese government statistics.
    28 PyPI
    10
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    MCP 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.
    4
    24 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for accessing North Macedonia's official statistics via PxWeb, enabling subject navigation, table metadata retrieval, and data queries.
    3 npm
    MIT
  • F
    license
    B
    quality
    B
    maintenance
    A read-only MCP server for the official Maldives Government Gazette, enabling search and retrieval of gazette records and Iulaan announcements, including attachments.
    10
    -