Docs

Three ways to reach a person's bubbles, and one way to sign in for all of them: the person approves once on sixteenbridges.com.

Three ways in

If you can run commands, start with the CLI: it signs in, renews tokens and retries for you. MCP clients use the MCP server. Anything else talks to the REST API.

How sign-in works

All three use OAuth 2.1 with PKCE. The authorization server is Sixteen Bridges' Supabase Auth, and apps register themselves (dynamic client registration), so there is nothing to set up in advance.

  1. The app asks the API (or the MCP server) where to sign in, and registers itself once.
  2. It sends the person to sixteenbridges.com, where they sign in and click Allow.
  3. It swaps the code it gets back for an access token (about an hour) and a refresh token.
  4. It renews with the refresh token. Each refresh token works once: save the new one each time.
The person can disconnect any app on their account page. Its tokens stop working within a minute, and its refresh token at once. An app's token reaches bubbles only, never the account itself.

What a bubble is

Saved context, owned by one person: a note, an AI chat, a Markdown file. Every way in returns the same shape.

Bubble
{
  "id": "bub_0195f3a2-8c41-7e3b-9f2a-1d4e6b8c0a00",
  "title": "Lisbon trip",
  "content": "# Day 1\nTrams, then Sintra.",
  "preview": "# Day 1\nTrams, then Sintra.",
  "content_bytes": 27,
  "source": { "kind": "claude", "label": "Trip chat", "url": null },
  "shared_from": null,
  "created_at": "2026-10-27T09:41:00.000+00:00",
  "updated_at": null
}
Bubble fields
idstringbub_ followed by a UUID v7, so ids sort by creation time.
titlestring1–120 characters, unique among yours: a repeat is saved as "Title (2)".
contentstringMarkdown, as saved. Lists leave it out; preview has the first 280 characters.
content_bytesintegerUTF-8 bytes: the unit every limit uses.
sourceobjectkind (who saved it: claude, chatgpt, gemini, grok, perplexity, cli, api, other, paste, upload_md), an optional label, an optional https url.
shared_fromobjectOn a copy someone shared with you: their email and the share_id. null on your own.
created_at, updated_atstringISO 8601 times; updated_at is null until the first change.

Limits

WhatFree plan
Bubbles20
Size of one bubble512 KB of text
Title120 characters
TrashDeleted bubbles stay 7 days, then are deleted for good. Only the website deletes at once.
SharingUp to 20 bubbles at once, 20 tries a day