subscribe_topic
Set notification preferences for USCardForum topics to control when you receive alerts. Choose from muted, normal, tracking, or watching levels to manage your forum notifications effectively.
Instructions
Set your notification level for a topic. REQUIRES AUTHENTICATION.
Args:
topic_id: The topic ID to subscribe to
level: Notification level:
- 0: Muted (no notifications)
- 1: Normal (only if mentioned)
- 2: Tracking (notify on replies to your posts)
- 3: Watching (notify on all new posts)
Must call login() first.
Returns a SubscriptionResult with:
- success: Whether subscription succeeded
- notification_level: The new notification level
Use to:
- Watch topics for all updates (level=3)
- Mute noisy topics (level=0)
- Track topics you've contributed to (level=2)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| topic_id | Yes | The topic ID to subscribe to | |
| level | No | Notification level: 0=muted, 1=normal, 2=tracking (default), 3=watching |
Implementation Reference
- MCP tool handler for subscribe_topic. Decorated with @mcp.tool(), defines input schema via Annotated Fields, calls the client implementation, returns SubscriptionResult.@mcp.tool() def subscribe_topic( topic_id: Annotated[ int, Field(description="The topic ID to subscribe to"), ], level: Annotated[ int, Field( default=2, description="Notification level: 0=muted, 1=normal, 2=tracking (default), 3=watching", ), ] = 2, ) -> SubscriptionResult: """ Set your notification level for a topic. REQUIRES AUTHENTICATION. Args: topic_id: The topic ID to subscribe to level: Notification level: - 0: Muted (no notifications) - 1: Normal (only if mentioned) - 2: Tracking (notify on replies to your posts) - 3: Watching (notify on all new posts) Must call login() first. Returns a SubscriptionResult with: - success: Whether subscription succeeded - notification_level: The new notification level Use to: - Watch topics for all updates (level=3) - Mute noisy topics (level=0) - Track topics you've contributed to (level=2) """ return get_client().subscribe_topic(topic_id, level=level)
- Pydantic model defining the output schema for subscribe_topic tool: success boolean and notification_level enum.class SubscriptionResult(BaseModel): """Result of subscribing to a topic.""" success: bool = Field(..., description="Whether subscription succeeded") notification_level: NotificationLevel = Field( NotificationLevel.NORMAL, description="New notification level" ) class Config: extra = "ignore"
- src/uscardforum/server_tools/__init__.py:52-58 (registration)Imports subscribe_topic from auth.py into server_tools namespace, grouping it under Auth tools for exposure to MCP server.from .auth import ( login, get_current_session, get_notifications, bookmark_post, subscribe_topic, )
- src/uscardforum/server.py:42-45 (registration)Imports subscribe_topic into the main MCP server entrypoint, adding it to __all__ for automatic @mcp.tool() registration.resource_new_topics, search_forum, subscribe_topic, )
- src/uscardforum/api/auth.py:308-343 (helper)Low-level API implementation in AuthAPI that performs the HTTP POST to set topic notification level, called by client.subscribe_topic.def subscribe_topic( self, topic_id: int, level: NotificationLevel = NotificationLevel.TRACKING, ) -> SubscriptionResult: """Set topic notification level (requires auth). Args: topic_id: Topic ID level: Notification level (MUTED, NORMAL, TRACKING, WATCHING) Returns: Subscription result """ self._require_auth() if not isinstance(level, NotificationLevel): level = NotificationLevel(level) token = self._csrf_token or self.fetch_csrf_token() 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}/t/{int(topic_id)}", } self._post( f"/t/{int(topic_id)}/notifications", data={"notification_level": str(int(level))}, headers=headers, ) return SubscriptionResult(success=True, notification_level=level)