{
  "$schema": "https://www.tweetsmash.com/.well-known/agent-skills/index.json",
  "version": "1.0",
  "provider": {
    "name": "Tweetsmash",
    "url": "https://www.tweetsmash.com",
    "description": "Save, search, organize and export your X (Twitter) bookmarks."
  },
  "auth": {
    "type": "bearer",
    "documentation": "https://www.tweetsmash.com/auth.md",
    "protectedResourceMetadata": "https://www.tweetsmash.com/.well-known/oauth-protected-resource"
  },
  "surfaces": {
    "mcp": "https://mcp.tweetsmash.com/api/mcp",
    "rest": "https://api.tweetsmash.com/v1",
    "openapi": "https://www.tweetsmash.com/openapi.json"
  },
  "skills": [
    {
      "name": "search-saved-posts",
      "description": "Find a post the user saved earlier, by keyword, author, label, media type or date range. Use this first whenever the user says they saved, bookmarked or read something on X and cannot find it again.",
      "whenToUse": "The user refers to something they already saved on X and wants it back.",
      "whenNotToUse": "Searching public X or the open web. Tweetsmash only sees the account's own saved posts.",
      "tools": ["search_bookmarks", "list_bookmarks", "get_bookmark", "get_bookmark_count"],
      "rest": ["GET /v1/bookmarks", "GET /v1/bookmarks/{id}", "GET /v1/bookmarks/count"],
      "examples": [
        "find the thread I saved about postgres indexes",
        "what did I bookmark from @simonw last month",
        "show me the bookmarks I saved with images"
      ]
    },
    {
      "name": "organize-saved-posts",
      "description": "Apply, remove and manage labels on saved posts, one at a time or in bulk across everything matching a filter.",
      "whenToUse": "The user wants their saved posts tidied, tagged or grouped.",
      "tools": ["list_labels", "add_labels_to_tweets", "remove_labels_from_tweets", "tag_bookmarks_by_filter", "delete_label", "archive_bookmarks", "archive_bookmarks_by_filter"],
      "rest": ["GET /v1/labels", "POST /v1/labels/add", "POST /v1/labels/remove", "POST /v1/labels/add-by-filter", "POST /v1/labels/batch"],
      "examples": [
        "tag everything I saved from this author as research",
        "remove the 'read-later' label from anything older than a year"
      ]
    },
    {
      "name": "build-smart-views",
      "description": "Create and read saved filters (smart views) over the library so a recurring query becomes a named, re-runnable collection.",
      "whenToUse": "The user asks the same question of their library repeatedly, or wants a durable collection.",
      "tools": ["list_smart_views", "get_smart_view", "get_smart_view_bookmarks", "create_smart_view", "update_smart_view", "delete_smart_view"],
      "rest": ["GET /v1/views", "POST /v1/views", "GET /v1/views/{slug}", "PUT /v1/views/{slug}", "DELETE /v1/views/{slug}", "GET /v1/views/{slug}/bookmarks"],
      "examples": ["make a saved view of everything I tagged design"]
    },
    {
      "name": "export-saved-posts",
      "description": "Turn a selection of saved posts into a PDF, CSV or JSON file. Exports are asynchronous: the call returns 202 with a job id and a Location to poll.",
      "whenToUse": "The user wants their saved posts out of Tweetsmash and into a file or another tool.",
      "tools": ["trigger_pdf_export", "trigger_csv_export", "trigger_json_export"],
      "rest": ["POST /v1/exports/pdf", "POST /v1/exports/csv", "POST /v1/exports/json", "GET /v1/exports/{job_id}"],
      "async": true,
      "examples": ["export everything I saved this year as a PDF"]
    },
    {
      "name": "read-digests",
      "description": "Read and configure the recurring reading digests Tweetsmash builds from saved posts and followed X Lists.",
      "whenToUse": "The user asks what is in their digest, or wants the schedule changed.",
      "tools": ["list_digest_preferences", "update_digest_preference", "delete_digest_preference", "list_past_digests", "list_mash_digests", "list_mash_digest_issues", "get_mash_digest_issue", "compose_mash_digest"],
      "rest": ["GET /v1/digests", "GET /v1/digests/issues", "GET /v1/digests/issues/{id}"],
      "examples": ["what was in my last digest"]
    },
    {
      "name": "recall-user-context",
      "description": "Store and retrieve durable notes about the user and their interests so later sessions do not start cold.",
      "whenToUse": "Something learned in this session should survive it, or earlier context is needed.",
      "tools": ["remember", "recall", "forget", "get_interests", "correct_interest"],
      "rest": ["GET /v1/memories", "POST /v1/memories", "DELETE /v1/memories", "GET /v1/interests", "POST /v1/interests/correct"],
      "examples": ["remember that I am researching retrieval systems"]
    },
    {
      "name": "check-account-and-sync",
      "description": "Check who is authenticated, whether the X connection is healthy, and whether the bookmark sync is current, before blaming an empty result on a missing post.",
      "whenToUse": "A search returns nothing, or a call fails, and the cause is unclear.",
      "tools": ["get_me", "get_connection_status", "get_sync_status", "get_bookmark_sync_status", "fetch_recent_bookmarks"],
      "readOnly": true,
      "examples": ["why are my recent bookmarks missing"]
    }
  ]
}
