Tweetsmash

com.tweetsmash由 tweetsmash.com 发布官方发布者v2.0.0更新于 Oct 27, 2026

Search, label, and manage your X (Twitter) bookmarks from any MCP client via Tweetsmash

已验证Streamable HTTP可网页运行效率与工作流知识与记忆沟通与协作

概览

AI 生成的概览

把助手连接到 Tweetsmash 的 X(Twitter)书签库,可搜索、打标签、整理、导出并生成摘要。

可以做什么
  • 列出、统计并读取已保存的书签和 X 点赞,支持筛选、分页及完整文章或长推文内容
  • 按关键词、语义向量或作者搜索书签,并可建立语义索引
  • 创建、添加、移除和删除标签,并按筛选条件批量打标签、归档、删除或标记已读
  • 管理 Smart View(保存的筛选视图),创建或撤销公开分享链接
  • 启动 PDF、CSV、JSON 导出,管理邮件摘要计划与 AI 生成的摘要
  • 查看 Notion、Google 表格和 Zotero 的同步状态,并读取关注的 X 列表
适用场景
适合在 Tweetsmash 中保存了大量 X 书签、希望助手帮忙找回记不清的收藏、按主题整理、清理或导出,以及总结摘要和列表的场景。
运行要求
需要 Tweetsmash 账号并已导入 X 书签,以及 Tweetsmash API 令牌。可连接托管端点并以 Bearer 头传入令牌,或在本地运行 npm 包并设置 TWEETSMASH_TOKEN 环境变量。
安装前请注意
令牌可访问用户的书签库。多个工具会写入数据:打标签、归档、删除书签、删除标签,以及创建 7 天有效的公开分享链接。删除标签不可恢复。生成摘要会消耗一次摘要额度,免费方案分享链接最多 10 条书签。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Tweetsmash,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/com.tweetsmash%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "tweetsmash": {
      "type": "http",
      "url": "https://mcp.tweetsmash.com/api/mcp"
    }
  }
}

README

Tweetsmash MCP Server: X (Twitter) Bookmarks for AI Agents

The Tweetsmash MCP server connects Claude, ChatGPT, Cursor, Raycast, and any Model Context Protocol client to your X (Twitter) bookmarks. Search them semantically, count them, and manage labels through natural language.

Tweetsmash is a bookmark manager for X (Twitter): it imports the posts you bookmark on X into a searchable library, syncs them to Notion, Google Sheets, and Zotero, and exposes them to AI agents through this MCP server and an X bookmarks API.

Quick start

  1. Create a Tweetsmash account at tweetsmash.com and import your X bookmarks (one click).
  2. Generate an API token: Settings > Integrations > API.
  3. Add the server to your MCP config:
json
{  "mcpServers": {    "tweetsmash": {      "command": "npx",      "args": ["@tweetsmash/mcp"],      "env": { "TWEETSMASH_TOKEN": "your-token-here" }    }  }}

Hosted endpoint (no local install)

Point any remote MCP client at:

https://mcp.tweetsmash.com/api/mcp

with your Tweetsmash API token as a Bearer header.

Tools

ToolWhat it does
list_bookmarksPage through saved posts with filters
search_bookmarksKeyword and semantic search across every bookmark
get_bookmark_countCount bookmarks, optionally by label
list_labelsList every label in your library
add_labels_to_tweetsLabel bookmarks from your agent
remove_labels_from_tweetsRemove labels
setup_vector_storeBuild the semantic search index

Example prompts

  • "Find my bookmarks about prompt engineering"
  • "How many bookmarks mention MCP?"
  • "Label everything I saved last week as AI"

Links

License

MIT

来源:README.md,提交 dcaa446

工具

53

list_bookmarks

List the user's Twitter BOOKMARKS — posts they deliberately saved. Never includes X Likes; use list_likes for those. Supports filtering and pagination. Supports filtering by read status, media type, author, tags, date ranges, and sorting options. IMPORTANT: Use this tool (with the 'author' parameter) when the user asks to show tweets by a specific author.

输入参数taglimitauthorcursorsort_byposted_tomedia_typeposted_fromsort_cursorbookmarked_tohide_archivedis_unread_only另有 1 个

list_likes

