# Bubble — how to use (mcp.ai)

Connect your Bubble account and use 15 tools for app builder straight from your AI agent. Connect with your own API key. Bubble is a visual programming language and a PaaS developed by Bubble Group.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_bubble?ms=1787295720000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `bubble_data_bulk_create_things`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/bubble`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/bubble/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/bubble/data/bulk/create/things` — Tool to bulk create multiple Things in Bubble via newline-separated JSON. Use when you need to insert many records at once. Must have Create via API permission.
  - body: { items: object[], typename: string, subdomain?: string, custom_domain?: string, full_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/data/create/thing` — Tool to create a new Thing. Use when providing a complete JSON payload to add a new record.
  - body: { fields: object, typename: string, subdomain?: string, custom_domain?: string, full_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/data/delete/thing/by/id` — Tool to delete a Bubble Thing by its unique ID. Use when you need to remove a specific record via the Bubble Data API.
  - body: { uid: string, typename: string, subdomain?: string, custom_domain?: string, full_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/data/get/thing/by/id` — Retrieves a single Thing (record) from a Bubble Data Type by its unique ID. This is a read-only operation that fetches complete details of a specific record. The response includes all custom fields de
  - body: { uid: string, typename: string, subdomain?: string, custom_domain?: string, full_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/data/patch/thing/by/id` — Tool to modify selected fields on a Thing by its unique ID. Use after confirming the Thing exists.
  - body: { uid: string, typename: string, subdomain?: string, custom_domain?: string, field_updates: object, full_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/data/put/replace/thing/by/id` — Tool to replace all editable fields on a Thing by its Unique ID. Use when you need a full overwrite of a Thing's fields and reset omitted fields to default.
  - body: { uid: string, data: object, typename: string, subdomain?: string, custom_domain?: string, full_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/file/download` — Tool to download a file given its URL. Use when you need to retrieve file content for subsequent upload tests.
  - body: { url: string }
- `POST https://api.mcp.ai/api/bubble/file/temp/create` — Tool to upload bytes as a temporary file to Cloudflare R2 and return an S3 key. Use when you need a short-lived file reference before persisting it in a Thing.
  - body: { name: string, content: string, mimetype: string, subdomain?: string, custom_domain?: string, full_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/file/upload` — Tool to upload a file to Bubble storage. Use when you need to store arbitrary files via Bubble's /fileupload endpoint.
  - body: { file: object, subdomain?: string, custom_domain?: string, additional_fields?: object, full_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/meta/get/swagger/json` — Tool to retrieve the auto-generated Swagger JSON for enabled APIs. Use after enabling the Swagger file in your Bubble app's API settings.
  - body: { subdomain?: string, swagger_url?: string, custom_domain?: string }
- `POST https://api.mcp.ai/api/bubble/o/auth/access/token` — Tool to exchange an authorization code or refresh token for an OAuth2 access token. Use after obtaining an authorization code or when refreshing an expired token.
  - body: { code?: string, client_id: string, subdomain?: string, grant_type?: string, redirect_uri: string, client_secret: string, custom_domain?: string, refresh_token?: string, use_version_test?: boolean, token_url_override?: string, additional_body_fields?: object }
- `POST https://api.mcp.ai/api/bubble/o/auth/register/app` — Tool to validate/initialize OAuth application credentials with Bubble. It performs a real call to Bubble's /oauth/authorize endpoint (or provided override) using client_id and redirect_uri to confirm 
  - body: { client_id: string, subdomain?: string, extra_params?: object, redirect_uri: string, client_secret?: string, custom_domain?: string, use_version_test?: boolean, authorize_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/oauth/authorize` — Tool to initiate OAuth2 authorization flow for Bubble. Use when setting up third-party login integration. Returns the URL for user-agent redirection to obtain an authorization code.
  - body: { scope?: string, state?: string, client_id: string, subdomain?: string, extra_params?: object, redirect_uri: string, custom_domain?: string, response_type?: string, use_version_test?: boolean, authorize_url_override?: string }
- `POST https://api.mcp.ai/api/bubble/workflow/trigger/get` — Trigger a Bubble API workflow using an HTTP GET request. API workflows are server-side workflows in Bubble that can be triggered externally. Use GET for simple workflows that don't require a request b
  - body: { branch?: string, parameters?: object, workflow_name: string }
- `POST https://api.mcp.ai/api/bubble/workflow/trigger/post` — Triggers a Bubble API workflow by name using a POST request. Use this tool to execute backend workflows in your Bubble application. The workflow must be configured in your Bubble app's API Workflows s
  - body: { branch?: string, parameters?: object, workflow_name: string }

## Example prompts
- "What can I do in Bubble?"
- "Show me a summary of my Bubble account"

## More
- Page: https://mcp.ai/bubble
- Agent spec (llms.txt): https://mcp.ai/bubble/llms.txt
- Postman collection: https://mcp.ai/bubble/postman.json
