# Trading Calendar & Public Holidays (x402)

> Stock exchange trading days, hours, live market status (28 exchanges) and holidays (247 countries).

- name: io.github.vstockma/handelskalender-api
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 82/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.vstockma%2Fhandelskalender-api
- tools: https://api.protogrid.dev/v1/servers/io.github.vstockma%2Fhandelskalender-api/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "handelskalender-api": {
      "type": "http",
      "url": "https://handelskalender-api.pages.dev/mcp"
    }
  }
}
```


## Trust

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

## Quality 82/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### 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: 88 (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
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: market_status (destructiveHint, idempotentHint); trading_calendar (destructiveHint, idempotentHint); trading_day (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 1,160 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

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

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 4 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: 5, about 1,160 tokens to load them all
- tool set hash: 2986201799525687d47a9fbc3d34e17a
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.vstockma/handelskalender-api.svg)](https://protogrid.dev/servers/io.github.vstockma/handelskalender-api)
- 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://handelskalender-api.pages.dev/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (5)

- `business_day`: Use when an agent must know if a date is a business day in a country, or compute a due date: weekend or holiday (with name), previous/next business day, date plus N business days (add=), business days until a date (to=). 247 countries, 2026-2028, optional state/province (region=), local weekends (e.g. Fri-Sat). Bad input: HTTP 400, no charge. Price: 0.002 USDC per successful call (x402).
- `market_status`: Use when an agent needs to know right now which stock exchanges are open: open, lunch break, pre-market, after-hours or closed (with holiday name), local time, exact next open and close in UTC. One call checks up to 28 exchanges (default all) incl. NYSE, Nasdaq, LSE, Xetra, Euronext, Tokyo, HKEX, Shanghai, ASX. Official exchange calendars only; unknown exchange: HTTP 400, no charge. Price: 0.002 USDC per successful call (x402).
- `public_holidays`: Use when an agent needs all public holidays of a country for a year (planning deliveries, payments, deadlines, staffing). 247 countries, 2026-2028, optional state/province (region=) for regional holidays. English and local names, weekend days of the country, moon-dependent dates flagged as estimated. Bad input: HTTP 400 before payment, no charge. Price: 0.002 USDC per successful call (x402).
- `trading_calendar`: Use when an agent plans ahead and needs every closure of a stock exchange for a whole year: holiday names, half days, late openings, regular hours, count of trading days. 28 exchanges incl. NYSE, Nasdaq, LSE, Xetra, Euronext, SIX, Tokyo, HKEX, Shanghai, ASX. Official exchange calendars only; bad input or uncovered year: HTTP 400, no charge. Price: 0.002 USDC per successful call (x402).
- `trading_day`: Use when an agent needs to know if a stock exchange trades on a given day (default today) before scheduling orders, reports or alerts. 28 exchanges incl. NYSE, Nasdaq, LSE, Xetra, Euronext, SIX, Tokyo, HKEX, Shanghai, ASX. Returns holiday name, hours in local time + UTC, half days, lunch breaks, pre/after-market (Nasdaq, Xetra), live status, next open/close, previous/next trading day. Official exchange calendars only; bad input: HTTP 400, no charge. Price: 0.002 USDC per successful call (x402).