List the posts the user LIKED on X (not their bookmarks). Likes are a lighter signal than a save — use list_bookmarks for things the user deliberately saved, and this when the user explicitly asks about likes or about what they react to. Same filters and pagination as list_bookmarks.

输入参数taglimitauthorcursorsort_byposted_tomedia_typeposted_fromsort_cursorbookmarked_tohide_archivedis_unread_only另有 1 个

search_bookmarks

Search through a user's Twitter bookmarks using keyword search (q), semantic search (vector_search_term), or author filtering (author). At least one of q, vector_search_term, or author should be provided. IMPORTANT: Use the 'author' parameter for filtering by author, not the 'q' field.

输入参数qtaglimitauthorcursorsort_byposted_tomedia_typeposted_fromsort_cursorbookmarked_tohide_archived另有 3 个

get_bookmark_count

Get the total count of user's bookmarks with optional filtering. Useful for understanding the size of bookmark collections before listing them.

输入参数tagauthorposted_tomedia_typeposted_frombookmarked_tohide_archivedis_unread_onlybookmarked_from

list_labels

List all user's labels with their usage counts. Useful for discovering existing labels before adding new ones.

无需输入参数。

add_labels_to_tweets

Add a label to a list of tweets. Can use an existing label by ID or create a new label by name. Either label_id or label_name must be provided.

输入参数label_idtweet_ids必填label_name

remove_labels_from_tweets

Remove a label from a list of tweets using label_name.

输入参数tweet_ids必填label_name必填

delete_label

Delete a label from the account entirely — the label itself plus every bookmark's assignment of it. The BOOKMARKS are not deleted; they simply lose this label. IRREVERSIBLE: before calling, tell the user how many bookmarks carry the label (list_labels returns the count) and get an explicit yes. To take a label off SOME bookmarks instead, use remove_labels_from_tweets. If the name matches more than one label the call fails with the candidates — re-run with label_id.

输入参数label_idlabel_name

setup_vector_store

Initialize the vector store for semantic bookmark search. CRITICAL: When vector/semantic search fails with 'Vector Store Not Setup' error, call this tool. This is an async operation that may take a few minutes for large bookmark collections.

无需输入参数。

list_skills

START HERE for any open-ended request. Lists the task playbooks this server supports — systematic learning from bookmarks, organising into themes, cleaning up, X-list intelligence, exporting data out, finding a half-remembered save, digests, and diagnosing sync. Each names when to use it; call get_skill for the exact tool sequence.

无需输入参数。

get_skill

Get the full playbook for a task: when to use it, the exact tool sequence with the arguments that matter, tips, and the pitfalls that cause empty results. `name` takes EITHER an exact skill name (learn_from_bookmarks, organise_into_themes, cleanup_library, list_intelligence, get_my_data_out, find_that_thing, stay_on_top, diagnose_sync, connect_your_tool) OR a plain description of the job — both resolve. You do NOT need list_skills first: if you already know what the user is trying to do, call this directly with their request and skip the round trip. Reach for list_skills only to browse what exists.

输入参数name

get_library_overview

A snapshot of the whole library: total bookmarks, unread, untagged, breakdown by type (threads/media/links/notes), every label with its count, and the years covered. Use this FIRST for anything open-ended (organise, clean up, learn from my saves, 'how many do I have per topic') instead of paging through bookmarks.

无需输入参数。

search_docs

Answer questions about Tweetsmash itself — features, how-to, pricing, plans, limits, account/subscription. Searches the bundled product guide and returns the most relevant sections for you to answer from. Call with an empty query to list the help topics.

输入参数query

get_bookmark

Get a single saved bookmark with FULL content in one call — the full X Article body, the unrolled thread, notes, and (optionally) replies. Use `include` (comma list of article,thread,notes,replies) to narrow it; defaults to article,thread,notes. Use this when the user wants to read or summarize a specific saved tweet/thread/article in depth.

输入参数id必填include

tag_bookmarks_by_filter

Add a label to EVERY bookmark matching a filter, in a single call. Prefer this over listing then looping when the user says 'tag all my … as …'. Resolves an author name to its id automatically. Reports matched/tagged/failed counts.

输入参数qtagauthorlabel_idposted_tolabel_namemedia_typeposted_frombookmarked_tohide_archivedis_unread_onlybookmarked_from

archive_bookmarks

