Skip to main content
Glama
hkopenai

Hong Kong Finance Data MCP Server

by hkopenai

Hong Kong Finance Data MCP Server

GitHub Repository License: MIT

This is an MCP server that provides access to finance related data in Hong Kong through a FastMCP interface.

Features

  1. Monthly statistics on the number of new and active business registrations in Hong Kong

  2. Quarterly statistics on residential mortgage loans in negative equity in Hong Kong

  3. Credit card lending survey results in Hong Kong

  4. Coin cart schedule in Hong Kong

  5. Get list of hotlines for reporting loss of credit card from Hong Kong banks

  6. Get information of Tender Invitation and Notice of Award of Contracts from Hong Kong Monetary Authority

  7. Daily figures of Hong Kong Interbank Interest Rates (HIBOR)

  8. Information on Automated Teller Machines (ATMs) of retail banks in Hong Kong

  9. Monthly statistics on stamp duty collected from transfer of Hong Kong stock (both listed and unlisted)

  10. Information on bank branch locations of retail banks in Hong Kong

  11. Information on fraudulent bank websites and phishing scams reported to HKMA

Related MCP server: Hong Kong Food Data MCP Server

Examples

  • What is the number of new business registered in Hong Kong 2024?

  • What is the negative loan situation in Hong Kong Q1 2025 compare with Q1 2024?

  • Write a commentary about the latest residential mortgage loans in negative equity in Hong Kong

  • How is current Hong Kong economy by referencing credit lending data and residential mortgage loans in negative equity?

  • What are the recent trends in HIBOR rates over the past month?

  • Where can I find ATMs in Yuen Long district that support HKD and RMB currencies?

  • Can you list the recent fraudulent bank websites reported to HKMA?

Assume chart tool is available:

  • Plot a line chart showing trend and number of new business registered each month from Jan to Dec in Hong Kong 2024.

Data Source

Setup

  1. Clone this repository

  2. Install Python dependencies:

    pip install -r requirements.txt
  3. Run the server:

    python server.py

Running Options

  • Default stdio mode: python server.py

  • SSE mode (port 8000): python server.py --sse

Cline Integration

To connect this MCP server to Cline using stdio:

  1. Add this configuration to your Cline MCP settings (cline_mcp_settings.json):

{
  "hk-finance": {
    "disabled": false,
    "timeout": 3,
    "type": "stdio",
    "command": "uvx",
    "args": [
      "hkopenai.hk-finance-mcp-server"
    ]
  }
}

Testing

Tests are available in the tests/ directory. Run with:

pytest

Available Tools

13 tools
get_atm_locationsC

Get information on Automated Teller Machines (ATMs) of retail banks in Hong Kong

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for data output (en, tc, sc)en
offsetNoStarting record offset
districtNoDistrict name to filter results
pagesizeNoNumber of records per page
bank_nameNoBank name to filter results

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 the full behavioral burden, yet it discloses nothing beyond the subject matter: no note on pagination behavior (offset/pagesize exist but semantics are left to the schema), no rate limits, no data freshness or return shape. For a lookup tool with five parameters and zero annotation coverage, this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with no filler, and the resource is front-loaded after the verb. It is not padded, though it is arguably too lean to earn a 5.

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?

An output schema exists, so return values need not be explained, and the schema covers all parameters. However, with no annotations and no usage guidance, the definition leaves the agent to infer when to pick this tool over the branch-location sibling.

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 lang, offset, district, pagesize, and bank_name. The description adds no filtering syntax, district naming conventions, or pagination guidance, so the baseline 3 applies.

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?

States a specific verb ('Get information on') and resource (ATMs of retail banks in Hong Kong), with geographic scope. It is distinguishable from the closest sibling, get_bank_branch_locations, by naming ATMs rather than branches, though it does not explicitly contrast the two.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as get_bank_branch_locations for branch data. The agent must infer the use case from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bank_branch_locationsB

Get information on bank branch locations of retail banks in Hong Kong

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for data output (en, tc, sc)en
offsetNoStarting record offset
districtNoDistrict name to filter results
pagesizeNoNumber of records per page
bank_nameNoBank name to filter results

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/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, but 'Get information' does at least imply a non-mutating lookup. It says nothing about pagination behavior (the offset/pagesize defaults imply paged results) or how current the branch data is, leaving meaningful gaps.

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 front-loaded sentence with no filler. The scope ('retail banks in Hong Kong') is stated up front and nothing is repeated from the schema.

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?

