{
  "info": {
    "name": "Bubble — mcp.ai",
    "description": "REST API for the Bubble MCP. Set {{apiKey}} to a workspace key (sk_live_…) created at https://mcp.ai/settings/api-keys.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.mcp.ai/api/bubble",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "sk_live_...",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "bubble_data_bulk_create_things",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/data/bulk/create/things",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "data",
            "bulk",
            "create",
            "things"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"items\": \"\",\n  \"typename\": \"\",\n  \"subdomain\": \"\",\n  \"custom_domain\": \"\",\n  \"full_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_data_create_thing",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/data/create/thing",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "data",
            "create",
            "thing"
          ]
        },
        "description": "Tool to create a new Thing. Use when providing a complete JSON payload to add a new record.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"fields\": {},\n  \"typename\": \"\",\n  \"subdomain\": \"\",\n  \"custom_domain\": \"\",\n  \"full_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_data_delete_thing_by_id",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/data/delete/thing/by/id",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "data",
            "delete",
            "thing",
            "by",
            "id"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"uid\": \"\",\n  \"typename\": \"\",\n  \"subdomain\": \"\",\n  \"custom_domain\": \"\",\n  \"full_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_data_get_thing_by_id",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/data/get/thing/by/id",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "data",
            "get",
            "thing",
            "by",
            "id"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"uid\": \"\",\n  \"typename\": \"\",\n  \"subdomain\": \"\",\n  \"custom_domain\": \"\",\n  \"full_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_data_patch_thing_by_id",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/data/patch/thing/by/id",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "data",
            "patch",
            "thing",
            "by",
            "id"
          ]
        },
        "description": "Tool to modify selected fields on a Thing by its unique ID. Use after confirming the Thing exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"uid\": \"\",\n  \"typename\": \"\",\n  \"subdomain\": \"\",\n  \"custom_domain\": \"\",\n  \"field_updates\": {},\n  \"full_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_data_put_replace_thing_by_id",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/data/put/replace/thing/by/id",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "data",
            "put",
            "replace",
            "thing",
            "by",
            "id"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"uid\": \"\",\n  \"data\": {},\n  \"typename\": \"\",\n  \"subdomain\": \"\",\n  \"custom_domain\": \"\",\n  \"full_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_file_download",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/file/download",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "file",
            "download"
          ]
        },
        "description": "Tool to download a file given its URL. Use when you need to retrieve file content for subsequent upload tests.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"url\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_file_temp_create",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/file/temp/create",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "file",
            "temp",
            "create"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"content\": \"\",\n  \"mimetype\": \"\",\n  \"subdomain\": \"\",\n  \"custom_domain\": \"\",\n  \"full_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_file_upload",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/file/upload",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "file",
            "upload"
          ]
        },
        "description": "Tool to upload a file to Bubble storage. Use when you need to store arbitrary files via Bubble's /fileupload endpoint.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"file\": {},\n  \"subdomain\": \"\",\n  \"custom_domain\": \"\",\n  \"additional_fields\": {},\n  \"full_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_meta_get_swagger_json",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/meta/get/swagger/json",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "meta",
            "get",
            "swagger",
            "json"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"subdomain\": \"\",\n  \"swagger_url\": \"\",\n  \"custom_domain\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_o_auth_access_token",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/o/auth/access/token",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "o",
            "auth",
            "access",
            "token"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"code\": \"\",\n  \"client_id\": \"\",\n  \"subdomain\": \"\",\n  \"grant_type\": \"\",\n  \"redirect_uri\": \"\",\n  \"client_secret\": \"\",\n  \"custom_domain\": \"\",\n  \"refresh_token\": \"\",\n  \"use_version_test\": false,\n  \"token_url_override\": \"\",\n  \"additional_body_fields\": {}\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_o_auth_register_app",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/o/auth/register/app",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "o",
            "auth",
            "register",
            "app"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"client_id\": \"\",\n  \"subdomain\": \"\",\n  \"extra_params\": {},\n  \"redirect_uri\": \"\",\n  \"client_secret\": \"\",\n  \"custom_domain\": \"\",\n  \"use_version_test\": false,\n  \"authorize_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_oauth_authorize",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/oauth/authorize",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "oauth",
            "authorize"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"scope\": \"\",\n  \"state\": \"\",\n  \"client_id\": \"\",\n  \"subdomain\": \"\",\n  \"extra_params\": {},\n  \"redirect_uri\": \"\",\n  \"custom_domain\": \"\",\n  \"response_type\": \"\",\n  \"use_version_test\": false,\n  \"authorize_url_override\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_workflow_trigger_get",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/workflow/trigger/get",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "workflow",
            "trigger",
            "get"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"branch\": \"\",\n  \"parameters\": {},\n  \"workflow_name\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "bubble_workflow_trigger_post",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/workflow/trigger/post",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "workflow",
            "trigger",
            "post"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"branch\": \"\",\n  \"parameters\": {},\n  \"workflow_name\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    }
  ]
}