MCP reference

timer.ly publishes a JSON-RPC 2.0 MCP server at POST https://www.timer.ly/api/mcp. Below is the auto-generated tool catalog. Add a server entry to your MCP-aware client with no auth and no extra configuration — every tool is anonymous.

Endpoint

POST https://www.timer.ly/api/mcp
Content-Type: application/json

Methods

  • initialize — handshake; returns server info + protocolVersion: 2024-11-05.
  • tools/list — returns the tools below.
  • tools/call — invoke a tool. Params: { name, arguments }.
  • ping — liveness check, returns {}.

Tools

build_duration_url

Build a timer.ly countdown URL for a duration. Combine days, hours, minutes, and seconds (at least one must be > 0). Returns a shareable URL the recipient can open to see a live countdown that reaches zero.

Input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "minimum": 0,
      "description": "Whole days (0–3650)."
    },
    "hours": {
      "type": "integer",
      "minimum": 0,
      "description": "Whole hours."
    },
    "minutes": {
      "type": "integer",
      "minimum": 0,
      "description": "Whole minutes."
    },
    "seconds": {
      "type": "integer",
      "minimum": 0,
      "description": "Whole seconds."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it"
      ],
      "description": "Output locale for the URL prefix (default en)."
    }
  },
  "additionalProperties": false
}

build_target_url

Build a countdown URL to a future instant. Accepts ISO 8601 with timezone (`2026-12-25T15:00:00Z`, `2026-12-25T15:00-05:00`, `2026-12-25T15:00-pst`) or date-only (`2026-12-25`). Returns a shareable URL.

Input schema
{
  "type": "object",
  "required": [
    "iso"
  ],
  "properties": {
    "iso": {
      "type": "string",
      "description": "ISO 8601 date or datetime. Accepts trailing tz suffix (e.g. -pst, -cet)."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it"
      ]
    }
  },
  "additionalProperties": false
}

build_since_url

Build a count-up URL from a past instant. Same ISO grammar as build_target_url, but the past date must be within the last 100 years. Returns a URL that shows "time elapsed since".

Input schema
{
  "type": "object",
  "required": [
    "iso"
  ],
  "properties": {
    "iso": {
      "type": "string"
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it"
      ]
    }
  },
  "additionalProperties": false
}

build_event_url

Build a countdown URL for a curated event (christmas, new_year, easter, summer_solstice, winter_solstice). Returns the canonical locale-aware URL plus the next occurrence date. Use list_curated_events to enumerate.

Input schema
{
  "type": "object",
  "required": [
    "event"
  ],
  "properties": {
    "event": {
      "type": "string",
      "enum": [
        "christmas",
        "new_year",
        "easter",
        "summer_solstice",
        "winter_solstice"
      ],
      "description": "Event id. Hyphenated forms (new-year, summer-solstice) are also accepted."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it"
      ]
    }
  },
  "additionalProperties": false
}

list_curated_events

List the curated cross-locale events that timer.ly knows about, with each one's next-occurrence date and the locale-specific URL. Use to enumerate the catalog before calling build_event_url.

Input schema
{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it"
      ]
    }
  },
  "additionalProperties": false
}

list_holidays

List national / bank / federal holidays for a country in a date range. Each entry includes a stable slug and the canonical /to/{slug} URL. Defaults: next 12 months from today.

Input schema
{
  "type": "object",
  "required": [
    "country"
  ],
  "properties": {
    "country": {
      "type": "string",
      "enum": [
        "uk",
        "us",
        "de",
        "fr",
        "es",
        "it"
      ]
    },
    "from": {
      "type": "string",
      "description": "ISO date YYYY-MM-DD (inclusive). Default: today."
    },
    "to": {
      "type": "string",
      "description": "ISO date YYYY-MM-DD (inclusive). Default: today + 365 days."
    }
  },
  "additionalProperties": false
}

parse_countdown_url

Reverse-parse a timer.ly URL. Identifies the countdown kind (duration / target / since / event) and returns the encoded payload. Useful for round-tripping URLs an agent has previously generated or received.

Input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string"
    }
  },
  "additionalProperties": false
}

Example

curl -s -X POST https://www.timer.ly/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"list_holidays",
                 "arguments":{"country":"de"}}}'