# CoinMarketCal

> Crypto events calendar: dated, sourced and impact-scored events for 14,000+ coins.

- name: com.coinmarketcal/events
- version: 1.0.1
- connection class: R1 (autonomous)
- trust: 100/100
- quality: 79/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.coinmarketcal%2Fevents
- tools: https://api.protogrid.dev/v1/servers/com.coinmarketcal%2Fevents/tools

**An agent can connect on its own if it already holds `X_API_KEY`, `X_API_KEY`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "events": {
      "type": "http",
      "url": "https://coinmarketcal.com/mcp",
      "headers": {
        "x-api-key": "${X_API_KEY}",
        "Authorization": "${X_API_KEY}"
      }
    }
  }
}
```

Placeholders to fill: `${X_API_KEY}`, `${X_API_KEY}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 100
- drivers: +repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-100% +updated-5d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: list_categories (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_event (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_coin (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,197 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 5 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 1,197 tokens to load them all
- tool set hash: 1b49d73b063e9e85625c48d563a5e4d5
- badge: [![protogrid quality](https://protogrid.dev/badge/com.coinmarketcal/events.svg)](https://protogrid.dev/servers/com.coinmarketcal/events)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://coinmarketcal.com/mcp (streamable-http, auth api_key ${X_API_KEY}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (7)

- `get_coin`: Returns the full coin payload by slug. 404 when the slug doesn't match any coin (tracked or otherwise).
- `get_event`: Returns the full event payload by id. Tier-gated fields follow the caller's plan. A recently removed event returns `410 Gone` with its `id` and `cancelledAt`. An unknown, temporarily unpublished, or out-of-window event returns `404`.
- `get_usage`: Returns the authenticated key's monthly usage counters. Does not consume quota beyond the cost of the HTTP call itself. Use this to backoff before hitting 429s or to drive alerts in your integration.
- `list_categories`: Returns every category in the editorial taxonomy with the count of upcoming events per category (tier-windowed). Standard+ only. Query parameters are ignored; the list is not paginated.
- `list_coins`: Returns a paginated list of coins ordered by `rank` ascending (top-ranked first). Pass the `tracked` filter only when you need to limit results by editorial coverage.
- `list_event_cancellations`: Returns removal records ordered by `cancelledAt`, then `id`. Available to every API V2 tier. Poll regularly and never leave more than 90 days between successful requests, even when webhooks are enabled.
- `list_events`: Returns a paginated list of upcoming and historical events within the date window available to the caller's plan. Default sort is `date asc` (soonest first). The `coins`, `categories`, and date filters compose with `AND`.