Archive, unarchive, delete, undelete, or mark read/unread a list of bookmarks by id (max 500). This is a bulk write; for destructive actions (delete) confirm with the user first. Reports how many changed.

输入参数action必填tweet_ids必填

archive_bookmarks_by_filter

Apply archive/unarchive/delete/undelete to EVERY bookmark matching a filter, in one call. Destructive by nature — confirm with the user before delete. Reports counts.

输入参数tagsvalueaction必填filtersearch_query

list_smart_views

List the user's Smart Views (saved filtered views). Each has a slug you pass to the other smart-view tools.

无需输入参数。

get_smart_view

Get a single Smart View by slug (its filter, tabs/buckets, and sort).

输入参数slug必填

get_smart_view_bookmarks

List the bookmarks inside a Smart View, optionally scoped to one tab/bucket. Use the returned ids with archive_bookmarks / tagging tools to act on the view.

输入参数slug必填limitbucketcursor

create_smart_view

Create a Smart View from a filter so the user can reuse it. Provide a name and the base_query (filter).

输入参数name必填base_querydescriptiondefault_sorttriage_buckets

update_smart_view

Update a Smart View (name, filter, tabs, sort) by slug.

输入参数nameslug必填base_querydescriptiondefault_sorttriage_buckets

delete_smart_view

Delete a Smart View by slug.

输入参数slug必填

trigger_pdf_export

Start a PDF export of the user's bookmarks (explicit ids, everything matching a filter, or the whole library). Returns a job id; tell the user the file will appear in the Export Center.

输入参数tagsvaluefiltertweet_idssearch_query

trigger_csv_export

Start a CSV export (explicit ids, a filter, or the whole library). Returns a job id; the file appears in the Export Center.

输入参数tagsvaluefiltertweet_idssearch_query

trigger_json_export

Start a JSON export (explicit ids, a filter, or the whole library). Returns a job id; the file appears in the Export Center.

输入参数tagsvaluefiltertweet_idssearch_query

list_digest_preferences

List the user's email-digest schedules (frequency, time, paused state) for bookmark and Smart View digests.

无需输入参数。

update_digest_preference

Update a digest schedule (enable/pause, frequency, time) by id.

输入参数id必填is_pausedweek_infois_enabledtime_to_readschedule_timesend_frequency

delete_digest_preference

Remove a digest schedule by id.

输入参数id必填

list_past_digests

List past digests sent to the user's email, newest first. This is Digest 1.0 (the cluster pipeline). For the AI-composed Digest 2.0, use list_mash_digests.

无需输入参数。

list_mash_digests

The user's Mash Digest 2.0 digests — the AI-composed ones. An account can have SEVERAL (a morning read and an evening skim are two digests, not two sections of one), so START HERE and use the returned `id` for the other digest tools. Returns each digest's name, where its sections read from, and its schedule.

无需输入参数。

list_mash_digest_issues

Past issues of the user's Digest 2.0, newest first — what arrived and when. Deliberately WITHOUT the content: pick one and call get_mash_digest_issue for the whole thing. Pass digest_id to narrow to one digest.

输入参数limitdigest_id

get_mash_digest_issue

One digest issue in full: its title, intro, every section, and per item the summary, why it was picked and why it matters to this user. Use it to answer 'what was in my digest?', 'why was this in there?' or to carry on a conversation about something the user just read. Items carry tweet IDS, not post text — resolve them with get_bookmark if the user asks about a specific post.

输入参数issue_id必填

compose_mash_digest

Compose one of the user's Digest 2.0 digests NOW rather than waiting for its schedule. SPENDS A DIGEST CREDIT and takes about a minute, so only call it when the user asks for a fresh digest — not to inspect the current one (use get_mash_digest_issue for that). Returns an issue_id to read back once composing finishes.

输入参数digest_id必填

get_sync_status

Show the user's app-sync integrations (Notion, Google Sheets, Zotero): whether each is connected/enabled, synced vs pending counts, and any errors.

无需输入参数。

get_bookmark_sync_status

Show whether a specific bookmark has synced to a given integration connection.

输入参数tweet_id必填connect_id必填

list_twitter_lists

List the X (Twitter) lists the user follows in Tweetsmash. Returns each list's name plus its `connect_id` — pass that to get_list_tweets / send_list_digest. START HERE for any 'what's in my list' request.