All five parameters are schema-documented and an output schema exists, so return-value explanation is unnecessary. The definition is adequate for a simple read-only lookup, with only minor omissions around pagination and data freshness.

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 lang, offset, district, pagesize, and bank_name are already documented in the schema. The description adds no additional meaning such as filter-matching rules or default page behavior, so the baseline 3 applies.

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 states a specific verb ('Get') and resource ('bank branch locations') and narrows scope to retail banks in Hong Kong. 'Branch' implicitly separates it from the sibling get_atm_locations, but no sibling is named explicitly, so it stops short of a 5.

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 get_atm_locations or get_licensed_banks_historical_data, nor any mention of prerequisites or when filtering by bank_name/district is appropriate. Usage is only implied by the noun phrase 'bank branch locations'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_business_statsB

Get monthly statistics on the number of new business registrations in Hong Kong

ParametersJSON Schema
NameRequiredDescriptionDefault
end_yearNoEnd Year
end_monthNoEnd Month
start_yearNoStart Year
start_monthNoStart Month

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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. The phrasing implies a safe read-only operation, but it does not disclose what happens when all four date parameters are omitted (defaults are null, presumably meaning full history), whether the range is inclusive, or any rate/volume limits on the returned monthly series.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is appropriately sized for the amount of information conveyed, though that economy comes at the cost of the omissions noted elsewhere.

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?

An output schema exists, so return values need not be explained. However, with four date-range parameters and no annotations, the description leaves the default-range behavior and the meaning of the start/end pairing unspecified, which is a real gap for an agent constructing a call.

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 the four parameters, and the baseline of 3 applies. The description adds no meaning beyond the schema — it does not clarify whether start/end bounds are inclusive, what units the month integer uses, or what the default null range returns.

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 gives a specific verb ('Get'), a precise resource ('monthly statistics on the number of new business registrations'), and a geographic scope (Hong Kong), so the agent knows exactly what data comes back. It does not, however, differentiate itself from siblings like get_economy_snapshot or get_neg_equity_stats, which follow the same 'get_*_stats' pattern.

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 statement of when to use this tool versus the many sibling statistics tools, nor any mention of prerequisites or typical scenarios. The agent must infer usage purely from the name and the one-sentence purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_coin_cartB

Get coin collection cart schedule in Hong Kong. The cart can charge your electronic wallet and you no long have to keep coins.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/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 behavioral burden. It conveys useful domain context (the cart charges an electronic wallet and replaces coins) and the read-only nature is implied by 'Get ... schedule', but it does not state return behavior, freshness, or any operational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core purpose front-loaded. The second sentence leans promotional ('you no long have to keep coins', containing a typo) but still adds a small amount of domain framing at negligible cost.

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?

An output schema exists, so the description is not obligated to explain return values, and with zero parameters the input side is trivially complete. For a simple read-only lookup tool the description is adequate, with only the missing usage framing as a real gap.

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 takes zero parameters, which is the baseline-4 case. Schema coverage is 100% for the (empty) parameter set, so there is nothing further the description needs to disclose about inputs.

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?

States a specific verb and resource (get coin collection cart schedule) scoped to Hong Kong, which is clearer than most siblings that are pure stat retrievals. It does not explicitly differentiate itself from any sibling, but none of the listed siblings covers coin carts, so confusion risk is low.

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 alternatives, no prerequisites, and no conditions or exclusions. The second sentence describes what the cart does rather than when an agent should call the tool, so usage must be inferred entirely from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_credit_card_hotlinesA

Get list of hotlines for reporting loss of credit card from Hong Kong banks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. 'Get list' implies a safe read and the resource is a static directory, but the description says nothing about return shape, freshness, or whether results are region-restricted beyond Hong Kong. It does at least convey the data is a lookup, not an action.

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 front-loaded sentence with no filler; every clause earns its place by naming the resource and its scope.

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 parameterless, read-only directory lookup with an output schema present, the description is essentially sufficient. The only minor gap is no hint at completeness of coverage (all banks? curated list?), which the output schema may address.

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 takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.

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?

States a specific verb (get) and resource (hotlines) with a clear scope constraint (credit card loss reporting, Hong Kong banks). It is readily distinguishable from the sibling stats/location tools, though it does not explicitly contrast itself with any sibling.

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 implies the domain of use (reporting card loss) but gives no explicit when-to-use guidance, prerequisites, or alternatives. With twelve sibling tools an agent gets no routing help beyond the name and phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_credit_card_statsB

