{"schemaVersion":"1.0","name":"topcal","description":"Agent-native, multi-workspace scheduling. Every operation a human can do is reachable by a verified agent through the same typed surface.","homepage":"https://topcal.ai","documentation":"https://app.topcal.ai/docs","websiteEmbed":{"guide":"https://app.topcal.ai/docs/embed","scrapeTarget":"https://app.topcal.ai/docs/embed#topcal-website-embed","recommended":"html-button-link","dashboardPath":"Event Types → Share & embed","bookingUrlPattern":"https://topcal.ai/{workspace}/{username}/{eventSlug}","requiresApiKey":false,"requiresSdk":false,"note":"Paste a booking link, <a href> button, or iframe. Do not use REST/MCP/OpenAPI for a simple website CTA."},"transports":{"rest":{"baseUrl":"https://app.topcal.ai/api/v1","openapi":"https://app.topcal.ai/api/v1/openapi","spec":"openapi-3.1"},"mcp":{"baseUrl":"https://app.topcal.ai/api/mcp/mcp","transport":"streamable-http","spec":"modelcontextprotocol/2025-06-18","endpoints":{"streamableHttp":"https://app.topcal.ai/api/mcp/mcp","publicBooker":"https://topcal.ai/api/mcp/public/mcp"}}},"authentication":{"apiKey":{"scheme":"http-bearer","header":"Authorization","format":"Bearer tofu_(live|test)_<32-char-secret>","scopesUrl":"https://app.topcal.ai/docs/api-keys"},"agentIntent":{"scheme":"http-header","header":"X-Topcal-Agent-Intent","format":"JWT (HS256, 15-minute TTL by default)","issueOperation":"agent_verify_identity","revokeOperation":"agent_revoke_identity"}},"publicBooking":{"requiresApiKey":false,"antiAbuse":"email-otp + disposable-email block + per-email rate limit","webFetch":["GET /api/v1/public/{workspace}/{username} — list bookable event types (+ hostTimezone, invitee fields, form definitions)","GET /api/v1/public/{workspace}/{username}/{eventSlug}/slots — slots with UTC + bookerLocal display (pass timezone=<booker IANA>), availability.hostSchedule weekly hours, default limit 50, bookingProtocol (topcal.public_book.v1) + howToBook","GET /api/v1/public/{workspace}/{username}/{eventSlug}/otp?email=&startAt=&timezone=&name= — emails a 6-digit code; returns confirmUrl + codeExpiresInSeconds (use confirmUrl only — no separate token field)","GET /api/v1/public/{workspace}/{username}/{eventSlug}/confirm?confirmKey=&code= — verify confirmKey + OTP → { booking: { id, startAt, endAt, status, joinUrl? }, message }"],"rest":["POST /api/v1/public/{workspace}/{username}/{eventSlug}/otp","POST /api/v1/public/{workspace}/{username}/{eventSlug}/book"],"restBase":"https://topcal.ai/api/v1","mcp":{"endpoint":"https://topcal.ai/api/mcp/public/mcp","transport":"streamable-http","requiresAuth":false,"tools":["find_bookable_calendar","get_availability","request_booking_code","confirm_booking"]}},"capabilities":{"openBookerPlane":true,"agentSignup":true,"agentBilling":true,"agentBooking":true,"multiWorkspace":true,"configurableForms":true,"ruleBasedRouting":true,"googleCalendar":true,"microsoftCalendar":true,"caldav":false},"cli":{"name":"topcal","install":"npm install -g @topcal/cli","installScript":"https://app.topcal.ai/api/agent/install","bootstrapCommand":"curl -sL \"https://app.topcal.ai/api/agent/install\" | bash","skillUrl":"https://topcal.ai/skill/SKILL.md","setupPrompt":"Set up topcal from https://topcal.ai/skill/SKILL.md","authRegisterCommand":"topcal auth register --wait auto","calendarConnectCommand":"topcal calendars connect --provider google","loginCommand":"topcal login","auth":{"register":"https://app.topcal.ai/api/v1/cli/auth/register","poll":"https://app.topcal.ai/api/v1/cli/auth/poll","approvePage":"https://app.topcal.ai/cli/approve"}},"onboarding":{"homepage":"https://app.topcal.ai","skillUrl":"https://topcal.ai/skill/SKILL.md","setupPrompt":"Set up topcal from https://topcal.ai/skill/SKILL.md","scrapeTarget":"https://app.topcal.ai#topcal-agent-onboarding","jsonLdType":"AgentOnboarding"},"contact":{"support":"support@topcal.ai","issues":"https://github.com/bcharleson/topcal-app/issues"}}