Kairos
Allows using Apache as a reverse proxy for authentication, enabling single sign-on and identity-based access control.
Allows using Authelia as an authentication reverse proxy, providing single sign-on and identity verification.
Allows using Cloudflare Access for identity-based authentication via reverse proxy headers.
Allows using Tailscale for identity-based authentication via reverse proxy headers.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Kairoscreate a poll for Friday team lunch"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Kairos
Website · ▶ Try it in your browser — the actual Python server on Pyodide/WASM, nothing leaves your machine.
when2meet-style scheduling polls — self-hostable, reverse-proxy-auth friendly, agent-first API (OpenAPI + llms.txt + MCP).
Quickstart
uvx --from kairos-scheduler kairos # SQLite + demo auth on :8003or with Docker / a real database:
KAIROS_DB_URL=mysql://user:pass@host:3306/db \
KAIROS_AUTH=header SESSION_SECRET=$(openssl rand -hex 32) \
uvx --from 'kairos-scheduler[mysql]' kairos --host 0.0.0.0Related MCP server: timergy
Features
Full-day or time-slot polls, when2meet drag grids, heatmaps
Public share links + personal email invites (required/optional participants)
Convergence light: collecting → ready / partial / blocked
Idempotent smart reminders + per-participant contact audit trail
Decide a final date → .ics download + "email everyone" with the file attached
Light/dark colorblind-friendly theme (Dalton)
Agents: REST API (Bearer),
/llms.txt, OpenAPI, Swagger UI, MCP serverReverse-calendar (optional): push candidate slots into the respondent's calendar instead of reading their free/busy — subscribe-able feeds + native iMIP Accept/Maybe/Decline. Off by default (see below).
Reverse the calendar (iMIP) — optional
Instead of asking for calendar access, Kairos can push the candidate slots into the respondent's calendar and let them Accept/Maybe/Decline — capturing what's truly blocking, not mechanical free/busy. Two layers, both opt-in:
Candidate feed (
KAIROS_FEED=on) — a subscribe-able, disposable.icscalendar of the poll's slots. The per-invite feed (/p/i/<token>/feed.ics) embeds deep-link Accept/Maybe/Decline URLs; tapping one records that slot and lands on the poll page (the instant surface — subscribed feeds refresh slowly, Google ~daily, so never rely on the calendar reflecting a vote quickly).Native iMIP invitations (
KAIROS_IMIP=on) — realMETHOD:REQUESTinvites with Accept/Maybe/Decline buttons.KAIROS_IMIP_ORGANIZERis the mailbox replies route to; it must equal the IMAP mailbox Kairos polls (KAIROS_IMAP_HOST/PORT/USER/PASSWORD/MAILBOX). SchedulePOST /api/imip/poll(cron / systemd timer, Bearer auth) to ingest replies;POST /api/polls/{id}/imip-decisionsends the decided slot as a native invite.
Cross-client reality (verified live): Outlook and Apple render native Accept/Maybe/Decline; Gmail does not for a Gmail-organized event (Google policy) — the deep-link Accept/Maybe/Decline in the event description covers it, so every client gets one-click RSVP. For native Gmail RSVP, use a non-Gmail (custom-domain) organizer.
Agent-native (no API key): the invite link self-describes —
GET /p/i/<token>/agent.json returns the options, your current vote, and the
one-click vote URLs (also feed.ics, and /s/<slot>/<yes|maybe|no> to vote).
Hand your assistant the link and it RSVPs for you. See /llms.txt.
See docs/design/reverse-calendar-imip.md and issue #23 for the full design.
Deployment model
Kairos trusts identity headers from whatever reverse proxy you already run
(KAIROS_AUTH=header): Shibboleth/Apache, oauth2-proxy, Authelia, Cloudflare
Access, Tailscale… Respondents never need accounts — share links and invite
tokens are self-contained. See kairos/settings.py for all env knobs.
Cookie note for operators: Kairos sets only strictly-necessary cookies (session, signed response-edit token, theme preference) — disclosed on
/privacy, no consent banner required (ePrivacy Art. 5(3) / Swiss TCA 45c exemptions). If you add analytics or any third-party embeds to your deployment, that changes — you'll need consent management.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gerchowl/kairos'
If you have feedback or need assistance with the MCP directory API, please join our Discord server