{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_8t8eu6my7588","handle":"com-tweetsmash-mcp","url":"https://wellknown.network/agents/com-tweetsmash-mcp","links":{"self":"https://wellknown.network/agents/com-tweetsmash-mcp/record.json","html":"https://wellknown.network/agents/com-tweetsmash-mcp","markdown":"https://wellknown.network/agents/com-tweetsmash-mcp/record.md","api":"https://wellknown.network/api/v1/agents/com-tweetsmash-mcp","status":"https://wellknown.network/api/v1/agents/com-tweetsmash-mcp/status","claim":"https://wellknown.network/agents/com-tweetsmash-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/com-tweetsmash-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:mcp.tweetsmash.com:server:com-tweetsmash-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"mcp","summary":"Search, label, and manage your X (Twitter) bookmarks from any MCP client via Tweetsmash","description":"Search, label, and manage your X (Twitter) bookmarks from any MCP client via Tweetsmash","publisher":{"name":"com.tweetsmash","url":null},"homepage":null,"repository":"https://github.com/RamyaChinnadurai/tweetsmash-mcp","version":"2.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.tweetsmash.com/api/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-11T19:04:21.017773Z","publishedAt":"2026-07-11T19:04:21.017773Z","registryName":"com.tweetsmash/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.social","name":"Social Media","confidence":1,"provenance":"derived"},{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":1,"provenance":"derived"},{"slug":"data.vector-search","name":"Vector Search","confidence":1,"provenance":"derived"},{"slug":"productivity.notes","name":"Notes & Docs","confidence":0.977,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.525,"provenance":"derived"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":0.525,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["content","data","dev","documents","productivity","security"]},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-09-06T00:27:28.462Z","lastProbedAt":"2026-09-06T00:27:28.462Z","statusComputedAt":"2026-09-06T00:28:15.988Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":165},"latestObservations":[{"at":"2026-09-06T00:27:28.462Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":165,"error":null,"detail":{"tools":[{"name":"list_bookmarks","description":"List the user's Twitter BOOKMARKS — posts they deliberately saved. Never includes X Likes; use list_likes for those. Supports filtering and pagination. Supports"},{"name":"list_likes","description":"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, an"},{"name":"search_bookmarks","description":"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, vecto"},{"name":"get_bookmark_count","description":"Get the total count of user's bookmarks with optional filtering. Useful for understanding the size of bookmark collections before listing them."},{"name":"list_labels","description":"List all user's labels with their usage counts. Useful for discovering existing labels before adding new ones."},{"name":"add_labels_to_tweets","description":"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":"remove_labels_from_tweets","description":"Remove a label from a list of tweets using label_name."},{"name":"delete_label","description":"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. "},{"name":"setup_vector_store","description":"Initialize the vector store for semantic bookmark search. CRITICAL: When vector/semantic search fails with 'Vector Store Not Setup' error, call this tool. This "},{"name":"list_skills","description":"START HERE for any open-ended request. Lists the task playbooks this server supports — systematic learning from bookmarks, organising into themes, cleaning up, "},{"name":"get_skill","description":"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"},{"name":"get_library_overview","description":"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 cov"},{"name":"search_docs","description":"Answer questions about Tweetsmash itself — features, how-to, pricing, plans, limits, account/subscription. Searches the bundled product guide and returns the mo"},{"name":"get_bookmark","description":"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 "},{"name":"tag_bookmarks_by_filter","description":"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 aut"},{"name":"archive_bookmarks","description":"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 wi"},{"name":"archive_bookmarks_by_filter","description":"Apply archive/unarchive/delete/undelete to EVERY bookmark matching a filter, in one call. Destructive by nature — confirm with the user before delete. Reports c"},{"name":"list_smart_views","description":"List the user's Smart Views (saved filtered views). Each has a slug you pass to the other smart-view tools."},{"name":"get_smart_view","description":"Get a single Smart View by slug (its filter, tabs/buckets, and sort)."},{"name":"get_smart_view_bookmarks","description":"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":"create_smart_view","description":"Create a Smart View from a filter so the user can reuse it. Provide a name and the base_query (filter)."},{"name":"update_smart_view","description":"Update a Smart View (name, filter, tabs, sort) by slug."},{"name":"delete_smart_view","description":"Delete a Smart View by slug."},{"name":"create_share_link","description":"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 sh"},{"name":"revoke_share_link","description":"Revoke a previously created share link by its token."},{"name":"trigger_pdf_export","description":"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 app"},{"name":"trigger_csv_export","description":"Start a CSV export (explicit ids, a filter, or the whole library). Returns a job id; the file appears in the Export Center."},{"name":"trigger_json_export","description":"Start a JSON export (explicit ids, a filter, or the whole library). Returns a job id; the file appears in the Export Center."},{"name":"list_digest_preferences","description":"List the user's email-digest schedules (frequency, time, paused state) for bookmark and Smart View digests."},{"name":"update_digest_preference","description":"Update a digest schedule (enable/pause, frequency, time) by id."},{"name":"delete_digest_preference","description":"Remove a digest schedule by id."},{"name":"list_past_digests","description":"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."},{"name":"list_mash_digests","description":"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 "},{"name":"list_mash_digest_issues","description":"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 wh"},{"name":"get_mash_digest_issue","description":"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 w"},{"name":"compose_mash_digest","description":"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"},{"name":"get_sync_status","description":"Show the user's app-sync integrations (Notion, Google Sheets, Zotero): whether each is connected/enabled, synced vs pending counts, and any errors."},{"name":"get_bookmark_sync_status","description":"Show whether a specific bookmark has synced to a given integration connection."},{"name":"list_twitter_lists","description":"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. STA"},{"name":"get_list_tweets","description":"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 a"},{"name":"get_list_digests","description":"List past Twitter-list email digests for the user."},{"name":"send_list_digest","description":"Build and email a digest of a Twitter list's high-signal tweets to the user now."},{"name":"preview_list_ranking","description":"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 = matc"},{"name":"get_author_preferences","description":"The user's stated author preferences for list digests: `boost` = never-miss authors, `hide` = muted authors."},{"name":"set_author_preference","description":"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 "},{"name":"get_me","description":"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'."},{"name":"get_connection_status","description":"Check whether the user's tweets can be pulled: the X (Twitter) API connection (connected / disconnected), whether the browser extension has synced recently, and"},{"name":"fetch_recent_bookmarks","description":"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 extensio"},{"name":"remember","description":"Save a durable PREFERENCE about how this user wants their bookmark library handled — the themes they organise by, topics to exclude, preferred summary length/fo"},{"name":"recall","description":"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 y"},{"name":"forget","description":"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":"get_interests","description":"Read what this user is actually interested in, inferred from their saved bookmarks, hand labels, questions and digest clicks — not from anything they typed. Ret"},{"name":"correct_interest","description":"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"}],"toolCount":53,"serverName":"tweetsmash-mcp","capabilities":["resources","tools"],"serverVersion":"2.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_bookmarks","description":"List the user's Twitter BOOKMARKS — posts they deliberately saved. Never includes X Likes; use list_likes for those. Supports filtering and pagination. Supports"},{"name":"list_likes","description":"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, an"},{"name":"search_bookmarks","description":"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, vecto"},{"name":"get_bookmark_count","description":"Get the total count of user's bookmarks with optional filtering. Useful for understanding the size of bookmark collections before listing them."},{"name":"list_labels","description":"List all user's labels with their usage counts. Useful for discovering existing labels before adding new ones."},{"name":"add_labels_to_tweets","description":"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":"remove_labels_from_tweets","description":"Remove a label from a list of tweets using label_name."},{"name":"delete_label","description":"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. "},{"name":"setup_vector_store","description":"Initialize the vector store for semantic bookmark search. CRITICAL: When vector/semantic search fails with 'Vector Store Not Setup' error, call this tool. This "},{"name":"list_skills","description":"START HERE for any open-ended request. Lists the task playbooks this server supports — systematic learning from bookmarks, organising into themes, cleaning up, "},{"name":"get_skill","description":"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"},{"name":"get_library_overview","description":"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 cov"},{"name":"search_docs","description":"Answer questions about Tweetsmash itself — features, how-to, pricing, plans, limits, account/subscription. Searches the bundled product guide and returns the mo"},{"name":"get_bookmark","description":"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 "},{"name":"tag_bookmarks_by_filter","description":"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 aut"},{"name":"archive_bookmarks","description":"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 wi"},{"name":"archive_bookmarks_by_filter","description":"Apply archive/unarchive/delete/undelete to EVERY bookmark matching a filter, in one call. Destructive by nature — confirm with the user before delete. Reports c"},{"name":"list_smart_views","description":"List the user's Smart Views (saved filtered views). Each has a slug you pass to the other smart-view tools."},{"name":"get_smart_view","description":"Get a single Smart View by slug (its filter, tabs/buckets, and sort)."},{"name":"get_smart_view_bookmarks","description":"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":"create_smart_view","description":"Create a Smart View from a filter so the user can reuse it. Provide a name and the base_query (filter)."},{"name":"update_smart_view","description":"Update a Smart View (name, filter, tabs, sort) by slug."},{"name":"delete_smart_view","description":"Delete a Smart View by slug."},{"name":"create_share_link","description":"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 sh"},{"name":"revoke_share_link","description":"Revoke a previously created share link by its token."},{"name":"trigger_pdf_export","description":"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 app"},{"name":"trigger_csv_export","description":"Start a CSV export (explicit ids, a filter, or the whole library). Returns a job id; the file appears in the Export Center."},{"name":"trigger_json_export","description":"Start a JSON export (explicit ids, a filter, or the whole library). Returns a job id; the file appears in the Export Center."},{"name":"list_digest_preferences","description":"List the user's email-digest schedules (frequency, time, paused state) for bookmark and Smart View digests."},{"name":"update_digest_preference","description":"Update a digest schedule (enable/pause, frequency, time) by id."},{"name":"delete_digest_preference","description":"Remove a digest schedule by id."},{"name":"list_past_digests","description":"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."},{"name":"list_mash_digests","description":"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 "},{"name":"list_mash_digest_issues","description":"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 wh"},{"name":"get_mash_digest_issue","description":"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 w"},{"name":"compose_mash_digest","description":"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"},{"name":"get_sync_status","description":"Show the user's app-sync integrations (Notion, Google Sheets, Zotero): whether each is connected/enabled, synced vs pending counts, and any errors."},{"name":"get_bookmark_sync_status","description":"Show whether a specific bookmark has synced to a given integration connection."},{"name":"list_twitter_lists","description":"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. STA"},{"name":"get_list_tweets","description":"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 a"},{"name":"get_list_digests","description":"List past Twitter-list email digests for the user."},{"name":"send_list_digest","description":"Build and email a digest of a Twitter list's high-signal tweets to the user now."},{"name":"preview_list_ranking","description":"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 = matc"},{"name":"get_author_preferences","description":"The user's stated author preferences for list digests: `boost` = never-miss authors, `hide` = muted authors."},{"name":"set_author_preference","description":"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 "},{"name":"get_me","description":"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'."},{"name":"get_connection_status","description":"Check whether the user's tweets can be pulled: the X (Twitter) API connection (connected / disconnected), whether the browser extension has synced recently, and"},{"name":"fetch_recent_bookmarks","description":"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 extensio"},{"name":"remember","description":"Save a durable PREFERENCE about how this user wants their bookmark library handled — the themes they organise by, topics to exclude, preferred summary length/fo"},{"name":"recall","description":"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 y"},{"name":"forget","description":"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":"get_interests","description":"Read what this user is actually interested in, inferred from their saved bookmarks, hand labels, questions and digest clicks — not from anything they typed. Ret"},{"name":"correct_interest","description":"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"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.tweetsmash/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/com.tweetsmash%2Fmcp","firstSeenAt":"2026-09-05T22:18:26.604Z","fetchedAt":"2026-09-05T22:18:26.604Z","normalizedAt":"2026-09-05T22:18:26.604Z"}]},"firstSeenAt":"2026-09-05T22:18:26.604Z","updatedAt":"2026-09-06T00:28:24.590Z"}