无需输入参数。

get_list_tweets

Get recent tweets for a followed X list — the latest, or (sort=POPULARITY) the top/trending tweets in a look-back window. Serves a cached copy when it's fresh and otherwise fetches from X automatically, so it always returns real tweets; `meta.source` says cache or fetched and `meta.cache_age_hours` how old it is. Pass max_age_hours:0 to force a refresh. Get connect_id from list_twitter_lists. hours defaults to 24.

输入参数sorthourslimitconnect_id必填max_age_hours

get_list_digests

List past Twitter-list email digests for the user.

无需输入参数。

send_list_digest

Build and email a digest of a Twitter list's high-signal tweets to the user now.

输入参数list_idconnect_id必填

preview_list_ranking

Rank a followed X list exactly the way the digest ranker would, WITHOUT sending anything, and show the work: each unit carries its rank_signals (lane_fit = matches what the user builds/studies, affinity = an author they trust, engagement, substance, noise demotions) plus author groups (`group_size` + `related_items` = several posts by one author, best one leading). Use this to answer 'what's worth reading in my list?', 'why was this picked?', or to check how a preference change would land. `meta.inert_dimensions` names signals that had no data for this pool.

输入参数sortlimitlist_idconnect_id必填window_days

get_author_preferences

The user's stated author preferences for list digests: `boost` = never-miss authors, `hide` = muted authors.

无需输入参数。

set_author_preference

Remember how the user feels about an author in their list digests. action=boost → never miss this author's posts (they will always be included, low-signal ones collapsed rather than dropped); action=hide → mute them; action=clear → forget the preference. Use when the user says things like 'don't let me miss marclou's updates' or 'stop showing me X'. Takes effect from the next digest and in preview_list_ranking immediately.

输入参数action必填handle必填

get_me

Get the current user's account: identity, current plan and status, and usage (e.g. AI chat credits). Use this to answer 'who am I' / 'what plan am I on'.

无需输入参数。

get_connection_status

Check whether the user's tweets can be pulled: the X (Twitter) API connection (connected / disconnected), whether the browser extension has synced recently, and a rolled-up can_pull + how (x_api or extension). Use this before a sync, or when the user asks why bookmarks aren't updating. Note: the extension is browser-only and can't be driven by an agent.

无需输入参数。

fetch_recent_bookmarks

Force-pull the user's most recent bookmarks from the X API now (server-side). Requires a connected X account; if the account only syncs via the browser extension, this reports that a browser sync is needed. Use when the user asks to refresh / fetch their latest saves. For Twitter-list freshness, use get_list_tweets instead.

输入参数maxforce

remember

Save a durable PREFERENCE about how this user wants their bookmark library handled — the themes they organise by, topics to exclude, preferred summary length/format, which account is their main one. It carries across sessions AND into the Tweetsmash web app, which your own client memory cannot reach. Use it for lasting preferences the user states or confirms, not for general chat context, task state, or anything secret.

输入参数key必填kind必填modevalue必填

recall

Read back the user's saved library preferences (optionally filtered by a substring). Worth calling before an open-ended organise, summarise or cleanup task so you follow how they already like things done.

输入参数query

forget

Delete a saved library preference by key (optionally narrowed by kind). Use when the user changes their mind or asks you to drop something.

输入参数keykind

get_interests

Read what this user is actually interested in, inferred from their saved bookmarks, hand labels, questions and digest clicks — not from anything they typed. Returns topics with a 0-1 strength, whether each is active this week, and a `coverage` field saying how much evidence exists (`lite` means a new account: treat it as a first guess and check before relying on it). Use it to prioritise, filter or explain — then confirm with the user rather than asserting it back as fact. Evidence itself is not returned.

无需输入参数。

correct_interest

Record the user's correction to an inferred interest, using a key from get_interests. Corrections are sticky — they survive every future recompute. Use `confirm` when they agree, `rename` for their own wording, `hide` to stop using an interest while keeping its history, `boost` when they want it weighted higher. `forget` is different and IRREVERSIBLE: it erases the underlying history so the topic cannot re-form — only use it when the user clearly asks to delete, and say what it means first.

输入参数valueaction必填interest_key必填

版本历史

1
  1. v2.0.0最新Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。