Server Configuration
Describes the environment variables required to run the server.
Name | Required | Description | Default |
---|---|---|---|
No arguments |
Schema
Prompts
Interactive templates invoked by user choice
Name | Description |
---|---|
No prompts |
Resources
Contextual data attached and managed by the client
Name | Description |
---|---|
No resources |
Tools
Functions exposed to the LLM to take actions
Name | Description |
---|---|
check_server_status | Check the status of the Product Hunt MCP server and authentication.
Returns:
- status (str): "Ready", "Not initialized", "Token invalid", or "Error".
- authenticated (bool, optional): True if authenticated, False otherwise.
- user (dict, optional): User details if authenticated.
- rate_limits (dict, optional): API rate limit information.
- message (str, optional): Additional status or error message.
|
get_post_details | Retrieve detailed information about a specific Product Hunt post by ID or slug.
Parameters:
- id (str, optional): The post's unique ID.
- slug (str, optional): The post's slug (e.g., "product-hunt-api").
- comments_count (int, optional): Number of comments to return (default: 10, max: 20).
- comments_after (str, optional): Pagination cursor for fetching the next page of comments.
At least one of `id` or `slug` must be provided.
Returns:
- success (bool): Whether the request was successful.
- data (dict): If successful, contains:
- id, name, description, tagline, votes, makers, topics, media, and
- comments (paginated): { edges: [...], pageInfo: { endCursor, hasNextPage } }
- error (dict, optional): If unsuccessful, contains error code and message.
- rate_limits (dict): API rate limit information.
Notes:
- If neither `id` nor `slug` is provided, an error is returned.
- If the post is not found, an error is returned.
- The dedicated `get_post_comments` tool is deprecated; use this tool for paginated comments.
|
get_posts | Retrieve a list of Product Hunt posts with various filtering and sorting options.
Parameters:
- featured (bool, optional): Only return featured posts if True.
- topic (str, optional): Filter by topic slug.
- order (str, optional): Sorting order. Valid values: RANKING (default), NEWEST, VOTES, FEATURED_AT.
- count (int, optional): Number of posts to return (default: 10, max: 20).
- after (str, optional): Pagination cursor for next page.
- url (str, optional): Filter posts by URL.
- twitter_url (str, optional): Filter posts by Twitter URL.
- posted_before (str, optional): ISO datetime to filter posts posted before this date.
- posted_after (str, optional): ISO datetime to filter posts posted after this date.
Returns:
- success (bool)
- data (dict): If successful, contains:
- posts (list): List of post objects (id, name, description, etc.)
- pagination (dict): { end_cursor, has_next_page }
- error (dict, optional)
- rate_limits (dict)
Notes:
- This is not a keyword search; use filters to narrow results.
- If no posts match, `posts` will be an empty list.
- Invalid date formats return a user-friendly error.
|
get_comment | Retrieve detailed information about a specific comment by ID.
Parameters:
- id (str, required): The comment's unique ID.
Returns:
- success (bool)
- data (dict): If successful, contains comment details:
- id, content, created_at, user, post, etc.
- error (dict, optional)
- rate_limits (dict)
Notes:
- Returns an error if the comment is not found.
|
get_post_comments | Retrieve comments for a specific post by post ID or slug, with optional sorting and pagination.
Parameters:
- post_id (str, optional): The post's unique ID.
- slug (str, optional): The post's slug.
- order (str, optional): Sorting order. Valid values: NEWEST (default), OLDEST, VOTES.
- count (int, optional): Number of comments to return (default: 10, max: 20).
- after (str, optional): Pagination cursor for next page.
Returns:
- success (bool)
- data (dict): If successful, contains:
- comments (list): List of comment objects (id, content, etc.)
- pagination (dict): { end_cursor, has_next_page }
- error (dict, optional)
- rate_limits (dict)
Notes:
- Returns an error if the post is not found.
|
get_collection | Retrieve detailed information about a specific collection by ID or slug.
Parameters:
- id (str, optional): The collection's unique ID.
- slug (str, optional): The collection's slug (e.g., "best-productivity-apps").
At least one of `id` or `slug` must be provided.
Returns:
- success (bool)
- data (dict): If successful, contains collection details:
- id, name, description, follower_count, posts, etc.
- error (dict, optional)
- rate_limits (dict)
Notes:
- Returns an error if neither `id` nor `slug` is provided, or if the collection is not found.
|
get_collections | Retrieve a list of collections with optional filters.
Parameters:
- featured (bool, optional): Only return featured collections if True.
- user_id (str, optional): Filter to collections created by this user ID.
- post_id (str, optional): Filter to collections that include this post ID.
- order (str, optional): Sorting order. Valid values: FOLLOWERS_COUNT (default), NEWEST.
- count (int, optional): Number of collections to return (default: 10, max: 20).
- after (str, optional): Pagination cursor for next page.
Returns:
- success (bool)
- data (dict): If successful, contains:
- collections (list): List of collection objects (id, name, etc.)
- pagination (dict): { end_cursor, has_next_page }
- error (dict, optional)
- rate_limits (dict)
Notes:
- If no collections match, `collections` will be an empty list.
|
get_topic | Retrieve detailed information about a specific topic by ID or slug.
Parameters:
- id (str, optional): The topic's unique ID.
- slug (str, optional): The topic's slug (e.g., "artificial-intelligence").
At least one of `id` or `slug` must be provided.
Returns:
- success (bool)
- data (dict): If successful, contains topic details:
- id, name, description, follower_count, posts, etc.
- error (dict, optional)
- rate_limits (dict)
Notes:
- Returns an error if neither `id` nor `slug` is provided, or if the topic is not found.
|
search_topics | Search for topics by name or filter by user following, with optional sorting and pagination.
Parameters:
- query (str, optional): Search term to find topics by name.
- followed_by_user_id (str, optional): Only topics followed by this user ID.
- order (str, optional): Sorting order. Valid values: FOLLOWERS_COUNT (default), NAME, NEWEST.
- count (int, optional): Number of topics to return (default: 10, max: 20).
- after (str, optional): Pagination cursor for next page.
Returns:
- success (bool)
- data (dict): If successful, contains:
- topics (list): List of topic objects (id, name, etc.)
- pagination (dict): { end_cursor, has_next_page }
- error (dict, optional)
- rate_limits (dict)
Notes:
- If no topics match, `topics` will be an empty list.
|
get_user | Retrieve user information by ID or username, with optional retrieval of their posts.
Parameters:
- id (str, optional): The user's unique ID.
- username (str, optional): The user's username.
- posts_type (str, optional): Type of posts to retrieve. Valid values: MADE (default), VOTED.
- posts_count (int, optional): Number of posts to return (default: 10, max: 20).
- posts_after (str, optional): Pagination cursor for next page of posts.
At least one of `id` or `username` must be provided.
Returns:
- success (bool)
- data (dict): If successful, contains user details and optionally their posts.
- error (dict, optional)
- rate_limits (dict)
Notes:
- Returns an error if neither `id` nor `username` is provided, or if the user is not found.
|
get_viewer | Retrieve information about the currently authenticated user.
Parameters:
- None
Returns:
- success (bool)
- data (dict): If successful, contains user details.
- error (dict, optional)
- rate_limits (dict)
Notes:
- Returns an error if the token is invalid or expired.
|