Koskamo

CryptoKeyhole MCP

A read-only remote MCP server providing access to public on-chain and market analytics for Bitcoin, Ethereum, and other assets. It allows AI agents to retrieve asset lists, metric definitions, and current data values without requiring authentication, serving data from the vendor's own nodes and exchange aggregations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

CryptoKeyhole MCP logo, by CryptoKeyholeVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by CryptoKeyhole
MCP endpoint (Streamable HTTP)
https://cryptokeyhole.com/api/v1/mcp
Vendor documentation

What you can do with it

  • List available crypto assets and metrics
  • Retrieve current market and on-chain data values
  • Get metric definitions and metadata
  • Browse analytics by category

Source and maintenance

Vendor evidenceRegistry 1.1.3

Protocol and capabilities

Server
cryptokeyhole 1.1.3
MCP protocol
2025-06-18
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Read-only crypto analytics for Bitcoin, Ethereum and a growing list of coins (get_assets_list). Inspect metric metadata, source clocks, finality, gaps and held states. Exact decimal strings must not be rounded implicitly. Bulk results are not an atomic snapshot. Free metrics are licensed CC BY 4.0: credit CryptoKeyhole with a link to the chart.

Tools

6 advertised

get_assets_list — Get assets list
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the active analytics assets, each with its code and name. Use a code as the asset argument of the other tools.

