tribb ships a hosted Model Context Protocol server so an AI client — Claude, an agent, your own tooling — can read and triage your feeds directly. The tools mirror the same canonical actions as the web app and the trib CLI: subscribe, search, read, triage, and generate a digest. An action taken over MCP shows up everywhere else in your account.
Endpoint & transport
The server is served under /api/mcp/<transport>. The canonical endpoint is the Streamable HTTP transport:
https://tribb.app/api/mcp/mcp
The same handler also answers the SSE transport at https://tribb.app/api/mcp/sse for clients that need it. Prefer /mcp (Streamable HTTP) unless your client only speaks SSE.
Auth
The server requires a Bearer token on every request — there is no anonymous access. The token is a tribb API key, minted from Settings and verified by Better Auth's API-key plugin.
- Sign in at tribb.app/settings → the CLI & MCP tokens panel.
- Click + mint a token. It is shown once (prefix
trib_) — copy it immediately. - Send it as
Authorization: Bearer trib_....
The token resolves to your user, and MCP tools only ever act on your account. Agent-token verification is not rate limited, so high-frequency clients won't be throttled on auth.
Client setup
Claude Code
claude mcp add --transport http tribb https://tribb.app/api/mcp/mcp \
--header "Authorization: Bearer trib_xxxxxxxx"
Generic JSON config
Most desktop clients (Claude Desktop, and others that read an mcpServers block) take a remote server like this:
{
"mcpServers": {
"tribb": {
"url": "https://tribb.app/api/mcp/mcp",
"headers": {
"Authorization": "Bearer trib_xxxxxxxx"
}
}
}
}
Tools
| Tool | Arguments | Does |
|---|---|---|
list_subscriptions |
— | List your feeds with health metadata. |
search_articles |
unread?, saved?, feedId?, limit? (1–100) |
List items, newest first, with optional filters. |
get_article |
itemId |
Fetch one item's full content — extracted full text when available. |
subscribe |
url |
Subscribe to a feed. Any site URL works; discovery runs server-side. |
update_state |
itemIds[], action |
Triage one or more items. |
get_digest |
sinceHours? (1–168) |
Generate an AI catch-up digest of unread items, on your key. |
submit_feedback |
type? (bug/idea/praise/other), body |
File product feedback or an issue. |
list_feedback |
status?, type?, limit? (1–200) |
List feedback. Operators see all; others see only their own. |
admin_stats |
— | Owner-only: global product analytics. |
update_state actions
update_state takes an array of itemIds and one action, applied to all of them:
save · dismiss · downrank · read · unread · unsave · archive · unarchive
These are the canonical triage verbs shared across web, CLI, and MCP. Every action is logged and trains your ranking — prefer downrank over dismiss when a source is low-value but not unwanted.
Notes & limits
- Your account only. The Bearer token scopes every call to the user who minted it; there is no cross-account access.
- BYOK for AI.
get_digestruns on the AI key you set in Settings. Without one, it returns an error rather than billing anyone. - Operator tools gate themselves.
list_feedbackreturns only your own submissions unless you're an operator, andadmin_statsis owner-only — non-owners get aforbiddenresult. - No auth rate limit on API-key verification, so agent clients aren't throttled on the token check.
Prefer a shell to tool calls? The trib CLI exposes the same operations with the same token.