_ registry / mcp http-sse · checked 3h ago

tweetsmash-mcp

https://mcp.tweetsmash.com

Registry code: 849f06d0ae91f471

api record

Tweetsmash is the user's personal archive of the X (Twitter) posts they saved.

Use it when the user refers to something they already bookmarked, saved or read on X and want it back. Reach for search_bookmarks first; fall back to list_bookmarks with filters when the query is structural (an author, a label, a date range) rather than semantic.

endpoint
https://mcp.tweetsmash.com/api/mcp
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is tweetsmash-mcp live?
Yes — it answered the hub's last check (checked 3h ago). It answered 100% of checks over the last 30 days.
Is tweetsmash-mcp free to use?
Yes — the hub reached it with no key and no payment.
What tools does tweetsmash-mcp have?
53 tools: get_smart_view, add_labels_to_tweets, list_likes, search_bookmarks, remove_labels_from_tweets, get_bookmark, list_mash_digests, list_mash_digest_issues, ….
Is tweetsmash-mcp safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 99.8%· all time 99.8%

latency
490ms

last good check

priced tools
0

of 53 tools

_ answered our checks, 90 days 442 checks · signed record
  • degraded → live
  • degraded → live
  • live → degraded· timeout after 20000ms
  • unknown → live
_ what it is for
used for
  • search my saved x bookmarks
  • label or archive bookmarks
  • create a share link for bookmarks
  • export bookmarks to pdf
  • compose a bookmark digest
takes → gives
text → data, documents
tools
14 reads11 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

inferred, not observed

Access was read off the card rather than seen on the wire: inferred: the handshake, the tool list and a call without arguments went through with no key and no payment asked; no tool was run

