MCP serverdev.almanack/almanack
Date math and SVG rendering for fictional and custom calendars.
Read more
Date math and SVG rendering for fictional and custom calendars. Exact, stateless and deterministic.Overview
Score?
UNRATED 0.468
of what a free look can see, on 11 looks
Looks
27
last 2 days ago
Tools
15
More info
URL
almanack.dev/mcp
streamable-http
Says it is
almanack 0.7.0
protocol 2025-06-18
In the record since
32 days ago
Among servers18,413 with a card
0median 0.606 · this server 0.468 · highest on record 0.8561
Toolsfrom sha256:80d6ec2a23…e22e4c
| Tool | Schema |
|---|---|
| add_to_date Move a date by years, months, days and ticks. They are applied in that fixed order, which matters: a month then a day is not always the same landing as a day then a month. Adding d |
input · no output |
| calendar_events When recurring events fall, and whether they land on each other. query 'next' gives the first occurrence after the date in 'after' (or on it when inclusive is true). query 'occurre |
input · no output |
| calendar_periods Which named periods of the year a date falls in — a season, a tide, a term. Answers with a list, not one: a calendar may declare several cycles of periods and a date sits in one of |
input · no output |
| calendar_weekday Which weekday a date falls on, as a 0-based index into the calendar's own week plus its name. Exact; never estimates. Returns weekday null when the date is an intercalary day the w |
input · no output |
| convert_date Convert between a calendar date, its day number, and its Gregorian date. Give exactly one of date, day_number, gregorian or one of their plurals dates, day_numbers, gregorians; all |
input · no output |
| date_interval The distance between two dates. 'days' is the exact signed count (negative when end precedes start) and is always reliable. 'calendar' breaks the same distance into whole years, th |
input · no output |
| format_calendar_date Write a date out to a pattern. pattern is either a name from the calendar's own 'formats' (names win) or a pattern written out. Tokens: {day} {day-name} {month} {month-name} {year} |
input · no output |
| moon_phases Every moon's phase on a date. 'fraction' is the exact position in the cycle, 0.0 at new and 0.5 at full, and is the number to compute with. 'phase' is only which named bucket that |
input · no output |
| nth_weekday_of_month The nth given weekday of a month: the 3rd Tuesday, the last Friday. n is 1-based from the start of the month, or negative from the end (-1 is the last). Only days the week counts a |
input · no output |
| parse_calendar_date Read a written date back into a date. Strict, with no fuzzy matching of any kind: literal characters must match character for character, month, weekday, era and period names must b |
input · no output |
| render_calendar_page Draw one month of a calendar as an SVG grid, or a whole year on one sheet, and return the SVG itself. Columns come from the calendar's own week, so a ten-day week gets ten columns. |
input · output |
| render_timeline Draw a date range as a horizontal SVG timeline and return the SVG itself. Both ends of the range are included. Axis ticks choose their own granularity from the span — days, months |
input · output |
| scatter_dates Scatter a number of dates across a span, for generating events. The seed is required and the draw is fully deterministic: the same calendar, span, count, seed and unique flag alway |
input · no output |
| sun_daylight How long each sun is up on a date, and between which times of day. THE CURVE IS DECLARED BY THE SPEC, NEVER INFERRED, and that is the point of this tool: a shortest day, a longest |
input · no output |
| validate_calendar_spec Check a calendar spec and list everything wrong with it. Returns structured errors and warnings; it never throws and never partially accepts a spec. Errors mean the spec is unusabl |
input · no output |
Verify it yourself
npx teppi-check https://almanack.dev/mcpcurl -s https://api.teppi.xyz/v1/trust/mcp/mcs_01M1FZ2A5VZPESPJY7WMJZR1GF