Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
MCP Server for Google Calendar - list, search, create, update, delete events with OAuth 2.1 Google Calendar MCP Server Streamable HTTP MCP server for Google Calendar — manage events, check availability, and schedule meetings. Author: $1 [!WARNING] You connect this server to your MCP client at your own responsibility. Language models can make mistakes, misinterpret instructions, or perform unintended actions. Review tool outputs, verify changes (e.g., with search_events), and prefer small, incremental writes Published capability contract available. No trust telemetry is available yet. 44 GitHub stars reported by the source. Last updated 2/24/2026.
Freshness
Last checked 2/22/2026
Best For
Contract is available with explicit auth and schema references.
Not Ideal For
google-calendar-mcp is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.
Evidence Sources Checked
editorial-content, capability-contract, runtime-metrics, public facts pack
MCP Server for Google Calendar - list, search, create, update, delete events with OAuth 2.1 Google Calendar MCP Server Streamable HTTP MCP server for Google Calendar — manage events, check availability, and schedule meetings. Author: $1 [!WARNING] You connect this server to your MCP client at your own responsibility. Language models can make mistakes, misinterpret instructions, or perform unintended actions. Review tool outputs, verify changes (e.g., with search_events), and prefer small, incremental writes
Public facts
7
Change events
1
Artifacts
0
Freshness
Feb 22, 2026
Published capability contract available. No trust telemetry is available yet. 44 GitHub stars reported by the source. Last updated 2/24/2026.
Trust score
Unknown
Compatibility
MCP
Freshness
Feb 22, 2026
Vendor
Iceener
Artifacts
0
Benchmarks
0
Last release
1.0.0
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Published capability contract available. No trust telemetry is available yet. 44 GitHub stars reported by the source. Last updated 2/24/2026.
Setup snapshot
git clone https://github.com/iceener/google-calendar-streamable-mcp-server.gitSetup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Iceener
Protocol compatibility
MCP
Auth modes
mcp, api_key, oauth
Machine-readable schemas
OpenAPI or schema references published
Adoption signal
44 GitHub stars
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
bash
git clone <repo> cd google-calendar-mcp bun install cp env.example .env
env
PORT=3000 AUTH_ENABLED=true PROVIDER_CLIENT_ID=your_client_id PROVIDER_CLIENT_SECRET=your_client_secret OAUTH_SCOPES=https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly OAUTH_REDIRECT_URI=http://127.0.0.1:3001/oauth/callback OAUTH_REDIRECT_ALLOWLIST=alice://oauth/callback,http://127.0.0.1:3001/oauth/callback
bash
bun dev # MCP: http://127.0.0.1:3000/mcp # OAuth: http://127.0.0.1:3001
json
{
"mcpServers": {
"google-calendar": {
"command": "bunx",
"args": ["mcp-remote", "http://localhost:3000/mcp", "--transport", "http-only"],
"env": { "NO_PROXY": "127.0.0.1,localhost" }
}
}
}bash
openssl rand -base64 32
env
RS_TOKENS_ENC_KEY=your-32-byte-base64-key
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB MCP
Editorial quality
ready
MCP Server for Google Calendar - list, search, create, update, delete events with OAuth 2.1 Google Calendar MCP Server Streamable HTTP MCP server for Google Calendar — manage events, check availability, and schedule meetings. Author: $1 [!WARNING] You connect this server to your MCP client at your own responsibility. Language models can make mistakes, misinterpret instructions, or perform unintended actions. Review tool outputs, verify changes (e.g., with search_events), and prefer small, incremental writes
Streamable HTTP MCP server for Google Calendar — manage events, check availability, and schedule meetings.
Author: overment
[!WARNING] You connect this server to your MCP client at your own responsibility. Language models can make mistakes, misinterpret instructions, or perform unintended actions. Review tool outputs, verify changes (e.g., with
search_events), and prefer small, incremental writes.The HTTP/OAuth layer is designed for convenience during development, not production-grade security. If deploying remotely, harden it: proper token validation, secure storage, TLS termination, strict CORS/origin checks, rate limiting, audit logging, and compliance with Google's terms.
This repo works in two ways:
For production Cloudflare deployments, see Remote Model Context Protocol servers (MCP).
search_events searches all calendars by default — no setup neededPrerequisites: Bun, Node.js 20+, Google Cloud project. For remote: a Cloudflare account.
Set up Google Cloud Console:
Create Project & Enable API:
Configure OAuth Consent Screen (required before credentials):
../auth/calendar.events, ../auth/calendar.readonlyCreate Credentials:
http://127.0.0.1:3001/oauth/callbackConfigure environment:
git clone <repo>
cd google-calendar-mcp
bun install
cp env.example .env
Edit .env:
PORT=3000
AUTH_ENABLED=true
PROVIDER_CLIENT_ID=your_client_id
PROVIDER_CLIENT_SECRET=your_client_secret
OAUTH_SCOPES=https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly
OAUTH_REDIRECT_URI=http://127.0.0.1:3001/oauth/callback
OAUTH_REDIRECT_ALLOWLIST=alice://oauth/callback,http://127.0.0.1:3001/oauth/callback
bun dev
# MCP: http://127.0.0.1:3000/mcp
# OAuth: http://127.0.0.1:3001
Tip: The Authorization Server runs on PORT+1 (3001 by default).
Claude Desktop / Cursor:
{
"mcpServers": {
"google-calendar": {
"command": "bunx",
"args": ["mcp-remote", "http://localhost:3000/mcp", "--transport", "http-only"],
"env": { "NO_PROXY": "127.0.0.1,localhost" }
}
}
}
Generate an encryption key for secure token storage:
openssl rand -base64 32
Add to .env:
RS_TOKENS_ENC_KEY=your-32-byte-base64-key
bun x wrangler dev --local | cat
With OAuth:
bun x wrangler secret put PROVIDER_CLIENT_ID
bun x wrangler secret put PROVIDER_CLIENT_SECRET
bun x wrangler dev --local | cat
Endpoint: http://127.0.0.1:8787/mcp
bun x wrangler kv:namespace create TOKENS
Output will show:
Add the following to your wrangler.toml:
[[kv_namespaces]]
binding = "TOKENS"
id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
wrangler.toml with your KV namespace ID:[[kv_namespaces]]
binding = "TOKENS"
id = "your-kv-namespace-id-from-step-1"
bun x wrangler secret put PROVIDER_CLIENT_ID
bun x wrangler secret put PROVIDER_CLIENT_SECRET
# Generate encryption key (32-byte base64url):
openssl rand -base64 32 | tr -d '=' | tr '+/' '-_'
bun x wrangler secret put TOKENS_ENC_KEY
Note:
TOKENS_ENC_KEYencrypts OAuth tokens stored in KV (AES-256-GCM). Without it, tokens are stored unencrypted!
wrangler.toml:OAUTH_REDIRECT_URI = "https://your-worker.your-subdomain.workers.dev/oauth/callback"
OAUTH_REDIRECT_ALLOWLIST = "alice://oauth/callback,https://your-worker.your-subdomain.workers.dev/oauth/callback"
Add Workers URL to your Google Cloud OAuth app's redirect URIs
Deploy:
bun x wrangler deploy
Endpoint: https://<worker-name>.<account>.workers.dev/mcp
Claude Desktop has short timeouts that can kill the OAuth flow mid-process. Pre-authenticate manually first:
# Authenticate (complete Google sign-in when browser opens)
npx mcp-remote https://your-worker.workers.dev/mcp --transport http-only
Once you see "Authentication successful!", tokens are cached and Claude Desktop will use them.
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": ["mcp-remote", "http://127.0.0.1:3000/mcp", "--transport", "http-only"],
"env": { "NO_PROXY": "127.0.0.1,localhost" }
}
}
}
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": ["mcp-remote", "https://your-worker.workers.dev/mcp", "--transport", "http-only"]
}
}
}
If you get ReadableStream is not defined or similar errors, Claude Desktop may be using an old Node version. Fix by specifying the full path:
{
"mcpServers": {
"google-calendar": {
"command": "/Users/YOUR_USER/.nvm/versions/node/v22.0.0/bin/npx",
"args": ["mcp-remote", "https://your-worker.workers.dev/mcp", "--transport", "http-only"],
"env": {
"PATH": "/Users/YOUR_USER/.nvm/versions/node/v22.0.0/bin:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
Find your node path with: which node
bunx @modelcontextprotocol/inspector
# Connect to: http://localhost:3000/mcp (local) or https://your-worker.workers.dev/mcp (remote)
list_calendarsDiscover available calendars and their IDs. Usually not needed since search_events searches all calendars by default.
// Input
{}
// Output
{
items: Array<{
id, summary, primary?, backgroundColor?,
accessRole, timeZone, description?
}>;
}
search_eventsSearch events across all calendars by default. Returns merged results sorted by start time.
// Input
{
calendarId?: string | string[]; // Default: "all" (searches ALL calendars)
// Can be: "all", single ID, or array of IDs
timeMin?: string; // ISO 8601
timeMax?: string; // ISO 8601
query?: string; // Text search
maxResults?: number; // Default: 50 (total across all calendars)
eventTypes?: string[]; // default, birthday, focusTime, outOfOffice
orderBy?: "startTime" | "updated";
fields?: string[]; // Control output verbosity
pageToken?: string; // Pagination (single calendar only)
}
// Output
{
items: Array<{
id, summary, start, end, location?,
calendarId, calendarName, // NEW: which calendar this event belongs to
htmlLink, status, attendees?, hangoutLink?
}>;
calendarsSearched: string[]; // List of calendars that were searched
nextPageToken?: string;
}
Note: Each event includes
calendarIdandcalendarNameso you know which calendar it belongs to. Use thiscalendarIdwhen callingupdate_eventordelete_event.
check_availabilityCheck free/busy status before scheduling.
// Input
{
timeMin: string; // ISO 8601 (required)
timeMax: string; // ISO 8601 (required)
calendarIds?: string[]; // Default: ["primary"]
}
// Output
{
calendars: {
[calendarId]: {
busy: Array<{ start, end }>;
}
}
}
create_eventCreate events using natural language OR structured input.
// Natural language mode
{
text: "Lunch with Anna tomorrow at noon for 1 hour";
calendarId?: string;
sendUpdates?: "all" | "externalOnly" | "none";
}
// Structured mode
{
summary: string; // Required
start: string; // ISO 8601 or YYYY-MM-DD
end: string; // ISO 8601 or YYYY-MM-DD
calendarId?: string;
description?: string;
location?: string;
attendees?: string[]; // Email addresses
addGoogleMeet?: boolean; // Auto-create Meet link
recurrence?: string[]; // RRULE array
visibility?: "default" | "public" | "private";
sendUpdates?: "all" | "externalOnly" | "none";
}
update_eventUpdate or move existing events (PATCH semantics).
{
eventId: string; // Required
calendarId?: string;
targetCalendarId?: string; // Move to different calendar
summary?: string;
start?: string;
end?: string;
description?: string;
location?: string;
attendees?: string[];
addGoogleMeet?: boolean;
sendUpdates?: "all" | "externalOnly" | "none";
}
delete_eventRemove an event from calendar.
{
eventId: string; // Required
calendarId?: string;
sendUpdates?: "all" | "externalOnly" | "none";
}
respond_to_eventAccept, decline, or tentatively accept an event invitation.
// Input
{
eventId: string; // Required
calendarId?: string; // Default: "primary"
response: "accepted" | "declined" | "tentative"; // Required
sendUpdates?: "all" | "externalOnly" | "none"; // Default: "all"
}
// Output
{
ok: true,
response: "accepted", // Your response
event: { ... } // Updated event
}
Note: Only works for events you were invited to. For events you created, you are the organizer, not an attendee.
{
"name": "search_events",
"arguments": {
"timeMin": "2025-01-15T00:00:00Z",
"timeMax": "2025-01-15T23:59:59Z"
}
}
No need to call
list_calendarsfirst —search_eventssearches all accessible calendars by default and shows which calendar each event belongs to.
{
"name": "create_event",
"arguments": {
"summary": "Team Standup",
"start": "2025-01-16T09:00:00+01:00",
"end": "2025-01-16T09:30:00+01:00",
"addGoogleMeet": true,
"attendees": ["alice@example.com", "bob@example.com"]
}
}
{
"name": "create_event",
"arguments": {
"text": "Coffee with Sarah next Monday at 3pm for 30 minutes"
}
}
{
"name": "check_availability",
"arguments": {
"timeMin": "2025-01-16T09:00:00Z",
"timeMax": "2025-01-16T18:00:00Z"
}
}
| Endpoint | Method | Purpose |
|----------|--------|---------|
| /mcp | POST | MCP JSON-RPC 2.0 |
| /mcp | GET | SSE stream (Node.js only) |
| /health | GET | Health check |
| /.well-known/oauth-authorization-server | GET | OAuth AS metadata |
| /.well-known/oauth-protected-resource | GET | OAuth RS metadata |
OAuth (PORT+1):
GET /authorize — Start OAuth flowGET /oauth/callback — Google callbackPOST /token — Token exchangePOST /revoke — Revoke tokensbun dev # Start with hot reload
bun run typecheck # TypeScript check
bun run lint # Lint code
bun run build # Production build
bun start # Run production
src/
├── shared/
│ ├── tools/
│ │ ├── list-calendars.ts
│ │ ├── search-events.ts
│ │ ├── check-availability.ts
│ │ ├── create-event.ts
│ │ ├── update-event.ts
│ │ └── delete-event.ts
│ ├── oauth/ # OAuth flow (PKCE, discovery)
│ └── storage/ # Token storage (file, KV, memory)
├── services/
│ └── google-calendar.ts # Google Calendar API client
├── config/
│ └── metadata.ts # Server & tool descriptions
├── index.ts # Node.js entry
└── worker.ts # Workers entry
| Issue | Solution |
|-------|----------|
| "Authentication required" | Complete OAuth flow. Run rm -rf ~/.mcp-auth and re-authenticate. |
| "redirect_uri_mismatch" | Google treats localhost and 127.0.0.1 as different. Use 127.0.0.1 consistently in both .env and Google Cloud Console. |
| "unknown_txn" error | Stale mcp-remote processes. Run pkill -9 -f mcp-remote && rm -rf ~/.mcp-auth then retry. |
| "ReadableStream is not defined" | Node.js version too old (needs 18+). Use full path to newer node in config. |
| "spawn bunx ENOENT" | Claude Desktop can't find bunx. Use npx instead, or specify full path. |
| "Another instance handling auth" | Kill zombie processes: pkill -9 -f mcp-remote && rm -rf ~/.mcp-auth |
| OAuth timeout in Claude | Claude kills auth flow too quickly. Pre-authenticate manually (see Client Configuration). |
| Token expired | Google tokens expire after 1 hour. Refresh tokens are used automatically if access_type=offline was set. |
| OAuth doesn't start (Worker) | curl -i -X POST https://<worker>/mcp should return 401 with WWW-Authenticate. |
| KV namespace error | Run wrangler kv:namespace create TOKENS and update wrangler.toml with the ID. |
| Tools empty in Claude | Ensure Worker returns JSON Schema for tools/list; use mcp-remote. |
Enable detailed logs with --debug:
npx mcp-remote https://your-worker.workers.dev/mcp --transport http-only --debug
Logs are written to ~/.mcp-auth/{hash}_debug.log.
Test auth flow independently:
npx -p mcp-remote@latest mcp-remote-client https://your-worker.workers.dev/mcp --transport http-only --debug
| Variable | Required | Description |
|----------|----------|-------------|
| PROVIDER_CLIENT_ID | ✓ | Google OAuth Client ID |
| PROVIDER_CLIENT_SECRET | ✓ | Google OAuth Client Secret |
| RS_TOKENS_ENC_KEY | Prod | 32-byte base64 key for token encryption |
| PORT | | MCP server port (default: 3000) |
| HOST | | Server host (default: 127.0.0.1) |
| LOG_LEVEL | | debug, info, warning, error |
| OAUTH_REDIRECT_URI | | Callback URL for OAuth |
| OAUTH_REDIRECT_ALLOWLIST | | Comma-separated allowed redirect URIs |
wrangler.toml vars:
AUTH_ENABLED = "true"
AUTH_STRATEGY = "oauth"
OAUTH_SCOPES = "https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly"
OAUTH_REDIRECT_URI = "https://your-worker.workers.dev/oauth/callback"
Secrets (set via wrangler secret put):
PROVIDER_CLIENT_ID — Google OAuth Client IDPROVIDER_CLIENT_SECRET — Google OAuth Client SecretTOKENS_ENC_KEY — 32-byte base64url encryption keyKV Namespace:
[[kv_namespaces]]
binding = "TOKENS"
id = "your-kv-namespace-id"
MIT
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
ready
Auth
mcp, api_key, oauth
Streaming
Yes
Data region
global
Protocol support
Requires: mcp, lang:typescript, streaming
Forbidden: none
Guardrails
Operational confidence: medium
curl -s "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
80
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
74
Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Rank
72
An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Contract JSON
{
"contractStatus": "ready",
"authModes": [
"mcp",
"api_key",
"oauth"
],
"requires": [
"mcp",
"lang:typescript",
"streaming"
],
"forbidden": [],
"supportsMcp": true,
"supportsA2a": false,
"supportsStreaming": true,
"inputSchemaRef": "https://github.com/iceener/google-calendar-streamable-mcp-server#input",
"outputSchemaRef": "https://github.com/iceener/google-calendar-streamable-mcp-server#output",
"dataRegion": "global",
"contractUpdatedAt": "2026-02-24T19:45:52.915Z",
"sourceUpdatedAt": "2026-02-24T19:45:52.915Z",
"freshnessSeconds": 4438253
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"MCP"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_MCP",
"generatedAt": "2026-04-17T04:36:46.518Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "MCP",
"type": "protocol",
"support": "supported",
"confidenceSource": "contract",
"notes": "Confirmed by capability contract"
},
{
"key": "mcp",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "model-context-protocol",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "streamable-http",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "oauth2",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "server",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "google-calendar",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:MCP|supported|contract capability:mcp|supported|profile capability:model-context-protocol|supported|profile capability:streamable-http|supported|profile capability:oauth2|supported|profile capability:server|supported|profile capability:google-calendar|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "MCP",
"href": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:45:52.915Z",
"isPublic": true
},
{
"factKey": "auth_modes",
"category": "compatibility",
"label": "Auth modes",
"value": "mcp, api_key, oauth",
"href": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:45:52.915Z",
"isPublic": true
},
{
"factKey": "schema_refs",
"category": "artifact",
"label": "Machine-readable schemas",
"value": "OpenAPI or schema references published",
"href": "https://github.com/iceener/google-calendar-streamable-mcp-server#input",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:45:52.915Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Iceener",
"href": "https://github.com/iceener/google-calendar-streamable-mcp-server",
"sourceUrl": "https://github.com/iceener/google-calendar-streamable-mcp-server",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "44 GitHub stars",
"href": "https://github.com/iceener/google-calendar-streamable-mcp-server",
"sourceUrl": "https://github.com/iceener/google-calendar-streamable-mcp-server",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-iceener-google-calendar-streamable-mcp-server/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to google-calendar-mcp and adjacent AI workflows.