_ what it can do 53 tools
53 never probed 0 of 53 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_smart_view unknown 42d ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "minLength": 1,
          "description": "The smart view slug."
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • add_labels_to_tweets changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "tweet_ids"
      ],
      "properties": {
        "label_id": {
          "type": "string",
          "description": "ID of existing label (use either label_id or label_name)"
        },
        "tweet_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "description": "Array of tweet IDs to add the label to"
        },
        "label_name": {
          "type": "string",
          "description": "Name of the label to create/add (use either label_id or label_name)"
        }
      },
      "additionalProperties": false
    }
    arguments 26 lines
  • list_likes unknown 44d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "tag": {
          "type": "string",
          "description": "Filter by tag"
        },
        "limit": {
          "type": "number",
          "default": 20,
          "maximum": 100,
          "minimum": 1,
          "description": "Number of bookmarks to retrieve (1-100)"
        },
        "author": {
          "type": "string",
          "description": "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."
        },
        "cursor": {
          "type": "string",
          "description": "Pagination cursor for next page"
        },
        "sort_by": {
          "enum": [
            "POSTED_DATE_ASC",
            "POSTED_DATE_DESC",
            "OLDEST_FIRST",
            "NEWEST_FIRST"
          ],
          "type": "string",
          "default": "NEWEST_FIRST",
          "description": "Sort order for results"
        },
        "posted_to": {
          "type": "string",
          "description": "Filter tweets posted before this date (ISO 8601 string)"
        },
        "media_type": {
          "enum": [
            "thread",
            "media",
            "replies",
            "notes",
            "links",
            "article"
          ],
          "type": "string",
          "description": "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": {
          "type": "string",
          "description": "Filter tweets posted after this date (ISO 8601 string)"
        },
        "sort_cursor": {
          "type": "string",
          "description": "Cursor for pagination when using sort_by (use value from meta.sort_cursor of previous response)"
        },
        "bookmarked_to": {
          "type": "string",
          "description": "Filter bookmarks added before this date (ISO 8601 string)"
        },
        "hide_archived": {
          "type": "boolean",
          "description": "Hide archived bookmarks"
        },
        "is_unread_only": {
          "type": "boolean",
          "description": "Filter to only unread bookmarks"
        },
        "bookmarked_from": {
          "type": "string",
          "description": "Filter bookmarks added after this date (ISO 8601 string)"
        }
      },
      "additionalProperties": false
    }
    arguments 77 lines
  • search_bookmarks reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "q": {
          "type": "string",
          "minLength": 1,
          "description": "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."
        },
        "tag": {
          "type": "string",
          "description": "Filter by tag"
        },
        "limit": {
          "type": "number",
          "default": 20,
          "maximum": 100,
          "minimum": 1,
          "description": "Number of bookmarks to retrieve (1-100)"
        },
        "author": {
          "type": "string",
          "description": "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."
        },
        "cursor": {
          "type": "string",
          "description": "Pagination cursor for next page"
        },
        "sort_by": {
          "enum": [
            "POSTED_DATE_ASC",
            "POSTED_DATE_DESC",
            "OLDEST_FIRST",
            "NEWEST_FIRST"
          ],
          "type": "string",
          "default": "NEWEST_FIRST",
          "description": "Sort order for results"
        },
        "posted_to": {
          "type": "string",
          "description": "Filter tweets posted before this date (ISO 8601 string)"
        },
        "media_type": {
          "enum": [
            "thread",
            "media",
            "replies",
            "notes",
            "links",
            "article"
          ],
          "type": "string",
          "description": "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": {
          "type": "string",
          "description": "Filter tweets posted after this date (ISO 8601 string)"
        },
        "sort_cursor": {
          "type": "string",
          "description": "Cursor for pagination when using sort_by (use value from meta.sort_cursor of previous response)"
        },
        "bookmarked_to": {
          "type": "string",
          "description": "Filter bookmarks added before this date (ISO 8601 string)"
        },
        "hide_archived": {
          "type": "boolean",
          "description": "Hide archived bookmarks"
        },
        "is_unread_only": {
          "type": "boolean",
          "description": "Filter to only unread bookmarks"
        },
        "bookmarked_from": {
          "type": "string",
          "description": "Filter bookmarks added after this date (ISO 8601 string)"
        },
        "vector_search_term": {
          "type": "string",
          "minLength": 1,
          "description": "Semantic search query for retrieving bookmarks based on meaning and context, not just keywords. Use for natural language questions or topic-based searches."
        }
      },
      "additionalProperties": false
    }
    arguments 87 lines
  • remove_labels_from_tweets unknown never probed

    Remove a label from a list of tweets using label_name.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "tweet_ids",
        "label_name"
      ],
      "properties": {
        "tweet_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "description": "Array of tweet IDs to remove label from"
        },
        "label_name": {
          "type": "string",
          "minLength": 1,
          "description": "Name of the label to remove"
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
  • get_bookmark unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "description": "The tweet/bookmark id to fetch."
        },
        "include": {
          "type": "string",
          "description": "Comma list of extra content to include: article,thread,notes,replies. Defaults to article,thread,notes."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • list_mash_digests unknown 44d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • list_mash_digest_issues reads unknown 44d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "How many issues, newest first. Default 20."
        },
        "digest_id": {
          "type": "string",
          "description": "Narrow to one digest (from list_mash_digests). Omit for every digest."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • preview_list_ranking reads unknown 42d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "connect_id"
      ],
      "properties": {
        "sort": {
          "enum": [
            "auto",
            "popular"
          ],
          "type": "string",
          "description": "auto (the digest's blend) or popular (engagement-led)."
        },
        "limit": {
          "type": "number",
          "maximum": 40,
          "minimum": 1,
          "description": "How many ranked units to return (default 20)."
        },
        "list_id": {
          "type": "string",
          "description": "The X list id, if known."
        },
        "connect_id": {
          "type": "string",
          "minLength": 1,
          "description": "The list connection id (the `connect_id` from list_twitter_lists)."
        },
        "window_days": {
          "type": "number",
          "maximum": 7,
          "minimum": 1,
          "description": "Look-back window in days (default 1)."
        }
      },
      "additionalProperties": false
    }
    arguments 39 lines
  • revoke_share_link unknown never probed

    Revoke a previously created share link by its token.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "token"
      ],
      "properties": {
        "token": {
          "type": "string",
          "minLength": 1,
          "description": "The share link token to revoke."
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • delete_smart_view unknown never probed

    Delete a Smart View by slug.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "minLength": 1,
          "description": "The smart view slug."
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • create_share_link changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "value": {
          "type": "string"
        },
        "filter": {
          "type": "string"
        },
        "tweet_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Explicit ids to export. Omit to export everything matching the filter, or the whole library."
        },
        "search_query": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • get_list_digests unknown 45d ago

    List past Twitter-list email digests for the user.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_author_preferences unknown 46d ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • list_bookmarks unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "tag": {
          "type": "string",
          "description": "Filter by tag"
        },
        "limit": {
          "type": "number",
          "default": 20,
          "maximum": 100,
          "minimum": 1,
          "description": "Number of bookmarks to retrieve (1-100)"
        },
        "author": {
          "type": "string",
          "description": "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."
        },
        "cursor": {
          "type": "string",
          "description": "Pagination cursor for next page"
        },
        "sort_by": {
          "enum": [
            "POSTED_DATE_ASC",
            "POSTED_DATE_DESC",
            "OLDEST_FIRST",
            "NEWEST_FIRST"
          ],
          "type": "string",
          "default": "NEWEST_FIRST",
          "description": "Sort order for results"
        },
        "posted_to": {
          "type": "string",
          "description": "Filter tweets posted before this date (ISO 8601 string)"
        },
        "media_type": {
          "enum": [
            "thread",
            "media",
            "replies",
            "notes",
            "links",
            "article"
          ],
          "type": "string",
          "description": "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": {
          "type": "string",
          "description": "Filter tweets posted after this date (ISO 8601 string)"
        },
        "sort_cursor": {
          "type": "string",
          "description": "Cursor for pagination when using sort_by (use value from meta.sort_cursor of previous response)"
        },
        "bookmarked_to": {
          "type": "string",
          "description": "Filter bookmarks added before this date (ISO 8601 string)"
        },
        "hide_archived": {
          "type": "boolean",
          "description": "Hide archived bookmarks"
        },
        "is_unread_only": {
          "type": "boolean",
          "description": "Filter to only unread bookmarks"
        },
        "bookmarked_from": {
          "type": "string",
          "description": "Filter bookmarks added after this date (ISO 8601 string)"
        }
      },
      "additionalProperties": false
    }
    arguments 77 lines
  • get_bookmark_count reads unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "tag": {
          "type": "string",
          "description": "Filter by tag"
        },
        "author": {
          "type": "string",
          "description": "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."
        },
        "posted_to": {
          "type": "string",
          "description": "Filter tweets posted before this date (ISO 8601 string)"
        },
        "media_type": {
          "enum": [
            "thread",
            "media",
            "replies",
            "notes",
            "links",
            "article"
          ],
          "type": "string",
          "description": "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": {
          "type": "string",
          "description": "Filter tweets posted after this date (ISO 8601 string)"
        },
        "bookmarked_to": {
          "type": "string",
          "description": "Filter bookmarks added before this date (ISO 8601 string)"
        },
        "hide_archived": {
          "type": "boolean",
          "description": "Hide archived bookmarks"
        },
        "is_unread_only": {
          "type": "boolean",
          "description": "Filter to only unread bookmarks"
        },
        "bookmarked_from": {
          "type": "string",
          "description": "Filter bookmarks added after this date (ISO 8601 string)"
        }
      },
      "additionalProperties": false
    }
    arguments 51 lines
  • list_labels reads unknown 44d ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • search_docs reads unknown 42d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "query": {
          "type": "string",
          "description": "What the user is asking about the product (pricing, a feature, how-to). Empty returns the list of help topics."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • archive_bookmarks changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "action",
        "tweet_ids"
      ],
      "properties": {
        "action": {
          "enum": [
            "archive",
            "unarchive",
            "delete",
            "undelete",
            "read",
            "unread"
          ],
          "type": "string",
          "description": "The action to apply."
        },
        "tweet_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1,
          "description": "Bookmark ids to act on (max 500)."
        }
      },
      "additionalProperties": false
    }
    arguments 31 lines
  • create_smart_view unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "View name."
        },
        "base_query": {
          "type": "string",
          "description": "The filter query that defines the view."
        },
        "description": {
          "type": "string"
        },
        "default_sort": {
          "type": "string"
        },
        "triage_buckets": {
          "description": "Optional tab/bucket definitions."
        }
      },
      "additionalProperties": false
    }
    arguments 28 lines
  • update_smart_view unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string",
          "minLength": 1,
          "description": "The smart view slug to update."
        },
        "base_query": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "default_sort": {
          "type": "string"
        },
        "triage_buckets": {}
      },
      "additionalProperties": false
    }
    arguments 28 lines
  • trigger_pdf_export changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "value": {
          "type": "string"
        },
        "filter": {
          "type": "string"
        },
        "tweet_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Explicit ids to export. Omit to export everything matching the filter, or the whole library."
        },
        "search_query": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • trigger_csv_export unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "value": {
          "type": "string"
        },
        "filter": {
          "type": "string"
        },
        "tweet_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Explicit ids to export. Omit to export everything matching the filter, or the whole library."
        },
        "search_query": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • get_sync_status reads unknown 45d ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • send_list_digest unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "connect_id"
      ],
      "properties": {
        "list_id": {
          "type": "string",
          "description": "The X list id, if required."
        },
        "connect_id": {
          "type": "string",
          "minLength": 1,
          "description": "The list connection id."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • get_me reads unknown 45d ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • forget changes data unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "key": {
          "type": "string",
          "description": "The memory key to forget."
        },
        "kind": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • list_past_digests reads unknown 44d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • update_digest_preference unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "description": "The digest preference id to update."
        },
        "is_paused": {
          "type": "boolean"
        },
        "week_info": {},
        "is_enabled": {
          "type": "boolean"
        },
        "time_to_read": {},
        "schedule_time": {
          "type": "string"
        },
        "send_frequency": {
          "type": "string",
          "description": "e.g. DAILY, WEEKLY."
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • delete_label unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "label_id": {
          "type": [
            "string",
            "number"
          ],
          "description": "The label's id. Use this when a name matched more than one label."
        },
        "label_name": {
          "type": "string",
          "minLength": 1,
          "description": "Name of the label to delete, exactly as it appears in list_labels."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • setup_vector_store changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • list_skills unknown 44d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_skill unknown 45d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "name": {
          "type": "string",
          "description": "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 job — the closest match is returned either way, so passing the user's own words is fine."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • get_library_overview reads unknown 45d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • delete_digest_preference changes data unknown never probed

    Remove a digest schedule by id.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "description": "The digest preference id."
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • tag_bookmarks_by_filter changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "q": {
          "type": "string",
          "description": "Keyword search to scope which bookmarks get tagged."
        },
        "tag": {
          "type": "string",
          "description": "Filter by tag"
        },
        "author": {
          "type": "string",
          "description": "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."
        },
        "label_id": {
          "type": "string",
          "description": "Existing label id (use label_id or label_name)."
        },
        "posted_to": {
          "type": "string",
          "description": "Filter tweets posted before this date (ISO 8601 string)"
        },
        "label_name": {
          "type": "string",
          "description": "Label to create/apply (use label_id or label_name)."
        },
        "media_type": {
          "enum": [
            "thread",
            "media",
            "replies",
            "notes",
            "links",
            "article"
          ],
          "type": "string",
          "description": "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": {
          "type": "string",
          "description": "Filter tweets posted after this date (ISO 8601 string)"
        },
        "bookmarked_to": {
          "type": "string",
          "description": "Filter bookmarks added before this date (ISO 8601 string)"
        },
        "hide_archived": {
          "type": "boolean",
          "description": "Hide archived bookmarks"
        },
        "is_unread_only": {
          "type": "boolean",
          "description": "Filter to only unread bookmarks"
        },
        "bookmarked_from": {
          "type": "string",
          "description": "Filter bookmarks added after this date (ISO 8601 string)"
        }
      },
      "additionalProperties": false
    }
    arguments 63 lines
  • archive_bookmarks_by_filter unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "action"
      ],
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "value": {
          "type": "string"
        },
        "action": {
          "enum": [
            "archive",
            "unarchive",
            "delete",
            "undelete"
          ],
          "type": "string",
          "description": "The action to apply to every match."
        },
        "filter": {
          "type": "string"
        },
        "search_query": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • list_smart_views reads unknown 44d ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_smart_view_bookmarks reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "minLength": 1,
          "description": "The smart view slug."
        },
        "limit": {
          "type": "number",
          "maximum": 100,
          "minimum": 1,
          "description": "Page size (1-100)."
        },
        "bucket": {
          "type": "string",
          "description": "Which tab/bucket of the view to read (default: all)."
        },
        "cursor": {
          "type": "number",
          "description": "Numeric offset for the next page."
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • trigger_json_export unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "value": {
          "type": "string"
        },
        "filter": {
          "type": "string"
        },
        "tweet_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Explicit ids to export. Omit to export everything matching the filter, or the whole library."
        },
        "search_query": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • list_digest_preferences unknown 45d ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_mash_digest_issue reads unknown 42d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "issue_id"
      ],
      "properties": {
        "issue_id": {
          "type": "string",
          "minLength": 1,
          "description": "The issue id, from list_mash_digest_issues."
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • compose_mash_digest changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "digest_id"
      ],
      "properties": {
        "digest_id": {
          "type": "string",
          "minLength": 1,
          "description": "Which digest to compose, from list_mash_digests."
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • get_bookmark_sync_status reads unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "tweet_id",
        "connect_id"
      ],
      "properties": {
        "tweet_id": {
          "type": "string",
          "minLength": 1
        },
        "connect_id": {
          "type": "string",
          "minLength": 1,
          "description": "The integration connection id."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • list_twitter_lists unknown 44d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_list_tweets unknown 42d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "connect_id"
      ],
      "properties": {
        "sort": {
          "enum": [
            "LATEST",
            "POPULARITY"
          ],
          "type": "string",
          "description": "LATEST or POPULARITY (trending/top)."
        },
        "hours": {
          "type": "number",
          "description": "Look-back window in hours (default 24)."
        },
        "limit": {
          "type": "number",
          "maximum": 100,
          "minimum": 1
        },
        "connect_id": {
          "type": "string",
          "minLength": 1,
          "description": "The list connection id (the `connect_id` from list_twitter_lists)."
        },
        "max_age_hours": {
          "type": "number",
          "minimum": 0,
          "description": "How stale cached tweets may be before refetching from X (default 4). Pass 0 to force a fresh fetch."
        }
      },
      "additionalProperties": false
    }
    arguments 37 lines
  • set_author_preference unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "handle",
        "action"
      ],
      "properties": {
        "action": {
          "enum": [
            "boost",
            "hide",
            "clear"
          ],
          "type": "string",
          "description": "boost = never miss this author in list digests; hide = mute them; clear = remove any preference."
        },
        "handle": {
          "type": "string",
          "minLength": 1,
          "description": "The author's X handle, with or without the @."
        }
      },
      "additionalProperties": false
    }
    arguments 25 lines
  • get_connection_status unknown 46d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • fetch_recent_bookmarks changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "max": {
          "type": "number",
          "maximum": 800,
          "minimum": 1,
          "description": "How many recent bookmarks to pull (max 800)."
        },
        "force": {
          "type": "boolean",
          "description": "Force the pull even if a recent sync exists."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • remember changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "kind",
        "key",
        "value"
      ],
      "properties": {
        "key": {
          "type": "string",
          "minLength": 1,
          "description": "A short stable key, e.g. organising_themes or summary_format. Reusing a key updates that preference instead of duplicating it."
        },
        "kind": {
          "enum": [
            "preference",
            "style",
            "fact",
            "instruction"
          ],
          "type": "string",
          "description": "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); instruction = a standing rule."
        },
        "mode": {
          "type": "string"
        },
        "value": {
          "type": "string",
          "maxLength": 2000,
          "minLength": 1,
          "description": "The preference itself, in plain words. Never a secret, token or password."
        }
      },
      "additionalProperties": false
    }
    arguments 36 lines
  • recall unknown 44d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "query": {
          "type": "string",
          "description": "Optional substring to filter the preferences returned."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • get_interests unknown 46d ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • correct_interest unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "interest_key",
        "action"
      ],
      "properties": {
        "value": {
          "type": "string",
          "maxLength": 120,
          "description": "Required for rename: the user's own name for this interest."
        },
        "action": {
          "enum": [
            "confirm",
            "boost",
            "rename",
            "hide",
            "forget"
          ],
          "type": "string",
          "description": "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 = ERASE the underlying history, irreversible."
        },
        "interest_key": {
          "type": "string",
          "minLength": 1,
          "description": "The interest's key, exactly as returned by get_interests."
        }
      },
      "additionalProperties": false
    }
    arguments 32 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 849f06d0ae91f471.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/849f06d0ae91f471/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/849f06d0ae91f471/badge.svg)](https://brick.blue/agent/849f06d0ae91f471?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.

_ also on tweetsmash.com 1 entry

Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.