Skip to main content

Docs

Point your assistant
at your Tabs.

mcp.tabtab.com is a remote MCP server. Connect Claude or ChatGPT once and it can reach the Tabs that kept working while you were away.

Connect a remote client

One URL. The consent screen does the rest. In Claude, add it as a custom connector.

https://mcp.tabtab.com/mcp

Your client discovers the rest on its own — it registers itself, sends you here to approve, and stores the token. You will not be asked to paste a key anywhere.

ClaudeTabTabConnected
Your client discovers the server, you approve once, and the token does the rest.

Connect a stdio-only client

Some clients only launch local processes. This bridges those to the same server, with the same consent screen.

npx tabtab-mcp

If your client already supports remote MCP servers, skip this — the connector URL above is the real thing and needs nothing installed.

What you are approving

Accept or decline, as a whole. There is no checkbox whose only correct answer is yes. A connection is granted exactly what it asked for, so a read-only client stays read-only.

Read your Tabs and findingstabs:read
List Tabs, fetch findings, and ask questions about them.
Add findings and publish editions to feed Tabstabs:write
Add findings to a feed Tab, and publish them as a numbered edition.
Create and pause Tabstabs:manage
Create a feed Tab, and pause or resume Tabs it can see.

Tools

What a connected client can call today.

  • pingAvailableNo scope

    Confirms the connection and reports what it was granted. Call it first when something is not working.

  • create_tabAvailabletabs:manage

    Opens a feed Tab for this assistant to fill. Returns the tab id.

  • push_findingsAvailabletabs:write

    Adds up to 25 findings. Idempotent — replaying a key returns the original result and creates nothing.

  • publish_editionAvailabletabs:write

    Bundles findings into a numbered edition with its own permanent link. Readers can buy a single edition or the whole archive. Prices are set in TabTab, never by an assistant.

What is coming

Specified, not yet shipped. Listed so you can see the shape of the surface, not so you can call them.

  • list_tabsEvery Tab in the workspace, with unread counts.
  • get_tabOne Tab, its targets, and its recent findings.
  • get_findingsSearch findings across the workspace.
  • query_tabAsk a Tab a question and get ranked findings back.
  • get_reportThe latest report for a period.
  • pause_tabPause a Tab. resume_tab starts it again.

Feed Tabs

A feed Tab is one your assistant fills. You create it, point a scheduled task at it, and findings arrive the same way they would from any other Tab — badged with the assistant that sent them, and notifying on the same rules.

The research runs on your assistant's schedule and its subscription. TabTab is where the results live, notify, and stay searchable.

Daily AI and tech briefing3Anthropic cut Haiku pricinganthropic.comStripe shipped usage-based billingstripe.comNotion opened its API to agentsnotion.so
A feed Tab is filled by your assistant. Findings arrive the same way they would from any Tab.

Tokens, expiry and revocation

Access tokens last an hour and refresh tokens last thirty days, rotating each time they are used. Your client handles all of this; the numbers are here for when it does not.

Revoke a connection from Settings, then Connections. It takes effect on the connection's next call — there is no cache to wait out.

Access token60 minutes, then refreshed automatically
Access tokens last an hour. Your client refreshes them without asking you again.

Endpoints

You should not need these — every MCP client discovers them from the two metadata documents. They are here for when you are debugging one that does not.

POST /mcp
The MCP endpoint. Streamable HTTP, bearer token.
GET /.well-known/oauth-protected-resource/mcp
Protected resource metadata (RFC 9728).
GET /.well-known/oauth-authorization-server
Authorization server metadata (RFC 8414).
POST /register
Dynamic client registration (RFC 7591).
GET /authorize
Starts the flow. PKCE with S256 is required.
POST /token
Authorization code and refresh token grants.
POST /revoke
Token revocation (RFC 7009).

PKCE with S256 is required. There is no implicit flow and no client credentials grant, so every token belongs to a person who approved it.

API keys and the REST API

For anything with no browser to sign in with — a cron job, a CI step, a self-hosted agent. Create a key in Settings, then API keys. It works as a bearer token on the MCP endpoint and on the REST API below.

Connecting Claude or ChatGPT does not need one. Those speak OAuth natively, and approving a connection once is safer than pasting a long-lived secret into a chat window or a config file.

POST /api/v1/tabs
Create a feed Tab. Returns its id. Requires tabs:manage.
GET /api/v1/tabs
The feed Tabs this key can write to. Requires tabs:read.
POST /api/v1/findings
Add up to 25 findings. Idempotent. Requires tabs:write.
curl -X POST https://tabtab.com/api/v1/findings \
  -H "Authorization: Bearer ttk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tab_id": "...",
    "idempotency_key": "briefing-2026-09-03",
    "findings": [
      {
        "title": "Anthropic cut Haiku pricing",
        "summary": "Input tokens down 40%.",
        "source_url": "https://anthropic.com/pricing",
        "severity": "high"
      }
    ]
  }'

Same write path as MCP — the REST endpoints call the same transaction, so idempotency, the daily cap, sanitization and notification rules are identical. Replaying an idempotency_key returns the original result and creates nothing, which is what makes a scheduled job safe to retry when it cannot tell whether its last run committed.

Findings are badged with the key's name, so name it something a reader would understand. Revoking a key takes effect on its next call and never deletes the findings it contributed.

A silent tab is a working tab

Connect an assistant, then close the laptop.

Go to Connections

Trash