Clawlendar
Overview
Provide a single, agent-friendly bridge layer so different tools can ask calendar questions in a common schema and receive normalized JSON. Treat this skill as the date interoperability baseline for multi-agent ecosystems.
Workflow
- Call
capabilitiesfirst to discover supported calendars, optional providers, and locale support. - For calendar conversion, parse source payload in declared calendar and bridge through Gregorian.
- For instant-based workflows, use
timeline(timestamp-first) instead of direct date conversion. - Use
calendar_monthwhen UI needs true month boundaries in non-Gregorian systems. - Use
day_profilefor one-call details (sexagenary,solar_term_24,chinese_lunar, optionalastro, optional metaphysics). - Always pass
locale(en,zh-CN,zh-TW) when user-facing text is required.
Quick Start (MCP Server)
Install and run as an MCP server for Claude Desktop / Claude Code:
python3 -m pip install -U "clawlendar[all]"
clawlendar
One-line registration in Claude Code:
python3 -m pip install -U "clawlendar[all]" && claude mcp add clawlendar -- clawlendar
Or run directly from source:
pip install -e .
python -m clawlendar.server
CLI Usage
List supported calendars and optional backends:
pip install -e .
python3 scripts/calendar_bridge.py capabilities
Convert one date into multiple targets:
python3 scripts/calendar_bridge.py convert \
--source gregorian \
--targets julian,iso_week,minguo,buddhist,japanese_era,sexagenary,solar_term_24 \
--date-json '{"year": 2026, "month": 3, "day": 9}'
Normalize one instant with timestamp-first model (external time wheel):
python3 scripts/calendar_bridge.py timeline \
--input-json '{"timestamp": 1773014400}' \
--timezone 'Asia/Taipei' \
--date-basis local \
--targets minguo,japanese_era,sexagenary,solar_term_24
Generate an astro snapshot for zodiac wheel rendering:
python3 scripts/calendar_bridge.py astro \
--input-json '{"timestamp": 1773014400}' \
--timezone 'Asia/Taipei'
Get true month boundaries for non-Gregorian month mode:
python3 scripts/calendar_bridge.py calendar-month \
--source minguo \
--month-json '{"year":115,"month":3}'
Get unified daily profile payload:
python3 scripts/calendar_bridge.py day-profile \
--input-json '{"timestamp": 1773014400}' \
--timezone 'Asia/Taipei' \
--locale 'zh-TW'
Include full metaphysics block (Bazi/Huangli + Western almanac):
python3 scripts/calendar_bridge.py day-profile \
--input-json '{"timestamp": 1773014400}' \
--timezone 'Asia/Taipei' \
--locale 'zh-CN'
HTTP API
Run HTTP API for multi-claw integration:
pip install -e ".[api]"
./scripts/run_api.sh
Run with Docker:
docker build -t clawlendar:mvp .
docker run --rm -p 8000:8000 clawlendar:mvp
Contract
Use the JSON contract in references/integration-contract.md for tool-to-tool integration. Keep payload keys calendar-specific and avoid ambiguous fields.
Tool Mapping
- MCP tools:
capabilities,convert,timeline,astro_snapshot,calendar_month,day_profile - CLI commands:
capabilities,convert,timeline,astro,calendar-month,day-profile - FastAPI endpoints:
GET /capabilities,POST /convert,POST /timeline,POST /astro,POST /calendar-month,POST /day-profile
References
- Use
references/integration-contract.mdfor request/response schema and compatibility guidance. - Use
references/calendar-landscape.mdfor East/West major calendar systems and rollout priorities. - Use
references/time-wheel-model.mdfor timestamp-first design and instant/date projection rules. - Use
references/mvp-release-notes.mdas GitHub release draft baseline.
Notes
- Treat Gregorian as the canonical bridge format.
- Return warnings instead of hard-failing for optional providers that are not installed.
- Mark approximate outputs explicitly (for example, sexagenary year boundaries and fixed-date solar-term approximation).
- Treat
timelineas the default bridge for multi-agent scheduling and event processing. chinese_lunarconversion payload is numeric; Chinese textual month/day labels are exposed viaday_profile.metaphysics.eastern.lunar_datewhenlunar_pythonis available.