| name | calendar-bridge |
| description | Interact with the Calendar Bridge — a self-hosted Node.js service that provides a persistent REST API for Google Calendar events. Handles OAuth token auto-refresh so you never have to re-authenticate. Use when checking upcoming events, listing calendars, setting up Google Calendar access, or troubleshooting calendar auth. |
| homepage | https://github.com/DanielKillenberger/gcal-oauth-bridge |
| version | 1.0.2 |
| read_when | ["User asks about upcoming events or calendar","User asks what's scheduled or what meetings they have","Calendar Bridge setup or troubleshooting needed"] |
| metadata | {"openclaw":{"emoji":"📅","requires":{"env":["GOOGLE_CLIENT_ID","GOOGLE_CLIENT_SECRET"]},"optional":{"env":["CALENDAR_BRIDGE_API_KEY"]},"notes":"GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET are required for initial OAuth setup only — once authenticated, the agent only needs network access to localhost:3000. CALENDAR_BRIDGE_API_KEY is optional; if set, the agent must send it as Authorization: Bearer <key> when calling /events. Tokens stored locally in tokens.json on your server, never sent externally."}} |
| triggers | ["what's on my calendar","upcoming events","check my calendar","do I have anything scheduled","what meetings do I have","calendar today","calendar this week","calendar next week","list my calendars","google calendar","calendar bridge","set up calendar","calendar auth","calendar access","calendar not working"] |
Calendar Bridge Skill
Use this skill to interact with the Calendar Bridge service — a local REST API that wraps Google Calendar OAuth with persistent token storage and auto-refresh.
GitHub: https://github.com/DanielKillenberger/gcal-oauth-bridge
What is Calendar Bridge?
A tiny Node.js/Express service running at http://localhost:3000 that:
- Handles Google Calendar OAuth once via browser
- Stores and auto-refreshes tokens (solves the "token expired every 7 days" problem)
- Exposes a dead-simple REST API for events, calendars, and auth
API Endpoints
| Endpoint | Description |
|---|
GET /health | Service status + auth state |
GET /auth/url | Get OAuth consent URL |
GET /events?days=7 | Upcoming events from primary calendar |
GET /events?days=7&calendar=all | Events from ALL calendars |
GET /events?days=7&calendar=<id> | Events from a specific calendar |
GET /calendars | List all available calendars |
POST /auth/refresh | Force token refresh (normally automatic) |
Events response includes: id, summary, start, end, location, description, htmlLink, status, calendarId, calendarSummary
Checking Events
curl http://localhost:3000/events
curl http://localhost:3000/events?days=14&calendar=all
curl -H "Authorization: Bearer $API_KEY" http://localhost:3000/events?calendar=all
To call from OpenClaw/skill context (no API key needed when running on same host):