What it does:
• MCP tool: generates typed clients and API route handlers (Next.js/Express/Fastify/Nest) so you can scaffold calls straight from your IDE/agent tooling.
• Availability engine: recurring rules + one-off exceptions/blackouts, returned in a clean, queryable shape.
• Bookings: conflict-safe endpoints for creating/updating/canceling slots.
Why we built it:
We kept rebuilding the same "hard parts" of scheduling: time zones/DST edge cases, recurring availability, conflict-aware booking, etc. We wanted a boring, reliable backend so we could ship product features without adopting a hosted scheduling UI.
How it's helped:
We stopped re-implementing DST/recurrence math and shipped booking flows faster.
One small team (just 2 developers) built a robust booking platform for their business using Kalendis—they kept full control of their UX without spending lots of cycles on scheduling infrastructure.
The MCP generator cut the glue code: drop in a typed client or route, call the API, move on.
Some tech details:
• REST API with ISO-8601 timestamps and IANA time zones
• Recurring availability + one-off exceptions (designed to compose cleanly)
• Focused scope: users, availability, exceptions, bookings (not a monolithic suite)
MCP integration:
MCP server exposes tools like generate-frontend-client, generate-backend-client, generate-api-routes, and list-endpoints.
Add to your MCP settings:
{ "mcpServers": { "kalendis": { "command": "npx", "args": ["-y", "@kalendis/mcp"] } } }
How to try it:
Create a free account → get an API key. (https://kalendis.dev)
Hit an endpoint:
curl -H "x-api-key: $KALENDIS_API_KEY" \ "https://api.kalendis.dev/v1/availability/getAvailability?userId=<user-id>&start=2025-10-07T00:00:00Z&end=2025-10-14T00:00:00Z&includeExceptions=true"
What feedback would be most useful:
Gaps in the endpoint surface (what's missing for your use case?).
Features that would benefit this service integration in your app.
MCP generator output—anything you'd want it to emit differently?
Happy to answer questions and post example snippets in the thread. Thanks for taking a look!
— Dave (Kalendis)