get_assets_list input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
get_assets_list annotations
{
  "title": "Get assets list",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_metrics_list — Get metrics list
Advertised by the server during the last successful anonymous check.
Advertised read-only

Discover metrics for one asset (BTC by default) by existing category, including honest held and delayed states. Cursor pages follow the current catalogue and are not an immutable snapshot. Use it to browse by category before an asset is chosen: without one it lists BTC, and its rows are the same as get_asset_metrics gives. Each row has the plan its data needs; fetch_metric serves rows whose plan is free.

get_metrics_list input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "asset": {
      "enum": [
        "BTC",
        "ETH",
        "SOL",
        "XRP",
        "TRX",
        "BNB",
        "DOGE",
        "TON",
        "LINK",
        "HYPE",
        "WBTC",
        "ADA",
        "NEAR",
        "XLM",
        "BCH",
        "LTC",
        "UNI",
        "AVAX",
        "SUI",
        "HBAR",
        "WLD",
        "WLFI",
        "LIT",
        "MNT",
        "SHIB",
        "QNT",
        "ENA",
        "MORPHO",
        "AAVE",
        "ONDO",
        "DOT",
        "ZRO",
        "PEPE",
        "SKY",
        "ARB",
        "FF",
        "POL",
        "APT",
        "CRV",
        "ZAMA",
        "SENT",
        "ETHFI",
        "PENDLE",
        "ENS",
        "FET",
        "LDO",
        "EIGEN",
        "SPX",
        "EDGE",
        "IMX",
        "AXS",
        "BAT",
        "GRT",
        "SYRUP",
        "FLOKI",
        "COMP",
        "SAND",
        "APE",
        "PROM",
        "ALT",
        "GALA",
        "NIL",
        "ERA"
      ],
      "type": "string",
      "default": "BTC",
      "description": "Asset code, for example BTC or ETH; get_assets_list gives every code with its name."
    },
    "limit": {
      "type": "integer",
      "default": 100,
      "maximum": 3000,
      "minimum": 1,
      "description": "Rows per page."
    },
    "cursor": {
      "type": "string",
      "description": "The nextCursor of the previous page; leave it out for the first page."
    },
    "category": {
      "type": "string",
      "description": "A metric family, for example market, supply or mining; the categories field of each answer lists them with their counts. Leave it out for every family."
    }
  },
  "additionalProperties": false
}
get_metrics_list annotations
{
  "title": "Get metrics list",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_asset_metrics — Get asset metrics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Discover the available and held metrics of one asset. Use it once you know the asset: asset is required, so the answer never falls back to BTC, and its rows are the same as get_metrics_list gives. Each row has the plan its data needs; fetch_metric serves rows whose plan is free.

get_asset_metrics input schema
{
  "type": "object",
  "required": [
    "asset"
  ],
  "properties": {
    "asset": {
      "enum": [
        "BTC",
        "ETH",
        "SOL",
        "XRP",
        "TRX",
        "BNB",
        "DOGE",
        "TON",
        "LINK",
        "HYPE",
        "WBTC",
        "ADA",
        "NEAR",
        "XLM",
        "BCH",
        "LTC",
        "UNI",
        "AVAX",
        "SUI",
        "HBAR",
        "WLD",
        "WLFI",
        "LIT",
        "MNT",
        "SHIB",
        "QNT",
        "ENA",
        "MORPHO",
        "AAVE",
        "ONDO",
        "DOT",
        "ZRO",
        "PEPE",
        "SKY",
        "ARB",
        "FF",
        "POL",
        "APT",
        "CRV",
        "ZAMA",
        "SENT",
        "ETHFI",
        "PENDLE",
        "ENS",
        "FET",
        "LDO",
        "EIGEN",
        "SPX",
        "EDGE",
        "IMX",
        "AXS",
        "BAT",
        "GRT",
        "SYRUP",
        "FLOKI",
        "COMP",
        "SAND",
        "APE",
        "PROM",
        "ALT",
        "GALA",
        "NIL",
        "ERA"
      ],
      "type": "string",
      "default": "BTC",
      "description": "Asset code, for example BTC or ETH; get_assets_list gives every code with its name."
    },
    "limit": {
      "type": "integer",
      "default": 100,
      "maximum": 3000,
      "minimum": 1,
      "description": "Rows per page."
    },
    "cursor": {
      "type": "string",
      "description": "The nextCursor of the previous page; leave it out for the first page."
    },
    "category": {
      "type": "string",
      "description": "A metric family, for example market, supply or mining; the categories field of each answer lists them with their counts. Leave it out for every family."
    }
  },
  "additionalProperties": false
}
get_asset_metrics annotations
{
  "title": "Get asset metrics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_metric_metadata — Get metric metadata
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the current metric definition, supported intervals, method, coverage and source limitations.

get_metric_metadata input schema
{
  "type": "object",
  "required": [
    "metric"
  ],
  "properties": {
    "asset": {
      "enum": [
        "BTC",
        "ETH",
        "SOL",
        "XRP",
        "TRX",
        "BNB",
        "DOGE",
        "TON",
        "LINK",
        "HYPE",
        "WBTC",
        "ADA",
        "NEAR",
        "XLM",
        "BCH",
        "LTC",
        "UNI",
        "AVAX",
        "SUI",
        "HBAR",
        "WLD",
        "WLFI",
        "LIT",
        "MNT",
        "SHIB",
        "QNT",
        "ENA",
        "MORPHO",
        "AAVE",
        "ONDO",
        "DOT",
        "ZRO",
        "PEPE",
        "SKY",
        "ARB",
        "FF",
        "POL",
        "APT",
        "CRV",
        "ZAMA",
        "SENT",
        "ETHFI",
        "PENDLE",
        "ENS",
        "FET",
        "LDO",
        "EIGEN",
        "SPX",
        "EDGE",
        "IMX",
        "AXS",
        "BAT",
        "GRT",
        "SYRUP",
        "FLOKI",
        "COMP",
        "SAND",
        "APE",
        "PROM",
        "ALT",
        "GALA",
        "NIL",
        "ERA"
      ],
      "type": "string",
      "default": "BTC",
      "description": "Asset code, for example BTC or ETH; get_assets_list gives every code with its name."
    },
    "metric": {
      "type": "string",
      "minLength": 1,
      "description": "Metric id, for example ckh.SpotPrice or eth.PriceUSD; get_asset_metrics lists every id."
    }
  },
  "additionalProperties": false
}
get_metric_metadata annotations
{
  "title": "Get metric metadata",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch_metric — Fetch metric
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read exact unreduced observations of one metric with decimal strings, original source clocks, revision, finality and gaps. End is exclusive. Metric-specific interval and retained-publication restrictions apply. No new observation is acquired. Without an account it serves metrics whose plan is free (get_asset_metrics shows the plan of each row) at 24h, 1w, 1M or 1Y; anything else answers with the plan it needs and the free metrics closest to it.

fetch_metric input schema
{
  "type": "object",
  "required": [
    "metric"
  ],
  "properties": {
    "end": {
      "type": "integer",
      "description": "Exclusive UNIX seconds UTC."
    },
    "sma": {
      "type": "integer",
      "default": 0,
      "maximum": 3650,
      "minimum": 0,
      "description": "Smoothing window in observations; 0 returns the raw series."
    },
    "asset": {
      "enum": [
        "BTC",
        "ETH",
        "SOL",
        "XRP",
        "TRX",
        "BNB",
        "DOGE",
        "TON",
        "LINK",
        "HYPE",
        "WBTC",
        "ADA",
        "NEAR",
        "XLM",
        "BCH",
        "LTC",
        "UNI",
        "AVAX",
        "SUI",
        "HBAR",
        "WLD",
        "WLFI",
        "LIT",
        "MNT",
        "SHIB",
        "QNT",
        "ENA",
        "MORPHO",
        "AAVE",
        "ONDO",
        "DOT",
        "ZRO",
        "PEPE",
        "SKY",
        "ARB",
        "FF",
        "POL",
        "APT",
        "CRV",
        "ZAMA",
        "SENT",
        "ETHFI",
        "PENDLE",
        "ENS",
        "FET",
        "LDO",
        "EIGEN",
        "SPX",
        "EDGE",
        "IMX",
        "AXS",
        "BAT",
        "GRT",
        "SYRUP",
        "FLOKI",
        "COMP",
        "SAND",
        "APE",
        "PROM",
        "ALT",
        "GALA",
        "NIL",
        "ERA"
      ],
      "type": "string",
      "default": "BTC",
      "description": "Asset code, for example BTC or ETH; get_assets_list gives every code with its name."
    },
    "start": {
      "type": "integer",
      "description": "Inclusive UNIX seconds UTC."
    },
    "metric": {
      "type": "string",
      "minLength": 1,
      "description": "Metric id, for example ckh.SpotPrice or eth.PriceUSD; get_asset_metrics lists every id."
    },
    "interval": {
      "enum": [
        "24h",
        "1w",
        "1M",
        "1Y"
      ],
      "type": "string",
      "default": "24h",
      "description": "Resolution of the observations: 24h daily, 1w weekly, 1M monthly or 1Y yearly. get_metric_metadata gives the intervals a metric offers."
    },
    "smoothing": {
      "enum": [
        "sma",
        "ema",
        "median"
      ],
      "type": "string",
      "default": "sma",
      "description": "How sma smooths the series: simple mean (sma), exponential mean (ema) or moving median (median)."
    },
    "publication": {
      "type": "string",
      "description": "An actual retained publication ID; only supported metric/interval pairs accept it."
    }
  },
  "additionalProperties": false
}
fetch_metric annotations
{
  "title": "Fetch metric",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch_bulk_metrics — Fetch bulk metrics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read multiple metric selections sequentially. Each item retains its own provenance and revision; this is not one atomic snapshot. Unsupported selections are explicit per-item errors. The existing 200000-observation and response-byte bounds apply to the combined result.

fetch_bulk_metrics input schema
{
  "type": "object",
  "required": [
    "requests"
  ],
  "properties": {
    "requests": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "metric"
        ],
        "properties": {
          "end": {
            "type": "integer",
            "description": "Exclusive UNIX seconds UTC."
          },
          "sma": {
            "type": "integer",
            "default": 0,
            "maximum": 3650,
            "minimum": 0,
            "description": "Smoothing window in observations; 0 returns the raw series."
          },
          "asset": {
            "enum": [
              "BTC",
              "ETH",
              "SOL",
              "XRP",
              "TRX",
              "BNB",
              "DOGE",
              "TON",
              "LINK",
              "HYPE",
              "WBTC",
              "ADA",
              "NEAR",
              "XLM",
              "BCH",
              "LTC",
              "UNI",
              "AVAX",
              "SUI",
              "HBAR",
              "WLD",
              "WLFI",
              "LIT",
              "MNT",
              "SHIB",
              "QNT",
              "ENA",
              "MORPHO",
              "AAVE",
              "ONDO",
              "DOT",
              "ZRO",
              "PEPE",
              "SKY",
              "ARB",
              "FF",
              "POL",
              "APT",
              "CRV",
              "ZAMA",
              "SENT",
              "ETHFI",
              "PENDLE",
              "ENS",
              "FET",
              "LDO",
              "EIGEN",
              "SPX",
              "EDGE",
              "IMX",
              "AXS",
              "BAT",
              "GRT",
              "SYRUP",
              "FLOKI",
              "COMP",
              "SAND",
              "APE",
              "PROM",
              "ALT",
              "GALA",
              "NIL",
              "ERA"
            ],
            "type": "string",
            "default": "BTC",
            "description": "Asset code, for example BTC or ETH; get_assets_list gives every code with its name."
          },
          "start": {
            "type": "integer",
            "description": "Inclusive UNIX seconds UTC."
          },
          "metric": {
            "type": "string",
            "minLength": 1,
            "description": "Metric id, for example ckh.SpotPrice or eth.PriceUSD; get_asset_metrics lists every id."
          },
          "interval": {
            "enum": [
              "24h",
              "1w",
              "1M",
              "1Y"
            ],
            "type": "string",
            "default": "24h",
            "description": "Resolution of the observations: 24h daily, 1w weekly, 1M monthly or 1Y yearly. get_metric_metadata gives the intervals a metric offers."
          },
          "smoothing": {
            "enum": [
              "sma",
              "ema",
              "median"
            ],
            "type": "string",
            "default": "sma",
            "description": "How sma smooths the series: simple mean (sma), exponential mean (ema) or moving median (median)."
          },
          "publication": {
            "type": "string",
            "description": "An actual retained publication ID; only supported metric/interval pairs accept it."
          }
        },
        "additionalProperties": false
      },
      "minItems": 1,
      "description": "The selections to read, in order; each takes the same arguments as fetch_metric."
    }
  },
  "additionalProperties": false
}
fetch_bulk_metrics annotations
{
  "title": "Fetch bulk metrics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1185 ms
95th percentile latency
1185 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1185 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http cryptokeyhole-mcp https://cryptokeyhole.com/api/v1/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add cryptokeyhole-mcp --url https://cryptokeyhole.com/api/v1/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable cryptokeyhole-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "cryptokeyhole-mcp": {
      "url": "https://cryptokeyhole.com/api/v1/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "cryptokeyhole-mcp": {
      "type": "streamableHttp",
      "url": "https://cryptokeyhole.com/api/v1/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start cryptokeyhole-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "cryptokeyhole-mcp": {
      "type": "http",
      "url": "https://cryptokeyhole.com/api/v1/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http cryptokeyhole-mcp https://cryptokeyhole.com/api/v1/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "cryptokeyhole-mcp": {
      "url": "https://cryptokeyhole.com/api/v1/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "cryptokeyhole-mcp": {
      "serverUrl": "https://cryptokeyhole.com/api/v1/mcp"
    }
  }
}

Let your agent find its tools

Find servers like CryptoKeyhole MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run CryptoKeyhole MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing