{"openapi":"3.1.0","info":{"title":"AllMyMeetings API","summary":"Calendar sync platform MCP and webhook surfaces.","description":"AllMyMeetings exposes calendar operations via an MCP (Model Context Protocol) server and receives real-time change notifications from calendar providers via webhook endpoints. Primary programmatic access is through the MCP JSON-RPC endpoint documented here; use an MCP-aware client (Claude Desktop, Perplexity, OpenClaw, etc.) to consume it.","version":"1.0.0","contact":{"name":"AllMyMeetings","url":"https://staging.allmymeetings.com/developers"},"license":{"name":"Proprietary","url":"https://staging.allmymeetings.com/terms"},"termsOfService":"https://staging.allmymeetings.com/terms"},"servers":[{"url":"https://staging.allmymeetings.com","description":"Production"}],"externalDocs":{"description":"Developer resources","url":"https://staging.allmymeetings.com/developers"},"tags":[{"name":"MCP","description":"Model Context Protocol JSON-RPC endpoints"},{"name":"Webhooks","description":"Inbound webhook receivers from calendar providers and billing"}],"paths":{"/mcp/calendar":{"post":{"tags":["MCP"],"summary":"Calendar MCP server (JSON-RPC)","description":"Streamable-HTTP MCP endpoint exposing 20 tools (calendar CRUD, sync-pair management, scheduling links, availability, conflict detection) and 4 resources. Requires a Sanctum personal access token minted at /settings/api.","operationId":"mcpCalendarInvoke","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcRequest"}}}},"responses":{"200":{"description":"JSON-RPC response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/mcp/provisioning":{"post":{"tags":["MCP"],"summary":"Provisioning MCP server (JSON-RPC)","description":"Partner-only MCP endpoint for issuing tokens and provisioning accounts. Requires a provisioning API key in the X-Provisioning-Key header.","operationId":"mcpProvisioningInvoke","security":[{"provisioningKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcRequest"}}}},"responses":{"200":{"description":"JSON-RPC response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/webhooks/google":{"post":{"tags":["Webhooks"],"summary":"Google Calendar push notification","description":"Receives Google Calendar push notifications (resource changes). Called by Google; not intended for third-party invocation.","operationId":"webhookGoogle","parameters":[{"name":"X-Goog-Channel-ID","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Goog-Resource-ID","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Goog-Resource-State","in":"header","required":true,"schema":{"type":"string","enum":["sync","exists","not_exists"]}}],"responses":{"200":{"description":"Notification acknowledged"}}}},"/api/webhooks/microsoft":{"post":{"tags":["Webhooks"],"summary":"Microsoft Graph change notification","description":"Receives Microsoft Graph change notifications for Outlook calendar subscriptions. Called by Microsoft; not intended for third-party invocation.","operationId":"webhookMicrosoft","responses":{"200":{"description":"Notification acknowledged"}}}},"/api/webhooks/stripe":{"post":{"tags":["Webhooks"],"summary":"Stripe billing event","description":"Receives Stripe billing webhooks for subscription lifecycle events. Called by Stripe; not intended for third-party invocation.","operationId":"webhookStripe","parameters":[{"name":"Stripe-Signature","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Event acknowledged"}}}},"/.well-known/mcp/server-card.json":{"get":{"tags":["MCP"],"summary":"MCP server card","description":"Returns the MCP server card (SEP-1649) describing transport, capabilities, authentication, and server identity.","operationId":"mcpServerCard","responses":{"200":{"description":"MCP server card","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/api-catalog":{"get":{"tags":["MCP"],"summary":"API catalog linkset","description":"Returns an RFC 9727 linkset describing all agent-relevant service endpoints and documentation.","operationId":"apiCatalog","responses":{"200":{"description":"API catalog","content":{"application/linkset+json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Sanctum Personal Access Token","description":"Obtain a token at https://staging.allmymeetings.com/settings/api. Pass as \"Authorization: Bearer <token>\"."},"provisioningKey":{"type":"apiKey","in":"header","name":"X-Provisioning-Key","description":"Partner-only provisioning API key. Contact support to request access."}},"schemas":{"JsonRpcRequest":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]},"method":{"type":"string","description":"MCP method name (e.g. \"tools/list\", \"tools/call\", \"resources/read\")."},"params":{"type":"object"}}},"JsonRpcResponse":{"type":"object","required":["jsonrpc"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]},"result":{"type":"object","description":"Method result on success."},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"responses":{"Unauthorized":{"description":"Authentication required or token invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"RateLimited":{"description":"Request rate limit exceeded for the current plan tier","headers":{"Retry-After":{"schema":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}]}