get_user_summary
Fetch a user's profile summary to evaluate credibility, find valuable contributions, and understand participation level on USCardForum.
Instructions
Fetch a comprehensive summary of a user's profile.
Args:
username: The user's handle (case-insensitive)
Returns a UserSummary object with:
- user_id: User ID
- username: Username
- stats: UserStats with posts, topics, likes given/received, etc.
- badges: List of recent Badge objects
- top_topics: Most successful topics
- top_replies: Most successful replies
Use this to:
- Evaluate a user's credibility and experience
- Find their most valuable contributions
- Understand their participation level
The summary provides a quick overview without fetching
individual post histories.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | The user's handle (case-insensitive) |
Implementation Reference
- Primary MCP tool handler for 'get_user_summary'. The @mcp.tool() decorator registers the tool and defines the input schema (username: str). Implementation delegates to DiscourseClient.get_user_summary().@mcp.tool() def get_user_summary( username: Annotated[ str, Field(description="The user's handle (case-insensitive)"), ], ) -> UserSummary: """ Fetch a comprehensive summary of a user's profile. Args: username: The user's handle (case-insensitive) Returns a UserSummary object with: - user_id: User ID - username: Username - stats: UserStats with posts, topics, likes given/received, etc. - badges: List of recent Badge objects - top_topics: Most successful topics - top_replies: Most successful replies Use this to: - Evaluate a user's credibility and experience - Find their most valuable contributions - Understand their participation level The summary provides a quick overview without fetching individual post histories. """ return get_client().get_user_summary(username)
- Pydantic model defining the output schema for UserSummary returned by the tool.class UserSummary(BaseModel): """Comprehensive user profile summary.""" user_id: int | None = Field(None, description="User ID") username: str | None = Field(None, description="Username") name: str | None = Field(None, description="Display name") created_at: datetime | None = Field(None, description="Account creation date") last_seen_at: datetime | None = Field(None, description="Last seen online") stats: UserStats | None = Field(None, description="User statistics") badges: list[Badge] = Field(default_factory=list, description="Recent badges") top_topics: list[Any] = Field(default_factory=list, description="Top topics") top_replies: list[Any] = Field(default_factory=list, description="Top replies") class Config: extra = "ignore"
- src/uscardforum/server.py:15-45 (registration)Imports all MCP tools including get_user_summary from server_tools package, triggering registration via @mcp.tool() decorators when the server starts.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, )
- src/uscardforum/api/users.py:34-79 (helper)Core API implementation in UsersAPI that fetches /u/{username}/summary.json and constructs the UserSummary object.def get_user_summary(self, username: str) -> UserSummary: """Fetch user profile summary. Args: username: User handle Returns: Comprehensive user summary """ payload = self._get(f"/u/{username}/summary.json") # Extract user stats from various locations user_summary = payload.get("user_summary", {}) user = payload.get("users", [{}])[0] if payload.get("users") else {} stats = UserStats( likes_given=user_summary.get("likes_given", 0), likes_received=user_summary.get("likes_received", 0), days_visited=user_summary.get("days_visited", 0), post_count=user_summary.get("post_count", 0), topic_count=user_summary.get("topic_count", 0), posts_read_count=user_summary.get("posts_read_count", 0), topics_entered=user_summary.get("topics_entered", 0), ) badges = [] for b in user_summary.get("badges", []): badges.append(Badge( id=b.get("id", 0), badge_id=b.get("badge_id", b.get("id", 0)), name=b.get("name", ""), description=b.get("description"), granted_at=b.get("granted_at"), )) return UserSummary( user_id=user.get("id"), username=user.get("username", username), name=user.get("name"), created_at=user.get("created_at"), last_seen_at=user.get("last_seen_at"), stats=stats, badges=badges, top_topics=user_summary.get("top_topics", []), top_replies=user_summary.get("top_replies", []), )
- src/uscardforum/client.py:310-322 (helper)Client wrapper that calls UsersAPI.get_user_summary and enriches top_topics with category names.def get_user_summary(self, username: str) -> UserSummary: """Fetch user profile summary. Args: username: User handle Returns: Comprehensive user summary """ summary = self._users.get_user_summary(username) if summary.top_topics: self._enrich_with_categories(summary.top_topics) return summary