Skip to main content
Glama
hmumixaM

USCardForum MCP Server

by hmumixaM

bookmark_post

Save forum posts with optional labels, reminders, and auto-deletion settings for organized reference in the USCardForum community.

Instructions

Bookmark a post for later reference. REQUIRES AUTHENTICATION.

Args:
    post_id: The numeric post ID to bookmark
    name: Optional label/name for the bookmark
    reminder_type: Optional reminder setting
    reminder_at: Optional reminder datetime (ISO format)
    auto_delete_preference: When to auto-delete (default: 3)
        - 0: Never
        - 1: When reminder sent
        - 2: On click
        - 3: Clear after 3 days

Must call login() first.

Returns a Bookmark object with the created bookmark information.

Use to save interesting posts for later reference.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
post_idYesThe numeric post ID to bookmark
nameNoLabel/name for the bookmark
reminder_typeNoReminder setting
reminder_atNoReminder datetime (ISO format)
auto_delete_preferenceNoWhen to auto-delete: 0=never, 1=when reminder sent, 2=on click, 3=after 3 days (default)

Implementation Reference

  • MCP tool handler for 'bookmark_post' decorated with @mcp.tool(). Defines input schema via Annotated Fields, executes by delegating to client.bookmark_post(), returns Bookmark model.
    @mcp.tool()
    def bookmark_post(
        post_id: Annotated[
            int,
            Field(description="The numeric post ID to bookmark"),
        ],
        name: Annotated[
            str | None,
            Field(default=None, description="Label/name for the bookmark"),
        ] = None,
        reminder_type: Annotated[
            int | None,
            Field(default=None, description="Reminder setting"),
        ] = None,
        reminder_at: Annotated[
            str | None,
            Field(default=None, description="Reminder datetime (ISO format)"),
        ] = None,
        auto_delete_preference: Annotated[
            int | None,
            Field(
                default=3,
                description="When to auto-delete: 0=never, 1=when reminder sent, 2=on click, 3=after 3 days (default)",
            ),
        ] = 3,
    ) -> Bookmark:
        """
        Bookmark a post for later reference. REQUIRES AUTHENTICATION.
    
        Args:
            post_id: The numeric post ID to bookmark
            name: Optional label/name for the bookmark
            reminder_type: Optional reminder setting
            reminder_at: Optional reminder datetime (ISO format)
            auto_delete_preference: When to auto-delete (default: 3)
                - 0: Never
                - 1: When reminder sent
                - 2: On click
                - 3: Clear after 3 days
    
        Must call login() first.
    
        Returns a Bookmark object with the created bookmark information.
    
        Use to save interesting posts for later reference.
        """
        return get_client().bookmark_post(
            post_id,
            name=name,
            reminder_type=reminder_type,
            reminder_at=reminder_at,
            auto_delete_preference=auto_delete_preference,
        )
  • Core API implementation in AuthAPI.bookmark_post: constructs form data, adds CSRF, performs HTTP POST to /bookmarks.json, parses response into Bookmark.
    def bookmark_post(
        self,
        post_id: int,
        name: str | None = None,
        reminder_type: int | None = None,
        reminder_at: str | None = None,
        auto_delete_preference: int | None = 3,
    ) -> Bookmark:
        """Bookmark a post (requires auth).
    
        Args:
            post_id: Post ID to bookmark
            name: Optional bookmark name
            reminder_type: Optional reminder type
            reminder_at: Optional reminder datetime (ISO format)
            auto_delete_preference: Auto-delete setting (default: 3)
    
        Returns:
            Created bookmark
        """
        self._require_auth()
        token = self._csrf_token or self.fetch_csrf_token()
    
        form: dict[str, Any] = {
            "bookmarkable_type": "Post",
            "bookmarkable_id": int(post_id),
        }
        if name is not None:
            form["name"] = name
        if reminder_type is not None:
            form["reminder_type"] = str(reminder_type)
        if reminder_at is not None:
            form["reminder_at"] = reminder_at
        if auto_delete_preference is not None:
            form["auto_delete_preference"] = str(int(auto_delete_preference))
    
        headers = {
            "Accept": "*/*",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
            "X-CSRF-Token": token,
            "X-Requested-With": "XMLHttpRequest",
            "Referer": f"{self._base_url}/",
        }
    
        payload = self._post("/bookmarks.json", data=form, headers=headers)
        return Bookmark(
            id=payload.get("id", 0),
            bookmarkable_id=post_id,
            bookmarkable_type="Post",
            name=name,
            auto_delete_preference=auto_delete_preference or 3,
        )
  • Client wrapper DiscourseClient.bookmark_post: delegates to self._auth.bookmark_post (AuthAPI). Called by MCP tool via get_client().
    def bookmark_post(
        self,
        post_id: int,
        name: str | None = None,
        reminder_type: int | None = None,
        reminder_at: str | None = None,
        auto_delete_preference: int | None = 3,
    ) -> Bookmark:
        """Bookmark a post (requires auth).
    
        Args:
            post_id: Post ID to bookmark
            name: Optional bookmark name
            reminder_type: Optional reminder type
            reminder_at: Optional reminder datetime
            auto_delete_preference: Auto-delete setting (default: 3)
    
        Returns:
            Created bookmark
        """
        return self._auth.bookmark_post(
            post_id,
            name=name,
            reminder_type=reminder_type,
            reminder_at=reminder_at,
            auto_delete_preference=auto_delete_preference,
        )
  • Re-exports bookmark_post from .auth in server_tools __init__.py for package-level access and MCP tool discovery.
    from .auth import (
        login,
        get_current_session,
        get_notifications,
        bookmark_post,
        subscribe_topic,
    )
  • Imports bookmark_post (line 17) and all MCP tools into main server.py entrypoint, enabling auto-registration via @mcp.tool() decorators.
    from uscardforum.server_tools import (
        analyze_user,
        bookmark_post,
        compare_cards,
        find_data_points,
        get_all_topic_posts,
        get_categories,
        get_current_session,
        get_hot_topics,
        get_new_topics,
        get_notifications,
        get_top_topics,
        get_topic_info,
        get_topic_posts,
        get_user_actions,
        get_user_badges,
        get_user_followers,
        get_user_following,
        get_user_reactions,
        get_user_replies,
        get_user_summary,
        get_user_topics,
        list_users_with_badge,
        login,
        research_topic,
        resource_categories,
        resource_hot_topics,
        resource_new_topics,
        search_forum,
        subscribe_topic,
    )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hmumixaM/uscardforum-mcp4'

If you have feedback or need assistance with the MCP directory API, please join our Discord server