---
title: "Return the Google and Microsoft work-calendar connection links plus the benefit explanation, so the agent can relay them to the user (connecting a calendar lets Bubbles auto-join and take notes). Signup is complete with or without connecting — the user can skip."
method: POST
path: "/v1/signup/calendar"
---

# Return the Google and Microsoft work-calendar connection links plus the benefit explanation, so the agent can relay them to the user (connecting a calendar lets Bubbles auto-join and take notes). Signup is complete with or without connecting — the user can skip.

`POST /v1/signup/calendar`

## Request

- Base URL: `https://api.usebubbles.com`
- URL: `https://api.usebubbles.com/v1/signup/calendar`
- Auth: none required

## Request body

- SignupCalendarRequest: POST /v1/signup/calendar request body.
  - `signup_session` string, required: A verified signup token.

## Response `200`

Success.

- SignupCalendarResponse: POST /v1/signup/calendar response — calendar connect links + MCP connect + skip.
  - `next_step` 'done', required: Signup is complete after this step.
  - `why` string[], required: The benefits of connecting a work calendar.
  - `google_connect_url` string, required: Link for the user to connect Google Calendar.
  - `microsoft_connect_url` string, required: Link for the user to connect Microsoft/Outlook Calendar.
  - `skip` boolean, required: Always true — the user may skip connecting a calendar.
  - `mcp` SignupMcpConnect, required: How to connect an AI assistant to Bubbles over MCP, plus the connected server's tools. Reuses the same OAuth 2.1 / dynamic-client-registration / RFC-9728 flow as the documented MCP server — no second connect surface.
    - `endpoint` string, required: The Bubbles MCP server URL to add to an MCP client.
    - `oauth_protected_resource` string, required: The RFC 9728 protected-resource metadata URL an MCP client discovers the authorization server from.
    - `scopes` string[], required: The OAuth scopes the connected client may be granted.
    - `how_to_connect` string, required: Provider-agnostic, step-by-step connect instructions (add the URL, one-time browser consent) for the agent to relay.
    - `tools` SignupMcpTool[], required: The tools the connected MCP server exposes.
      - `name` string, required: The tool name (e.g. "search_bubbles").
      - `title` string, required: The human-readable tool title.
      - `kind` 'read' | 'write', required: Whether the tool only reads data or performs a write action.
      - `summary` string, required: A one-line summary of what the tool does.
  - `agent_context` string, required: Agent-facing guidance for this step: what happened, what to tell the user, and what to ask/call next.
  - `relay_to_user` string, required: Plain-language text for the agent to show the user.
  - `signup_session` string, required: The signup token (signup is complete).

## Other responses

- `400`: A query parameter or request body was malformed (invalid_request).
- `500`: An unexpected server error occurred (internal_error).

---

[API](https://skmtc.dev/usebubbles/apis/bubbles-public-api.md) - [All operations](https://skmtc.dev/usebubbles/apis/bubbles-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usebubbles/apis/bubbles-public-api/revisions/31570f5d4b05?raw)
