seo
Integrations directory, changelog, showcase
- ·Added /integrations page with setup guides for 14 MCP clients.
- ·Per-client deep-dive pages: Claude Desktop, Claude Code, Cursor, OpenClaw.
- ·/changelog (this page), /showcase gallery, and Outlook/iCloud waitlist landing pages.
- ·Sitemap and footer updated with all new routes.
blog
Blog posts on scheduling, executive assistant, and MCP patterns
- ·Published five trickle-scheduled blog posts covering real CalendarMCP workflows.
- ·Topics: travel planning, executive assistant patterns, scheduling automation, team coordination.
- ·Force-dynamic rendering on blog slug pages so scheduled posts unhide on time.
ops
Stray edit capture + blog infrastructure cleanup
- ·Captured uncommitted edits from prior automated runs.
- ·Blog infrastructure stabilization: slug routing, publish-date filtering, sitemap sync.
feature
Ops hardening: test-connection, rate limiting, per-key last-used
- ·Added test_connection tool. Agents can verify auth without touching real calendar data.
- ·Per-key rate limiting at the API layer. Default: 100 requests per 60-second window.
- ·last_used timestamp now tracked per API key. Visible on the dashboard.
- ·registerTool utility for cleaner tool registration without boilerplate.
- ·CI smoke test and deploy health check on every push to master.
feature
Per-calendar read/write permissions matrix
- ·Dashboard now shows a read/write toggle per calendar per Google connection.
- ·Agents are blocked from writing to read-only calendars at the API layer.
- ·Read-only guard returns a descriptive error: "Calendar is configured as read-only."
- ·Matrix grouped by connection for accounts with many calendars.
- ·Long calendar IDs truncated in the UI to prevent table overflow.
feature
Multi-connection accounts + per-connection calendar management
- ·A single API key can now hold multiple Google Calendar connections (e.g., work + personal).
- ·Dashboard "Add calendar" affordance per connection.
- ·Service account email shown inline in the connection Manage panel.
- ·Docs updated to reflect multi-connection model.
security
Auth hardening, PostHog analytics, SEO landing pages
- ·Closed an auth bypass in the OAuth connect flow. Setup flow locked down.
- ·Removed hardcoded Supabase service key that was present in an early commit.
- ·OAuth reconnect path correctly branches between update vs. insert.
- ·PostHog installed with a first-party proxy at /api/ph. Event catalog documented.
- ·Added sitemap.ts, robots.txt, and improved OG/meta tags across all routes.
- ·New SEO landing pages: /pricing, /use-cases, /advanced-protection.
- ·Homepage redesigned as a full marketing landing page.
- ·Blog infrastructure added with first 5 scheduled posts.
feature
batch_update_events, list_events pagination, /docs page
- ·batch_update_events: update up to 50 events in a single concurrent API call.
- ·list_events now supports pagination (pageToken) and a q search param.
- ·Added /docs page with human-readable tool documentation.
- ·/api/docs returns machine-readable JSON schema for all 10 tools.
- ·update_event gains: reminders, transparency, visibility, colorId, attendees, recurrence.
feature
All-day event support
- ·create_event and update_event accept startDate/endDate (YYYY-MM-DD) for all-day events.
- ·All-day events use Google Calendar date fields, not datetime. Correct behavior for full-day blocks.
infra
Domain migration to calendarmcp.ai, logo and favicon
- ·All URLs migrated from calendarmcp.vercel.app to calendarmcp.ai.
- ·New logo, favicon, and app icons across all pages.
feature
Multi-calendar support and service account setup flow
- ·list_calendars returns all calendars on the connected account.
- ·All 10 tools accept a calendarId param to target a specific calendar.
- ·Service account setup wizard at /setup/service-account for Google Advanced Protection users.
infra
Multi-user OAuth system and API key auth
- ·Full multi-user OAuth flow replacing single service account.
- ·Each user gets an isolated API key (cal_...) after connecting Google.
- ·Supabase schema: users, connections, api_keys tables. Keys use md5+random default.
- ·Lazy Supabase init for Vercel cold-start compatibility.
feature
Dual-mode auth: OAuth2 + service account
- ·Two auth paths: standard Google OAuth and service account (for Advanced Protection).
- ·manage_attendees re-enabled after fixing sendUpdates defaulting to "none".
- ·Advanced Protection constraint and attendee limitations documented.
launch
Initial release
- ·Google Calendar MCP server with 9 tools: list_events, get_event, create_event, update_event, delete_event, quick_add_event, list_calendars, find_free_time, manage_attendees.
- ·Single-user service account auth.
- ·Deployed on Vercel. Auto-deploy on push to master.