Get credit card lending survey results in Hong Kong

ParametersJSON Schema
NameRequiredDescriptionDefault
end_yearNoEnd Year
end_monthNoEnd Month
start_yearNoStart Year
start_monthNoStart Month

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 the full behavioral burden. 'Get' implies a read-only retrieval, but the description does not disclose data source, update cadence, authentication needs, rate limits, or any behavior beyond the basic purpose.

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 with no filler. It immediately communicates the resource and geographic scope without unnecessary detail.

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?

An output schema exists and all four parameters are documented in the schema, reducing the description's burden. However, the description gives no usage context, no survey scope or data provenance, and no behavioral details, making it only minimally complete for a statistics retrieval tool.

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%, but the parameter descriptions are tautological ('End Year', 'Start Month', etc.). The main description adds no syntax, default behavior, or date-range semantics beyond what the schema already states, so the baseline score of 3 applies.

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 states a specific verb and resource: 'Get credit card lending survey results in Hong Kong.' It is clear enough to separate from siblings like get_credit_card_hotlines or get_business_stats, though it does not explicitly name alternatives.

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 when-to-use guidance, no conditions for selecting this tool over sibling statistics tools, and no exclusions. Usage is only implied by the tool name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_economy_snapshotA

Get a one-shot snapshot of Hong Kong's macro-finance state: the latest observation from each of the five main HKMA/IRD time series (HIBOR daily, residential mortgage negative equity quarterly, credit card lending quarterly, stamp duty monthly, business registration monthly) plus a count of currently-listed fraudulent bank websites. Internally fans out to all endpoints concurrently; per-section failures are reported as {"error": "..."} rather than failing the whole call. Use this for an at-a-glance current-state view. For historical ranges or time-series analysis, call the underlying per-series tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoReserved for future use. HKMA/IRD open-data endpoints are bilingual by source; current sections do not filter on lang. Kept for API symmetry with other aggregator tools.en

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden, and it does disclose the two things that matter most: concurrent fan-out to all endpoints and partial-failure semantics (per-section failures surface as {"error": "..."} instead of aborting the whole call). It also warns that lang is a no-op today, which prevents a wrong assumption. It stops short of stating auth requirements, rate limits, or freshness/latency of the underlying sources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and resource, then behavior, then routing guidance, with no filler sentences. The parenthetical enumeration of all five series is dense and slightly list-heavy, but each clause carries selection-relevant information.

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?

An output schema exists, so return values need not be described, and the description covers the composite nature and partial-failure behavior an agent must anticipate. It omits operational details such as authentication and rate limits, which is a minor gap for a read-only aggregator.

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 sole parameter's description already explains that lang is reserved for future use and filters nothing. The tool description adds no further parameter meaning, 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?

