com.tweetsmash/mcp
REMOTE · MCP.TWEETSMASH.COM · SCANNED SEP 20
Search, label, and manage your X (Twitter) bookmarks from any MCP client via Tweetsmash
Available components
Recent critical change
Authorization (24 Aug 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security66
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (remove_labels_from_tweets). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability83
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6368 tokens (~117/item across 54 items; 53 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage92
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 77% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 55 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
How do I install the com.tweetsmash/mcp server?
com.tweetsmash/mcp is a hosted endpoint at https://mcp.tweetsmash.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.tweetsmash.com
claude mcp add --transport http com-tweetsmash-mcp 'https://mcp.tweetsmash.com/api/mcp'
{
"mcpServers": {
"com-tweetsmash-mcp": {
"url": "https://mcp.tweetsmash.com/api/mcp"
}
}
} {
"servers": {
"com-tweetsmash-mcp": {
"type": "http",
"url": "https://mcp.tweetsmash.com/api/mcp"
}
}
} [mcp_servers.com-tweetsmash-mcp] url = "https://mcp.tweetsmash.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-tweetsmash-mcp": {
"type": "remote",
"url": "https://mcp.tweetsmash.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-tweetsmash-mcp --url 'https://mcp.tweetsmash.com/api/mcp' --transport streamable-http
mcp_servers:
com-tweetsmash-mcp:
url: "https://mcp.tweetsmash.com/api/mcp" {
"McpServers": {
"com-tweetsmash-mcp": {
"Transport": "http",
"Url": "https://mcp.tweetsmash.com/api/mcp"
}
}
} assistant mcp add com-tweetsmash-mcp -t streamable-http -u 'https://mcp.tweetsmash.com/api/mcp'
{
"mcpServers": {
"com-tweetsmash-mcp": {
"type": "http",
"url": "https://mcp.tweetsmash.com/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
- 24 Aug 26 +2
- Authorization: unverified → fail ▼ critical
- The server rewrote its instructions, which are the text every model session reads security
- The server changed its declared name: mcp-typescript server on vercel → tweetsmash-mcp security
- Tool “archive_bookmarks” is now declared destructive security
- Tool “archive_bookmarks_by_filter” is now declared destructive security
- Tool “delete_digest_preference” is now declared destructive security
- Tool “delete_label” is now declared destructive security
- Tool “delete_smart_view” is now declared destructive security
- Tool “forget” is now declared destructive security
- Tool “remove_labels_from_tweets” is now declared destructive security
- Tool “revoke_share_link” is now declared destructive security
- The server now declares the “resources” capability functional
- First check of Capabilities: pass functional
- First check of Schema quality: 100 functional
- New resource “bookmark-list-view” functional
- Server version: 0.1.0 → 2.1.0 functional
- 23 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Aug 26 79
- “get_bookmark_count” reworded the description of “media_type” cosmetic
- “list_bookmarks” reworded the description of “media_type” cosmetic
- “list_likes” reworded the description of “media_type” cosmetic
- “search_bookmarks” reworded the description of “media_type” cosmetic
- “tag_bookmarks_by_filter” reworded the description of “media_type” cosmetic
5 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 19 Aug 26 0
- Tool “list_bookmarks” rewrote its description, which is the text the model reads security
- New tool “list_likes” functional
- 16 Aug 26 0
- Tool “forget” rewrote its description, which is the text the model reads security
- Tool “get_list_tweets” rewrote its description, which is the text the model reads security
- Tool “list_past_digests” rewrote its description, which is the text the model reads security
- Tool “list_twitter_lists” rewrote its description, which is the text the model reads security
- Tool “recall” rewrote its description, which is the text the model reads security
- Tool “remember” rewrote its description, which is the text the model reads security
- Schema quality: pass → fail ▼ functional
- Schema quality: good → excellent functional
- New tool “compose_mash_digest” functional
- New tool “correct_interest” functional
- New tool “delete_label” functional
- New tool “get_author_preferences” functional
- New tool “get_interests” functional
- New tool “get_library_overview” functional
- New tool “get_mash_digest_issue” functional
- New tool “get_skill” functional
- New tool “list_mash_digest_issues” functional
- New tool “list_mash_digests” functional
- New tool “list_skills” functional
- New tool “preview_list_ranking” functional
- New tool “set_author_preference” functional
- “get_list_tweets” added an optional parameter “max_age_hours” cosmetic
- “get_list_tweets” reworded the description of “connect_id” cosmetic
- “recall” reworded the description of “query” cosmetic
- “remember” reworded the description of “key” cosmetic
- “remember” reworded the description of “kind” cosmetic
- “remember” reworded the description of “value” cosmetic
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://mcp.tweetsmash.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.tweetsmash.com | CN=YR2,O=Let's Encrypt,C=US | 30 Jul 2026 | 28 Oct 2026 | RSA 2048 | SHA256-RSA | 6f650731f1ae888259d1eb27303dbe8c85a |
| SANs: mcp.tweetsmash.com | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of mcp.tweetsmash.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| tweetsmash.com. | present | 2371 | 13 | Verified |
| mcp.tweetsmash.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.tweetsmash.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.tweetsmash.com/api/mcp | HTTPS enforced | 308 | https://mcp.tweetsmash.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_labels_to_tweets ~105
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.
| Name | Type | Req | Description |
|---|---|---|---|
| label_id | string | – | ID of existing label (use either label_id or label_name) |
| label_name | string | – | Name of the label to create/add (use either label_id or label_name) |
| tweet_ids | array | yes | Array of tweet IDs to add the label to |
No output schema declared.
No examples provided.
archive_bookmarks ~86
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The action to apply. |
| tweet_ids | array | yes | Bookmark ids to act on (max 500). |
No output schema declared.
No examples provided.
archive_bookmarks_by_filter ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The action to apply to every match. |
| filter | string | – | – |
| search_query | string | – | – |
| tags | array | – | – |
| value | string | – | – |
No output schema declared.
No examples provided.
compose_mash_digest ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| digest_id | string | yes | Which digest to compose, from list_mash_digests. |
No output schema declared.
No examples provided.
correct_interest ~216
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | confirm = the user says this is right (keeps it alive as it ages); boost = they want it weighted higher; rename = give it their own name; hide = stop showing or using it, evidence kept; forget = ERAS… |
| interest_key | string | yes | The interest's key, exactly as returned by get_interests. |
| value | string | – | Required for rename: the user's own name for this interest. |
No output schema declared.
No examples provided.
create_share_link ~105
Create a public, read-only share link for a set of bookmarks (explicit ids or everything matching a filter). Returns a share_url valid for 7 days. Free plans share up to 10 bookmarks.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | – |
| search_query | string | – | – |
| tags | array | – | – |
| tweet_ids | array | – | Explicit ids to export. Omit to export everything matching the filter, or the whole library. |
| value | string | – | – |
No output schema declared.
No examples provided.
create_smart_view ~86
Create a Smart View from a filter so the user can reuse it. Provide a name and the base_query (filter).
| Name | Type | Req | Description |
|---|---|---|---|
| base_query | string | – | The filter query that defines the view. |
| default_sort | string | – | – |
| description | string | – | – |
| name | string | yes | View name. |
| triage_buckets | – | – | Optional tab/bucket definitions. |
No output schema declared.
No examples provided.
delete_digest_preference ~28
Remove a digest schedule by id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The digest preference id. |
No output schema declared.
No examples provided.
delete_label ~155
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.
| Name | Type | Req | Description |
|---|---|---|---|
| label_id | string|number | – | The label's id. Use this when a name matched more than one label. |
| label_name | string | – | Name of the label to delete, exactly as it appears in list_labels. |
No output schema declared.
No examples provided.
delete_smart_view ~28
Delete a Smart View by slug.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | The smart view slug. |
No output schema declared.
No examples provided.
fetch_recent_bookmarks ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | – | Force the pull even if a recent sync exists. |
| max | number | – | How many recent bookmarks to pull (max 800). |
No output schema declared.
No examples provided.
forget ~54
Delete a saved library preference by key (optionally narrowed by kind). Use when the user changes their mind or asks you to drop something.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | – | The memory key to forget. |
| kind | string | – | – |
No output schema declared.
No examples provided.
get_author_preferences ~35
The user's stated author preferences for list digests: `boost` = never-miss authors, `hide` = muted authors.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_bookmark ~133
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The tweet/bookmark id to fetch. |
| include | string | – | Comma list of extra content to include: article,thread,notes,replies. Defaults to article,thread,notes. |
No output schema declared.
No examples provided.
get_bookmark_count ~245
Get the total count of user's bookmarks with optional filtering. Useful for understanding the size of bookmark collections before listing them.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Filter by author username. Use this parameter when the user wants to find tweets by a specific author (e.g., 'Show tweets by @user'). Do NOT use 'q' for author names. |
| bookmarked_from | string | – | Filter bookmarks added after this date (ISO 8601 string) |
| bookmarked_to | string | – | Filter bookmarks added before this date (ISO 8601 string) |
| hide_archived | boolean | – | Hide archived bookmarks |
| is_unread_only | boolean | – | Filter to only unread bookmarks |
| media_type | string | – | Filter by kind: thread · media (images/video) · replies · notes · links (posts linking out) · article (a native X Article — use this when someone says "article", not `links`) |
| posted_from | string | – | Filter tweets posted after this date (ISO 8601 string) |
| posted_to | string | – | Filter tweets posted before this date (ISO 8601 string) |
| tag | string | – | Filter by tag |
No output schema declared.
No examples provided.
get_bookmark_sync_status ~44
Show whether a specific bookmark has synced to a given integration connection.
| Name | Type | Req | Description |
|---|---|---|---|
| connect_id | string | yes | The integration connection id. |
| tweet_id | string | yes | – |
No output schema declared.
No examples provided.
get_connection_status ~83
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_interests ~116
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_library_overview ~82
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_list_digests ~22
List past Twitter-list email digests for the user.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_list_tweets ~206
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.
| Name | Type | Req | Description |
|---|---|---|---|
| connect_id | string | yes | The list connection id (the `connect_id` from list_twitter_lists). |
| hours | number | – | Look-back window in hours (default 24). |
| limit | number | – | – |
| max_age_hours | number | – | How stale cached tweets may be before refetching from X (default 4). Pass 0 to force a fresh fetch. |
| sort | string | – | LATEST or POPULARITY (trending/top). |
No output schema declared.
No examples provided.
get_mash_digest_issue ~117
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.
| Name | Type | Req | Description |
|---|---|---|---|
| issue_id | string | yes | The issue id, from list_mash_digest_issues. |
No output schema declared.
No examples provided.
get_me ~48
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'.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_skill ~218
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 | Type | Req | Description |
|---|---|---|---|
| name | string | – | 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) or a plain description of the… |
No output schema declared.
No examples provided.
get_smart_view ~39
Get a single Smart View by slug (its filter, tabs/buckets, and sort).
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | The smart view slug. |
No output schema declared.
No examples provided.
get_smart_view_bookmarks ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bucket | string | – | Which tab/bucket of the view to read (default: all). |
| cursor | number | – | Numeric offset for the next page. |
| limit | number | – | Page size (1-100). |
| slug | string | yes | The smart view slug. |
No output schema declared.
No examples provided.
get_sync_status ~41
Show the user's app-sync integrations (Notion, Google Sheets, Zotero): whether each is connected/enabled, synced vs pending counts, and any errors.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_bookmarks ~361
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.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Filter by author username. Use this parameter when the user wants to find tweets by a specific author (e.g., 'Show tweets by @user'). Do NOT use 'q' for author names. |
| bookmarked_from | string | – | Filter bookmarks added after this date (ISO 8601 string) |
| bookmarked_to | string | – | Filter bookmarks added before this date (ISO 8601 string) |
| cursor | string | – | Pagination cursor for next page |
| hide_archived | boolean | – | Hide archived bookmarks |
| is_unread_only | boolean | – | Filter to only unread bookmarks |
| limit | number | – | Number of bookmarks to retrieve (1-100) |
| media_type | string | – | Filter by kind: thread · media (images/video) · replies · notes · links (posts linking out) · article (a native X Article — use this when someone says "article", not `links`) |
| posted_from | string | – | Filter tweets posted after this date (ISO 8601 string) |
| posted_to | string | – | Filter tweets posted before this date (ISO 8601 string) |
| sort_by | string | – | Sort order for results |
| sort_cursor | string | – | Cursor for pagination when using sort_by (use value from meta.sort_cursor of previous response) |
| tag | string | – | Filter by tag |
No output schema declared.
No examples provided.
list_digest_preferences ~32
List the user's email-digest schedules (frequency, time, paused state) for bookmark and Smart View digests.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_labels ~27
List all user's labels with their usage counts. Useful for discovering existing labels before adding new ones.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_likes ~346
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.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Filter by author username. Use this parameter when the user wants to find tweets by a specific author (e.g., 'Show tweets by @user'). Do NOT use 'q' for author names. |
| bookmarked_from | string | – | Filter bookmarks added after this date (ISO 8601 string) |
| bookmarked_to | string | – | Filter bookmarks added before this date (ISO 8601 string) |
| cursor | string | – | Pagination cursor for next page |
| hide_archived | boolean | – | Hide archived bookmarks |
| is_unread_only | boolean | – | Filter to only unread bookmarks |
| limit | number | – | Number of bookmarks to retrieve (1-100) |
| media_type | string | – | Filter by kind: thread · media (images/video) · replies · notes · links (posts linking out) · article (a native X Article — use this when someone says "article", not `links`) |
| posted_from | string | – | Filter tweets posted after this date (ISO 8601 string) |
| posted_to | string | – | Filter tweets posted before this date (ISO 8601 string) |
| sort_by | string | – | Sort order for results |
| sort_cursor | string | – | Cursor for pagination when using sort_by (use value from meta.sort_cursor of previous response) |
| tag | string | – | Filter by tag |
No output schema declared.
No examples provided.
list_mash_digest_issues ~104
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.
| Name | Type | Req | Description |
|---|---|---|---|
| digest_id | string | – | Narrow to one digest (from list_mash_digests). Omit for every digest. |
| limit | integer | – | How many issues, newest first. Default 20. |
No output schema declared.
No examples provided.
list_mash_digests ~87
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_past_digests ~56
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_skills ~77
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_smart_views ~33
List the user's Smart Views (saved filtered views). Each has a slug you pass to the other smart-view tools.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_twitter_lists ~62
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
preview_list_ranking ~227
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.
| Name | Type | Req | Description |
|---|---|---|---|
| connect_id | string | yes | The list connection id (the `connect_id` from list_twitter_lists). |
| limit | number | – | How many ranked units to return (default 20). |
| list_id | string | – | The X list id, if known. |
| sort | string | – | auto (the digest's blend) or popular (engagement-led). |
| window_days | number | – | Look-back window in days (default 1). |
No output schema declared.
No examples provided.
recall ~59
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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | Optional substring to filter the preferences returned. |
No output schema declared.
No examples provided.
remember ~205
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.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | A short stable key, e.g. organising_themes or summary_format. Reusing a key updates that preference instead of duplicating it. |
| kind | string | yes | preference = how they want the library handled (themes, exclusions); style = how output should read (length, tone, format); fact = a stable fact about their setup (main account, workflow); instructio… |
| mode | string | – | – |
| value | string | yes | The preference itself, in plain words. Never a secret, token or password. |
No output schema declared.
No examples provided.
remove_labels_from_tweets ~53
Remove a label from a list of tweets using label_name.
| Name | Type | Req | Description |
|---|---|---|---|
| label_name | string | yes | Name of the label to remove |
| tweet_ids | array | yes | Array of tweet IDs to remove label from |
No output schema declared.
No examples provided.
revoke_share_link ~33
Revoke a previously created share link by its token.
| Name | Type | Req | Description |
|---|---|---|---|
| token | string | yes | The share link token to revoke. |
No output schema declared.
No examples provided.
search_bookmarks ~420
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.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Filter by author username. Use this parameter when the user wants to find tweets by a specific author (e.g., 'Show tweets by @user'). Do NOT use 'q' for author names. |
| bookmarked_from | string | – | Filter bookmarks added after this date (ISO 8601 string) |
| bookmarked_to | string | – | Filter bookmarks added before this date (ISO 8601 string) |
| cursor | string | – | Pagination cursor for next page |
| hide_archived | boolean | – | Hide archived bookmarks |
| is_unread_only | boolean | – | Filter to only unread bookmarks |
| limit | number | – | Number of bookmarks to retrieve (1-100) |
| media_type | string | – | Filter by kind: thread · media (images/video) · replies · notes · links (posts linking out) · article (a native X Article — use this when someone says "article", not `links`) |
| posted_from | string | – | Filter tweets posted after this date (ISO 8601 string) |
| posted_to | string | – | Filter tweets posted before this date (ISO 8601 string) |
| q | string | – | Keyword or text search query for finding bookmarks by exact words or phrases in tweet content. Do NOT use this for author names - use the 'author' parameter instead. |
| sort_by | string | – | Sort order for results |
| sort_cursor | string | – | Cursor for pagination when using sort_by (use value from meta.sort_cursor of previous response) |
| tag | string | – | Filter by tag |
| vector_search_term | string | – | Semantic search query for retrieving bookmarks based on meaning and context, not just keywords. Use for natural language questions or topic-based searches. |
No output schema declared.
No examples provided.
search_docs ~90
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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | What the user is asking about the product (pricing, a feature, how-to). Empty returns the list of help topics. |
No output schema declared.
No examples provided.
send_list_digest ~55
Build and email a digest of a Twitter list's high-signal tweets to the user now.
| Name | Type | Req | Description |
|---|---|---|---|
| connect_id | string | yes | The list connection id. |
| list_id | string | – | The X list id, if required. |
No output schema declared.
No examples provided.
set_author_preference ~148
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | boost = never miss this author in list digests; hide = mute them; clear = remove any preference. |
| handle | string | yes | The author's X handle, with or without the @. |
No output schema declared.
No examples provided.
setup_vector_store ~56
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
tag_bookmarks_by_filter ~327
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.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Filter by author username. Use this parameter when the user wants to find tweets by a specific author (e.g., 'Show tweets by @user'). Do NOT use 'q' for author names. |
| bookmarked_from | string | – | Filter bookmarks added after this date (ISO 8601 string) |
| bookmarked_to | string | – | Filter bookmarks added before this date (ISO 8601 string) |
| hide_archived | boolean | – | Hide archived bookmarks |
| is_unread_only | boolean | – | Filter to only unread bookmarks |
| label_id | string | – | Existing label id (use label_id or label_name). |
| label_name | string | – | Label to create/apply (use label_id or label_name). |
| media_type | string | – | Filter by kind: thread · media (images/video) · replies · notes · links (posts linking out) · article (a native X Article — use this when someone says "article", not `links`) |
| posted_from | string | – | Filter tweets posted after this date (ISO 8601 string) |
| posted_to | string | – | Filter tweets posted before this date (ISO 8601 string) |
| q | string | – | Keyword search to scope which bookmarks get tagged. |
| tag | string | – | Filter by tag |
No output schema declared.
No examples provided.
trigger_csv_export ~93
Start a CSV export (explicit ids, a filter, or the whole library). Returns a job id; the file appears in the Export Center.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | – |
| search_query | string | – | – |
| tags | array | – | – |
| tweet_ids | array | – | Explicit ids to export. Omit to export everything matching the filter, or the whole library. |
| value | string | – | – |
No output schema declared.
No examples provided.
trigger_json_export ~93
Start a JSON export (explicit ids, a filter, or the whole library). Returns a job id; the file appears in the Export Center.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | – |
| search_query | string | – | – |
| tags | array | – | – |
| tweet_ids | array | – | Explicit ids to export. Omit to export everything matching the filter, or the whole library. |
| value | string | – | – |
No output schema declared.
No examples provided.
What is the com.tweetsmash/mcp server?
com.tweetsmash/mcp is listed in the public MCP registry as com.tweetsmash/mcp. Search, label, and manage your X (Twitter) bookmarks from any MCP client via Tweetsmash. This page covers its hosted endpoint (https://mcp.tweetsmash.com/api/mcp).
Is the com.tweetsmash/mcp server safe to use?
com.tweetsmash/mcp scores 83 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the com.tweetsmash/mcp server expose?
com.tweetsmash/mcp exposes 53 tools: list_bookmarks, list_likes, search_bookmarks, get_bookmark_count, list_labels, and 48 more. Their descriptions and schemas cost roughly 6,011 tokens of context every time the server is loaded.
Does the com.tweetsmash/mcp server require authentication?
No. We connected to com.tweetsmash/mcp without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the com.tweetsmash/mcp server still maintained?
com.tweetsmash/mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.