MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Data access / search

com.tweetsmash/mcp

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

Checks passed
12 / 22

2 failed · 8 not measured

Median response
565 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
53

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 565 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name tweetsmash-mcp.

  • Pass
    Lists tools

    tools/list returned 53 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 565 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 565 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    122 of 158 parameters have a description (77%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Fail
    Website matches publisher

    The website host does not match the reverse-domain namespace.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-07-11T19:04:21.017773Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using com.tweetsmash/mcp

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http com-tweetsmash-mcp https://mcp.tweetsmash.com/api/mcp

Capabilities

Tools 53

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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
create_share_link

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.

Discovered
create_smart_view

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

Discovered
delete_digest_preference

Remove a digest schedule by id.

Discovered
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.

Discovered
delete_smart_view

Delete a Smart View by slug.

Discovered
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.

Discovered
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.

Discovered
get_author_preferences

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

Discovered
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.

Discovered
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.

Discovered
get_bookmark_sync_status

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

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
get_list_digests

List past Twitter-list email digests for the user.

Discovered
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.

Discovered
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.

Discovered
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'.

Discovered
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.

Discovered
get_smart_view

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

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
list_digest_preferences

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

Discovered
list_labels

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

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
list_smart_views

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

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
remove_labels_from_tweets

Remove a label from a list of tweets using label_name.

Discovered
revoke_share_link

Revoke a previously created share link by its token.

Discovered
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.

Discovered
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.

Discovered
send_list_digest

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

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
update_digest_preference

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

Discovered
update_smart_view

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

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected565 ms53