States a specific verb and resource ('Get a one-shot snapshot of Hong Kong's macro-finance state') and then enumerates exactly what is included: the latest observation from each of five named HKMA/IRD series plus the fraudulent-bank-website count. An agent can distinguish this aggregator from the per-series siblings (get_hibor_daily_stats, get_neg_equity_stats, get_credit_card_stats, get_stamp_duty_statistics, get_business_stats) without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the selecting condition ('Use this for an at-a-glance current-state view') and the exclusion with the alternative ('For historical ranges or time-series analysis, call the underlying per-series tools'). Because the five underlying series are named earlier, the agent can map 'per-series tools' to concrete siblings with no inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fraudulent_bank_scamsB

Get information on fraudulent bank websites and phishing scams reported to HKMA

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage (en/tc/sc)en

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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. "Get information" and "reported to HKMA" do imply a read-only, externally-sourced dataset with some provenance, but there is no disclosure of data freshness/update cadence, authentication needs, or result volume — meaningful gaps for an advisory/alert feed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with the resource front-loaded and zero filler. It is appropriately sized for a simple read tool, though it could spend one more clause on routing or scope without becoming bloated.

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?

An output schema exists, so return values need not be explained, and the tool has only one optional parameter. For a simple read-only lookup the description is sufficient, with only usage context and data currency left implicit.

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?

There is a single optional lang parameter with 100% schema description coverage and an enum, so the schema already documents it fully. The description adds nothing about language behavior, which is acceptable given the coverage baseline of 3.

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 names a specific resource (fraudulent bank websites and phishing scams reported to HKMA) and a clear retrieval verb. It is easily distinguishable from siblings like get_business_stats or get_atm_locations, though it does not explicitly call out that distinction.

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, what triggers it, or what alternatives exist. The agent must infer usage purely from the topic name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hibor_daily_statsB

Get daily figures of Hong Kong Interbank Interest Rates (HIBOR) from HKMA

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date (YYYY-MM-DD)
start_dateNoStart date (YYYY-MM-DD)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 the full disclosure burden. It only implies a read-only fetch from HKMA and says nothing about default date behavior (both params are optional with null defaults), rate limits, data freshness, or pagination.

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 front-loaded sentence with zero filler that conveys verb, resource, and source. Nothing redundant or wasted.

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?

An output schema exists, so return values need not be described, and the schema documents both parameters. However, the description never explains the behavior when optional dates are omitted, and with no annotations the tool's operational profile is thin.

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 defines start_date and end_date with their YYYY-MM-DD format. The description adds no parameter meaning beyond that, so the baseline 3 applies.

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?

States a specific verb (Get) and resource (daily HIBOR figures) and expands the acronym while naming the data source (HKMA). This is clear enough for an agent to identify the tool, though it offers no differentiation from the sibling statistics tools.

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 gives no guidance on when to use this tool versus the many sibling stats tools, nor any prerequisites or context such as whether it is a live or historical feed. Usage is only inferable from the name and parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hkma_tender_invitationsC

Get information of Tender Invitation and Notice of Award of Contracts from Hong Kong Monetary Authority

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage (en/tc/sc)en
offsetNoStarting record offset
segmentNoType of records (tender/notice)tender
to_dateNoFilter records to date (YYYY-MM-DD)
pagesizeNoNumber of records per page
from_dateNoFilter records from date (YYYY-MM-DD)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 the full behavioral burden. It implies a read-only retrieval but says nothing about pagination behavior despite offset/pagesize parameters, nothing about result ordering, and nothing about rate limits or data freshness. For a no-annotation tool this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted preamble. It is slightly verbose in restating the full resource name, but structurally efficient 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?

An output schema exists, so return values need not be explained, and the schema covers parameters fully. However, with no annotations the description should at least signal that this is a safe read operation and mention pagination or the tender/notice segment distinction; those gaps keep it at minimum viable.

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 six parameters including the enums and date formats. The description adds no parameter-level meaning beyond that, so the baseline 3 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?

States a specific verb ('Get') and a precise resource ('Tender Invitation and Notice of Award of Contracts from Hong Kong Monetary Authority'). The purpose is unambiguous, though it does nothing to distinguish itself from siblings (which are mostly unrelated statistical tools, so differentiation matters less).

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, no mention of the 'segment' parameter as a routing mechanism between tender and notice data, and no exclusions or alternatives. The agent must infer usage entirely from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_licensed_banks_historical_dataA

Get historical data on licensed banks, bank branches, and bank offices in Hong Kong from 1954-2002

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for data output (en, tc, sc)en
end_yearNoEnd year for filtering data (1954-2002)
data_typeNoType of data to retrieveall
start_yearNoStart year for filtering data (1954-2002)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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. 'Get' implies a read-only retrieval and the covered date range is disclosed, but nothing is said about permissions, rate limits, or dataset granularity. The presence of an output schema relieves it of describing the return shape, which keeps this at a mid score.

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 the resource and date scope front-loaded and no wasted words. Every clause (subject matter, geography, time range) earns its place.

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?

With an output schema present and 100% schema coverage, the description need not explain return values, and it adequately conveys subject matter, geography, and temporal scope. It could still note the current-vs-historical boundary against get_bank_branch_locations, but the core calling information is present.

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 all four parameters (lang, data_type, start_year, end_year) are already documented with enums and defaults. The description merely restates the three data types and the 1954-2002 window that the schema already encodes, adding no format or edge-case detail. Baseline 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?

States a specific verb (Get) plus resource (historical data on licensed banks, bank branches, bank offices) and pins scope to Hong Kong 1954-2002. The 'historical' framing plus the explicit date range cleanly separates it from the current-location sibling get_bank_branch_locations.

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 date range and 'historical' label imply when this tool applies, but there is no explicit when-to-use/when-not guidance and no sibling is named as the alternative for current data. An agent must infer the historical-vs-current distinction from the sibling's name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_neg_equity_statsC

Get statistics on residential mortgage loans in negative equity in Hong Kong

ParametersJSON Schema
NameRequiredDescriptionDefault
end_yearNoEnd Year
end_monthNoEnd Month
start_yearNoStart Year
start_monthNoStart Month

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 burden, and it discloses almost nothing: it does not say the call is read-only, that all parameters are optional and what defaults to (all four default to null), the reporting granularity (monthly), the data source (HKMA), or how far back the series goes. 'Get' weakly implies a read, but no behavioral trait is actually stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though arguably under-specified rather than concisely complete.

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?

An output schema exists, so return-value structure need not be described, and the tool is a simple read-only stats fetch with four optional filters. Still missing are the data source, update frequency, default time range when all parameters are null, and any note that this covers Hong Kong only via official statistics.

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 nominally documents all four parameters, and per the rubric that sets a baseline of 3. However, the schema text is only the trivial labels 'Start Year', 'Start Month', 'End Year', 'End Month', and the description adds no semantics (formats, valid ranges, whether the window is inclusive, what happens when omitted) beyond them.

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?

States a specific verb ('Get statistics') and a precise resource ('residential mortgage loans in negative equity in Hong Kong'), which is far more specific than the generic name alone. It does not name or contrast with any sibling, but the sibling list (credit card stats, ATM locations, bank branch locations, etc.) is topically disjoint, so disambiguation is easy.

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 on when to use this versus the other *_stats tools (get_business_stats, get_credit_card_stats, get_hibor_daily_stats, get_stamp_duty_statistics), nor on the meaning of the optional date window. The agent must infer that the four date parameters bound the reporting period.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stamp_duty_statisticsA

Get monthly statistics on stamp duty collected from transfer of Hong Kong stock (both listed and unlisted)

ParametersJSON Schema
NameRequiredDescriptionDefault
end_periodNoEnd period in YYYYMM format to filter results
start_periodNoStart period in YYYYMM format to filter results

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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. 'Get' implies a read-only operation and the monthly granularity plus listed/unlisted scope adds useful context, but it says nothing about behavior when start_period/end_period are omitted (both default to null) or about pagination/limits.

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 well-formed sentence with the verb and resource front-loaded and zero filler; nothing could be removed without losing meaning.

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 two-optional-parameter read tool with an output schema handling return values, the description is nearly sufficient. It covers purpose and data scope; only the null-default behavior is left unexplained.

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 both parameters (start_period, end_period in YYYYMM) are fully documented in the schema. The description adds no parameter-level detail, which is acceptable at full coverage but earns only the baseline.

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 names a specific verb ('Get'), resource ('monthly statistics on stamp duty'), and data scope ('transfer of Hong Kong stock, both listed and unlisted'). This distinguishes it from most siblings (credit card stats, HIBOR, ATM locations), though it does not explicitly name a competing tool.

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?

Usage is only implied: an agent can infer this is the tool for stamp-duty revenue figures, but there is no explicit when-to-use statement, no exclusions, and no pointer to alternative tools for related fiscal data.

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. 13 tool updatesv0.1.7
    • First observedget_atm_locations
    • First observedget_bank_branch_locations
    • First observedget_business_stats
    • First observedget_coin_cart
    • First observedget_credit_card_hotlines
    • First observedget_credit_card_stats
    • First observedget_economy_snapshot
    • First observedget_fraudulent_bank_scams
    • First observedget_hibor_daily_stats
    • First observedget_hkma_tender_invitations
    • First observedget_licensed_banks_historical_data
    • First observedget_neg_equity_stats
    • First observedget_stamp_duty_statistics

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a clearly distinct data source or resource, with no overlapping purposes. The only potential overlap is between 'get_economy_snapshot' and the individual statistics tools, but its description explicitly clarifies its role as an at-a-glance aggregator and directs users to per-series tools for detailed analysis.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with a 'get_' prefix, and use snake_case throughout. This predictable naming makes the toolset easy to navigate.

Tool Count5/5

With 13 tools, the count is well within the optimal range of 3–15. Each tool serves a distinct purpose, and the server appears to cover a focused but comprehensive set of Hong Kong finance data endpoints.

Completeness4/5

The toolset provides broad coverage of Hong Kong finance data, including credit cards, businesses, mortgages, HIBOR, ATMs, scams, and more, plus a convenient snapshot tool. However, some potential areas like historical HIBOR data or bank-specific loan statistics are not directly available, though the snapshot tool partially mitigates this for current-state views.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying Hong Kong private storage statistics such as completions, stock, and vacancy data via a FastMCP interface, sourced from the Rating and Valuation Department.
    17 PyPI
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides access to government development, geography and land information data through a FastMCP interface, including data on new building plans processed by the Building Authority.
    1
    MIT