io.github.cyanheads/exchange-rates-mcp-server
io.github.cyanheads/exchange-rates-mcp-server
MCP Bill of Materials
A machine-readable inventory of what this server exposes and depends on: tools with their effects, transports, packages, findings and provenance (schema version 1.0). Third-party text in it is escaped. Also available from the REST API at /api/v1/servers/8d22da7e-3a9b-43f6-a0db-d6a31e995512/mcbom.
MCP Bill of Materials
root{21}
schema_version: "1.0"
bom_format: "squatch-mcbom"
generator{3}
name: "squatch-mcp"
classifier_version: "rules_v1@2026-10-11.1"
unicode_version: "18.0.0"
server{7}
name: "io.github.cyanheads/exchange-rates-mcp-server"
title: null
description: "Convert currencies, get FX rates, and query historical Frankfurter v1 exchange rate data."
version: "0.6.0"
homepage_url: null
source: "official_registry"
upstream_status: "active"
publisher{4}
namespace: "io.github.cyanheads"
display_name: "io.github.cyanheads"
type: "registry_namespace"
status: "unclaimed"
organization: null
repository{5}
url: "https://github.com/cyanheads/exchange-rates-mcp-server"
provider: "github"
owner: "cyanheads"
name: "exchange-rates-mcp-server"
verified: false
packages[2]
0{4}
registry_type: "npm"
identifier: "@cyanheads/exchange-rates-mcp-server"
version: "0.6.0"
transport: "stdio"
1{4}
registry_type: "npm"
identifier: "@cyanheads/exchange-rates-mcp-server"
version: "0.6.0"
transport: "streamable-http"
transports[3]
0{5}
kind: "package"
type: "stdio"
endpoint_url: null
endpoint_host: null
auth_type: "unknown"
1{5}
kind: "package"
type: "streamable-http"
endpoint_url: null
endpoint_host: null
auth_type: "unknown"
2{5}
kind: "remote"
type: "streamable-http"
endpoint_url: "https://exchange-rates.caseyjhand.com/mcp"
endpoint_host: "exchange-rates.caseyjhand.com"
auth_type: "none"
auth{3}
type: "none"
authorization_servers[0]
scopes[0]
protocol{4}
era: "modern"
negotiated_version: "2026-07-28"
supported_versions[0]
transport_type: "streamable-http"
tools[7]
0{9}
name: "fx_convert_currency"
title: "Fx Convert Currency"
effect: "READ"
effect_confidence: 0.626
capabilities[1]
0{2}
capability: "PAYMENT"
confidence: 0.584
risk_severity: "LOW"
fingerprint: "10ee17b8a5a7dd0fe0007527f63e2dc6d871960953fcacfdfab099675ae26794"
input_schema_fingerprint: "33c0c8815b939ab0b0181b78b0189638a00c77ca6497b7fb924c43b358276650"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: true
openWorldHint: true
1{9}
name: "fx_dataframe_describe"
title: "Fx Dataframe Describe"
effect: "READ"
effect_confidence: 0.841
capabilities[0]
risk_severity: "INFO"
fingerprint: "ce658ad63aea189347ab7be50fec281b374bbe98efd86428bfe68ba383475090"
input_schema_fingerprint: "3fd52ba6fe717724c108a1b692591eeb87301e086b9d1234726bb3006cd08dc3"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: true
openWorldHint: false
2{9}
name: "fx_dataframe_query"
title: "Fx Dataframe Query"
effect: "EXECUTE"
effect_confidence: 0.869
capabilities[2]
0{2}
capability: "DATABASE_ACCESS"
confidence: 0.648
1{2}
capability: "FINANCIAL_TRANSACTION"
confidence: 0.88
risk_severity: "CRITICAL"
fingerprint: "960edf5ef1c6a72db15cf699eaeadce3490b782c112086f46b01da9ab4492b8e"
input_schema_fingerprint: "866486c64742aa1c235be05575b827b0f4bc68a2a97feff678f6cc70c384d761"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: true
openWorldHint: false
3{9}
name: "fx_get_rate"
title: "Fx Get Rate"
effect: "READ"
effect_confidence: 0.813
capabilities[0]
risk_severity: "INFO"
fingerprint: "34ea6a019b62f8f82e705f838d4b0f9bca2afca55b578f3c272742928f27a5b2"
input_schema_fingerprint: "1e0c56364328dd6c8fcaddbe30b5e974707245f8a706cedba71d8f50f597ecc6"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: true
openWorldHint: true
4{9}
name: "fx_get_rates"
title: "Fx Get Rates"
effect: "READ"
effect_confidence: 0.813
capabilities[0]
risk_severity: "INFO"
fingerprint: "c7006cbe81dc5fac41d4024f5cf2fdbb71a7739f259d15505317d977b8156ef6"
input_schema_fingerprint: "32d57bd51a2e4f5c9cd9a301573c384ec42392c5174bcb0237407b51675f3816"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: true
openWorldHint: true
5{9}
name: "fx_get_timeseries"
title: "Fx Get Timeseries"
effect: "READ"
effect_confidence: 0.813
capabilities[0]
risk_severity: "INFO"
fingerprint: "f8c60631dfdec36c634b0497a7627d3b6d1bcb0e506872070a22f54ca0916f75"
input_schema_fingerprint: "593a9d34d73326fa3f523478655a1fa1b8e154d181234971fb7721d16c3d40f2"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: true
openWorldHint: true
6{9}
name: "fx_list_currencies"
title: "Fx List Currencies"
effect: "READ"
effect_confidence: 0.813
capabilities[0]
risk_severity: "INFO"
fingerprint: "5454150c438e051fee9c0fcc9d584c6b9b0bb601b8c8660699a0a4ba84da9c89"
input_schema_fingerprint: "9df9a3c1a1d41bab676bd73328a5dd428cd0ae21795613fdade0b0ddc28ffab0"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: true
openWorldHint: true
resources[8]
0{4}
key: "fx://currencies"
kind: "resource"
mime_type: "application/json"
fingerprint: "5b4d0120f807e290e0ca75fe574c2eb97b5227f8dcf6bdef2fa7aa2c24e6516e"
1{4}
key: "fx://rates/latest/EUR"
kind: "resource"
mime_type: "application/json"
fingerprint: "484f88d33a898d62144609185accb37b4bede86a22717e1785000f7e768ed23d"
2{4}
key: "fx://rates/latest/GBP"
kind: "resource"
mime_type: "application/json"
fingerprint: "77f6be18e186243e341cf74b9caecc638364a859a354a3cb7e57182d5903f108"
3{4}
key: "fx://rates/latest/JPY"
kind: "resource"
mime_type: "application/json"
fingerprint: "b96f84f93374bb494d7d49bfa2bff9d4c8ecdd3e97f98ca9e31379400a17a787"
4{4}
key: "fx://rates/latest/USD"
kind: "resource"
mime_type: "application/json"
fingerprint: "d3ab405e04d2a5bec54198c7754afa5f3d2871b41f78289a5d836b8ffd6ef802"
5{4}
key: "skill://exchange-rates-guide/SKILL.md"
kind: "resource"
mime_type: "text/markdown"
fingerprint: "5ac6f2da7e76c6b9285ac64877918f609c42713d4899b83f4e13c51c2efae56b"
6{4}
key: "fx://rates/latest/{base}"
kind: "template"
mime_type: "application/json"
fingerprint: "0fb4d5cf9987ac62878d39bfa3aaa230ea26999e65ab2f1349b39ad693eb1802"
7{4}
key: "skill://{+path}"
kind: "template"
mime_type: null
fingerprint: "9777dc7f1cf468158c157032a0ccebf9b50270f4e8753af9ccaf2fe99890ccf0"
prompts[0]
extensions[1]
0: "io.modelcontextprotocol/skills"
data{6}
privacy_completeness: "not_provided"
data_categories[0]
ai_training: null
retention_policy: null
processing_regions[0]
subprocessors[0]
external_integrations[1]
0{3}
host: "exchange-rates.caseyjhand.com"
registrable_domain: "caseyjhand.com"
source: "transport"
findings[3]
0{6}
check_id: "SQ-SERVER-AUTH-NONE-WRITE"
category: "authentication"
severity: "HIGH"
title: "State-changing tools available without authentication"
subject_type: "server"
subject_name: null
1{6}
check_id: "SQ-TOOL-ANNOTATION-UNDERCLAIM"
category: "annotations"
severity: "HIGH"
title: "Annotations understate what the tool does"
subject_type: "tool"
subject_name: "fx_dataframe_query"
2{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "fx_get_rates"
trust{9}
registry_namespace: "verified_upstream"
publisher_identity: "unverified"
organization: "unverified"
domain: "unverified"
repository: "unverified"
source_provenance: "partial"
security_scan: "findings_detected"
privacy_transparency: "not_provided"
monitoring: "active"
provenance{4}
registry_name: "io.github.cyanheads/exchange-rates-mcp-server"
registry_content_sha256: "569ff9ef051ea906e8d88c21e9e622d1c22e9b53c8471912da6ffef2e06e42b8"
scan_snapshot_fingerprint: "a34dab5f343c60b29bad334099b7c30a1c779f532e12ff1dd97ed2236f08178f"
scanner_version: "1.0.0"
timestamps{4}
generated_at: "2026-11-15T02:15:07.247Z"
observed_at: "2026-11-12T20:57:41.497+00:00"
registry_published_at: "2026-11-03T07:57:11.557379+00:00"
registry_updated_at: null