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
- CLIThe sixteenbridges command
- MCPFor Claude, ChatGPT, Cursor and other MCP clients
- REST APIFor your own code
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.
- The app asks the API (or the MCP server) where to sign in, and registers itself once.
- It sends the person to sixteenbridges.com, where they sign in and click Allow.
- It swaps the code it gets back for an access token (about an hour) and a refresh token.
- 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
}idstring | bub_ followed by a UUID v7, so ids sort by creation time. |
|---|---|
titlestring | 1–120 characters, unique among yours: a repeat is saved as "Title (2)". |
contentstring | Markdown, as saved. Lists leave it out; preview has the first 280 characters. |
content_bytesinteger | UTF-8 bytes: the unit every limit uses. |
sourceobject | kind (who saved it: claude, chatgpt, gemini, grok, perplexity, cli, api, other, paste, upload_md), an optional label, an optional https url. |
shared_fromobject | On a copy someone shared with you: their email and the share_id. null on your own. |
created_at, updated_atstring | ISO 8601 times; updated_at is null until the first change. |
Limits
| What | Free plan |
|---|---|
| Bubbles | 20 |
| Size of one bubble | 512 KB of text |
| Title | 120 characters |
| Trash | Deleted bubbles stay 7 days, then are deleted for good. Only the website deletes at once. |
| Sharing | Up to 20 bubbles at once, 20 tries a day |