On 2026-10-20, calling create_calendar_event on Send Out built an RFC 5545 .ics file (with a Europe/Paris VTIMEZONE block) and a 158-character Google Calendar template URL for a 45-minute "Sprint Review" on 2026-11-02 at 15:00 Paris time (14:00 to 14:45 UTC) in 814 ms, compared with 60,000 ms of manual form clicks on iCal Event Maker and 5,314 ms writing a script with the ics npm library. A second call to draft_email generated a 289-character RFC 6068 mailto: link and an RFC 822 .eml email draft with X-Unsent: 1 in 396 ms.
Giving an AI agent OAuth write access to your Google Calendar or Gmail account means one hallucinated recipient or date immediately sends an invite or email to real people. The Send Out MCP server (https://sendout.openkrill.app/mcp) keeps the human in the loop: it needs no account or OAuth token, sends nothing itself, and returns ready-to-open links and standard files that you review and save in your own calendar, email, WhatsApp, Obsidian or X client.
1. Build an RFC 5545 .ics calendar invite and Google Calendar link in one call
When scheduling an event across time zones, two details frequently break in hand-written LLM output: daylight-saving transitions (European summer time ends on 2026-10-25, so Paris is UTC+1 CET on 2026-11-02) and the CRLF (\r\n) line endings required by RFC 5545 section 3.1.
Here is the exact JSON-RPC call from our saved 2026-10-20 ranking run for a 45-minute "Sprint Review" in Room 4B on 2026-11-02 at 15:00 Europe/Paris:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_calendar_event",
"arguments": {
"title": "Sprint Review",
"start": "2026-11-02T15:00",
"timezone": "Europe/Paris",
"duration_minutes": 45,
"location": "Room 4B"
}
}
}
In 814 ms, create_calendar_event returned both the pre-filled Google Calendar web intent URL (with dates=20261102T140000Z/20261102T144500Z and ctz=Europe%2FParis) and the complete sprint-review.ics file:
{
"status": "ok",
"google_calendar_url": "https://calendar.google.com/calendar/render?action=TEMPLATE&text=Sprint%20Review&dates=20261102T140000Z/20261102T144500Z&location=Room%204B&ctz=Europe%2FParis",
"filename": "sprint-review.ics",
"url_length": 158,
"warning": null,
"ics_content": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//OpenKrill//SendOut//EN\r\nCALSCALE:GREGORIAN\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/Paris\r\nBEGIN:STANDARD\r\nDTSTART:19700101T000000\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:+0100\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nUID:20261020T060643Z-1f7a81cd5cb6@openkrill.app\r\nDTSTAMP:20261020T060643Z\r\nDTSTART;TZID=Europe/Paris:20261102T150000\r\nDTEND;TZID=Europe/Paris:20261102T154500\r\nSUMMARY:Sprint Review\r\nLOCATION:Room 4B\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"
}
2. Draft an email with a mailto link and an X-Unsent .eml file
The draft_email tool accepts body (required, up to 50,000 characters) and optional to, cc, bcc, subject and filename. Here is the saved 2026-10-20 call drafting follow-up notes for the Sprint Review:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "draft_email",
"arguments": {
"to": "team@example.com",
"subject": "Sprint Review Notes - 2026-11-02",
"body": "Here are the action items from our Sprint Review in Room 4B:\n1. Ship the Q4 onboarding fix by Thursday.\n2. Confirm EU VAT check logs.",
"cc": "pm@example.com",
"filename": "sprint-review-notes.eml"
}
}
}
In 396 ms, draft_email returned a 289-character mailto_url (character_count: 133, warning: null) and an RFC 822 / 5322 .eml file containing the X-Unsent: 1 header:
To: team@example.com
Cc: pm@example.com
Subject: Sprint Review Notes - 2026-11-02
Date: Tue, 20 Oct 2026 10:23:49 GMT
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Unsent: 1
Here are the action items from our Sprint Review in Room 4B:
1. Ship the Q4 onboarding fix by Thursday.
2. Confirm EU VAT check logs.
Because X-Unsent: 1 is set, opening sprint-review-notes.eml in Apple Mail, Microsoft Outlook or Mozilla Thunderbird launches an editable compose window rather than a read-only received message. If the encoded mailto: URL exceeds 2,000 characters, warning flags the length limit so the agent hands the user the .eml file instead.
3. All 6 tools on the Send Out MCP server
Calling tools/list on https://sendout.openkrill.app/mcp exposes 6 tools:
create_calendar_event: RFC 5545.icscalendar invite and Google Calendar template URL for timed or all-day events, with optionalreminder_minutes(VALARM).draft_email: RFC 6068mailto:link and RFC 822.emldraft withX-Unsent: 1.create_whatsapp_link: officialwa.meclick-to-chat deep link with normalized phone digits and message length check (up to 4,096 characters).create_obsidian_note:obsidian://newdeep link plus full Markdown text with YAML frontmatter and tags.create_x_post:x.com/intent/tweetshare link with X's 23-character URL weighting andis_within_free_limitcheck (280 characters).create_markdown_file: standalone Markdown (.md) document with YAML frontmatter, byte count, word count and line count.prepare_transfer: optional temporary hosted download link (1 to 168 hours TTL, SHA-256 checksum) when a user explicitly asks for a hosted file download URL.
4. How Send Out compares with iCal Event Maker, the ics npm library and Google Calendar
On 2026-10-20 we compared Send Out against three ways of creating the same 45-minute Europe/Paris Sprint Review event:
| Tool | Wall time | Outputs returned | Trade-offs |
|---|---|---|---|
OpenKrill Send Out (create_calendar_event) |
814 ms | RFC 5545 .ics file (Europe/Paris VTIMEZONE) + 158-char Google Calendar link |
One keyless MCP call; also drafts emails, WhatsApp links, Obsidian notes and X posts |
iCal Event Maker (ical.marudot.com) |
60,000 ms | Downloadable .ics file with full Europe/Paris VTIMEZONE |
Browser form requiring ~12 manual clicks; no Google Calendar link, no email draft and no API |
ics npm library (github.com/adamgibbons/ics) |
5,314 ms | Valid .ics string (DTSTART:20261102T140000Z, DURATION:PT45M) |
Requires writing Node.js code and converting Europe/Paris to UTC by hand; no Google Calendar link |
Google Calendar web app (calendar.google.com) |
Not run | Blocked without Google login | Requires signing in to a Google account to create and export an event |
5. Connect Send Out in Claude Desktop, Cursor or any MCP client
{
"mcpServers": {
"send-out": {
"type": "streamable-http",
"url": "https://sendout.openkrill.app/mcp"
}
}
}
Frequently asked questions
How can I create an .ics calendar file and a Google Calendar link for a 45-minute meeting in Europe/Paris?
Call create_calendar_event on https://sendout.openkrill.app/mcp with title ("Sprint Review"), start ("2026-11-02T15:00"), timezone ("Europe/Paris"), duration_minutes (45) and location ("Room 4B"). In one call, the server converts 15:00 CET to 14:00 UTC for the Google Calendar template link and returns CRLF-delimited RFC 5545 .ics text with a Europe/Paris VTIMEZONE block.
How do I create a pre-filled mailto link and an RFC 822 .eml email draft without giving an AI agent access to my inbox?
Call draft_email on sendout.openkrill.app/mcp with body and optional to, cc, bcc, subject and filename. Nothing is sent or stored; the tool returns an RFC 6068 mailto: URI and a downloadable .eml draft containing X-Unsent: 1 so Apple Mail, Outlook or Thunderbird opens the message in compose mode for you to review and send.
What happens if an email body or note makes a mailto or Obsidian link longer than 2,000 characters?
Many mail and desktop clients truncate or reject URIs over 2,000 characters. When url_length exceeds safe client limits, draft_email and create_obsidian_note set a warning message and advise passing the full .eml or Markdown text to the user instead.
What other handoff artifacts can Send Out generate besides calendar events and emails?
The MCP server at https://sendout.openkrill.app/mcp provides 6 tools with no API key (up to 60 calls a minute per network): create_calendar_event, draft_email, create_whatsapp_link (wa.me click-to-chat links), create_obsidian_note (obsidian://new links plus YAML-frontmatter Markdown), create_x_post (x.com share links with 280-character checks) and create_markdown_file (standalone .md files), plus prepare_transfer for temporary hosted file downloads.