Product Hunt MCP Server
Provides tools for accessing and querying Product Hunt data, including posts, collections, users, topics, comments, goals, maker groups, and viewer information via the Product Hunt API v2 (GraphQL).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Product Hunt MCP ServerGet today's featured Product Hunt posts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Product Hunt MCP Server
An MCP (Model Context Protocol) server that provides access to Product Hunt data through the Product Hunt API v2 (GraphQL).
Quick Start
npx @yilin-jing/producthunt-mcpRelated MCP server: WhoopMCP
Features
This MCP server provides comprehensive access to Product Hunt data including:
Post Operations
get_post - Get a Product Hunt post by ID or slug
get_posts - Get posts with filtering and ordering options
search_posts - Search posts by query
Collection Operations
get_collection - Get a collection by ID or slug
get_collections - Get collections with filtering options
User Operations
get_user - Get a user by ID or username
get_user_posts - Get posts made by a specific user
get_user_voted_posts - Get posts upvoted by a specific user
Topic Operations
get_topic - Get a topic by ID or slug
get_topics - Get topics with filtering options
Comment Operations
get_comment - Get a comment by ID
get_post_comments - Get comments on a specific post
Goal Operations
get_goal - Get a maker goal by ID
get_goals - Get maker goals with filtering options
Maker Group Operations
get_maker_group - Get a maker group (Space) by ID
get_maker_groups - Get maker groups with filtering options
Viewer Operations
get_viewer - Get the authenticated user information
Installation
Using npx (Recommended)
No installation required! Just configure Claude Desktop to use the server directly via npx.
Global Installation
npm install -g @yilin-jing/producthunt-mcpLocal Development
git clone https://github.com/Jing-yilin/producthunt-mcp-server.git
cd producthunt-mcp-server
npm install
npm run buildConfiguration
Environment Variables
Variable | Description |
| Your Product Hunt API access token (required) |
| HTTP/HTTPS proxy URL (optional) |
Getting an Access Token
Create a new application or use an existing one
Generate a Developer Token for simple scripts, or implement OAuth for user-based access
Claude Desktop Configuration
Add to your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Using npx (Recommended)
{
"mcpServers": {
"producthunt": {
"command": "npx",
"args": ["-y", "@yilin-jing/producthunt-mcp"],
"env": {
"PRODUCTHUNT_ACCESS_TOKEN": "your-access-token-here"
}
}
}
}Using Global Installation
{
"mcpServers": {
"producthunt": {
"command": "producthunt-mcp",
"env": {
"PRODUCTHUNT_ACCESS_TOKEN": "your-access-token-here"
}
}
}
}Usage Examples
Get Today's Featured Posts
Get the featured posts from Product Hunt todayGet a Specific Product
Get the Product Hunt post for "ChatGPT"Get User Information
Get the Product Hunt profile for username "rrhoover"Get Posts by Topic
Get the latest AI products on Product HuntGet Collections
Get the featured collections on Product HuntAPI Reference
Post Endpoints
get_post
Get a Product Hunt post by ID or slug.
Parameters:
id(string, optional): Post IDslug(string, optional): Post slug
get_posts
Get posts with filtering and ordering.
Parameters:
featured(boolean, optional): Filter by featured posts onlytopic(string, optional): Filter by topic slugpostedAfter(string, optional): Filter posts after this date (ISO 8601)postedBefore(string, optional): Filter posts before this date (ISO 8601)order(string, optional): Order by 'FEATURED_AT', 'NEWEST', 'RANKING', 'VOTES'first(integer, optional): Number of posts to return (default: 10, max: 20)after(string, optional): Cursor for pagination
search_posts
Search posts by query.
Parameters:
query(string, required): Search queryfirst(integer, optional): Number of posts to returnafter(string, optional): Cursor for pagination
Collection Endpoints
get_collection
Get a collection by ID or slug.
Parameters:
id(string, optional): Collection IDslug(string, optional): Collection slug
get_collections
Get collections with filtering.
Parameters:
featured(boolean, optional): Filter by featured collectionsuserId(string, optional): Filter by user IDpostId(string, optional): Filter by post IDorder(string, optional): Order by 'FEATURED_AT', 'FOLLOWERS_COUNT', 'NEWEST'first(integer, optional): Number of collections to returnafter(string, optional): Cursor for pagination
User Endpoints
get_user
Get a user by ID or username.
Parameters:
id(string, optional): User IDusername(string, optional): Username
get_user_posts
Get posts made by a user.
Parameters:
username(string, required): Usernamefirst(integer, optional): Number of posts to returnafter(string, optional): Cursor for pagination
get_user_voted_posts
Get posts upvoted by a user.
Parameters:
username(string, required): Usernamefirst(integer, optional): Number of posts to returnafter(string, optional): Cursor for pagination
Topic Endpoints
get_topic
Get a topic by ID or slug.
Parameters:
id(string, optional): Topic IDslug(string, optional): Topic slug
get_topics
Get topics with filtering.
Parameters:
search(string, optional): Search topics by nameorder(string, optional): Order by 'FOLLOWERS_COUNT', 'NEWEST'first(integer, optional): Number of topics to returnafter(string, optional): Cursor for pagination
Comment Endpoints
get_comment
Get a comment by ID.
Parameters:
id(string, required): Comment ID
get_post_comments
Get comments on a post.
Parameters:
postId(string, optional): Post IDpostSlug(string, optional): Post slugorder(string, optional): Order by 'NEWEST', 'VOTES_COUNT'first(integer, optional): Number of comments to returnafter(string, optional): Cursor for pagination
Goal Endpoints
get_goal
Get a maker goal by ID.
Parameters:
id(string, required): Goal ID
get_goals
Get maker goals with filtering.
Parameters:
userId(string, optional): Filter by user IDmakerGroupId(string, optional): Filter by maker group IDcompleted(boolean, optional): Filter by completion statusorder(string, optional): Order by 'COMPLETED_AT', 'DUE_AT', 'NEWEST'first(integer, optional): Number of goals to returnafter(string, optional): Cursor for pagination
Maker Group Endpoints
get_maker_group
Get a maker group (Space) by ID.
Parameters:
id(string, required): Maker Group ID
get_maker_groups
Get maker groups with filtering.
Parameters:
userId(string, optional): Filter by user IDorder(string, optional): Order by 'GOALS_COUNT', 'LAST_ACTIVE', 'MEMBERS_COUNT', 'NEWEST'first(integer, optional): Number of groups to returnafter(string, optional): Cursor for pagination
Viewer Endpoints
get_viewer
Get the authenticated user information and their data.
No parameters required.
Pagination
All list endpoints support cursor-based pagination using the after parameter. The response includes a pageInfo object with:
hasNextPage(boolean): Whether there are more resultshasPreviousPage(boolean): Whether there are previous resultsstartCursor(string): Cursor for the first itemendCursor(string): Cursor for the last item (use this for theafterparameter)
Rate Limits
The Product Hunt API has rate limits. Please refer to the official documentation for current limits.
Publishing
To publish a new version to npm:
npm version patch # or minor, major
npm publishLicense
MIT
Credits
Uses Product Hunt API v2 (GraphQL)
Built with Model Context Protocol SDK
Available Tools
17 toolsget_collectionB
Get a Product Hunt collection by ID. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID | |
| save_dir | No | Directory to save cleaned JSON data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose side effects, auth needs, rate limits, or data freshness. 'Cleaned data' is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. Efficiently conveys core purpose and output format without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Basic info provided but lacks details on TOON format, return structure, or any limitations. Adequate for a simple read tool but could be more helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% parameters with clear descriptions. Description adds no extra meaning beyond schema, but that is acceptable given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States verb 'Get', resource 'Product Hunt collection by ID', and output format 'TOON format'. Clearly distinguishes from sibling 'get_collections' which lists collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'get_collections'. Does not specify prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collectionsC
Get Product Hunt collections. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| featured | No | Filter featured only | |
| userId | No | Filter by user ID | |
| postId | No | Filter by post ID | |
| order | No | Order: FEATURED_AT, FOLLOWERS_COUNT, NEWEST | |
| first | No | Number to return (default: 10) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions 'Returns cleaned data' but omits security, rate limits, side effects, or read-only nature. The description is insufficient for a tool with 8 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundancy. It is efficient but could still include more critical information without exceeding reasonable length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no output schema, and no annotations, the description is too sparse. It fails to explain pagination, the meaning of 'TOON format', or how filters interact. The tool's complexity demands a more complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, so the schema handles parameter documentation. The description does not add extra meaning beyond mentioning 'cleaned data' which relates to output, not parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get Product Hunt collections' which is a specific verb+resource. It differentiates from sibling 'get_collection' by using plural 'collections'. However, the term 'TOON format' is unexplained, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like search_posts. The description does not provide context, exclusions, or typical use cases, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commentB
Get a comment by ID. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Comment ID | |
| save_dir | No | Directory to save cleaned JSON data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions output format but omits the side effect of saving to a directory (via save_dir parameter). Does not disclose whether it's read-only, auth requirements, or other behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity (2 params, no output schema, no annotations), description omits important side effect of saving data via save_dir and does not fully explain return format ('TOON' is jargon). Incomplete for a tool with a dual read/write behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters described in schema). Description adds no additional meaning beyond schema; save_dir parameter not mentioned in description. Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Get a comment by ID' which is a specific verb+resource. It distinguishes from siblings like get_post_comments by focusing on a single comment and mentioning output format (TOON).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., get_post_comments for multiple comments). No explicit when-to-use or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_goalA
Get a maker goal by ID. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Goal ID | |
| save_dir | No | Directory to save cleaned JSON data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the output format ('cleaned data in TOON format') but does not explain what 'cleaned' entails, potential side effects, error handling, or authentication requirements. Basic transparency but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no unnecessary words. Every part contributes to understanding the tool's purpose and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions the return format but vaguely. It does not explain error conditions, performance hints, or differentiation from siblings like 'get_goals'. Adequate for a simple lookup but incomplete for complex use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal value beyond parameter names and types. It does not provide extra context like value constraints or format requirements that the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Get a maker goal by ID') and the resource ('maker goal'), with a unique identifier parameter. It also mentions the return format ('cleaned data in TOON format'), distinguishing it from sibling tools like 'get_goals' which likely return multiple goals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'get_goals' for listing, 'get_maker_group' for groups). No exclusions or context for optimal use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_goalsC
Get maker goals. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Filter by user ID | |
| makerGroupId | No | Filter by maker group ID | |
| completed | No | Filter by completion status | |
| order | No | Order: CHEERS_COUNT, NEWEST | |
| first | No | Number to return (default: 10) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only mentions 'cleaned data in TOON format' which hints at transformation but lacks specifics on safety (destructive?), authentication, rate limits, or pagination behavior despite cursor parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (one sentence) but under-specified. It omits critical details like what 'TOON format' is, why data is cleaned, and how to use parameters. Conciseness should not come at the expense of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and no annotations, the description is insufficiently complete. It fails to explain return structure, pagination, or filtering semantics, leaving the agent with only parameter names and types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all 8 parameters, so baseline is 3. The description adds no additional meaning beyond the schema; the 'cleaned data' comment is about output not parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get maker goals' which establishes the resource and action. However, it does not differentiate from sibling tool 'get_goal' which likely retrieves a single goal, nor from other list tools. The mention of 'TOON format' is unique but unexplained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_goal, search_posts, or other get_* tools. No mention of context such as user or workspace filtering despite having parameters for userId and makerGroupId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_maker_groupC
Get a maker group by ID. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Maker group ID | |
| save_dir | No | Directory to save cleaned JSON data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions data cleaning and TOON format but fails to disclose that the 'save_dir' parameter implies writing to disk, a side effect. No info on auth, rate limits, or destructive potential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the primary action. It is concise, though could potentially be merged into one sentence for even tighter structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the schema covers parameters, the description omits important context: what 'cleaned' means, what TOON format is, and that 'save_dir' writes to disk (a side effect). For a tool with a write parameter, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds mention of 'cleaned data in TOON format' but does not enhance the parameter descriptions beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a maker group by ID and returns cleaned data, which distinguishes it from sibling 'get_maker_groups' (plural) that likely retrieves multiple groups. However, it does not explicitly differentiate from other getter tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives or when not to use it. No context is given about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_maker_groupsB
Get maker groups. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Filter by user ID | |
| order | No | Order: MEMBERS_COUNT, NEWEST | |
| first | No | Number to return (default: 10) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the burden of behavioral disclosure. It adds the trait that data is 'cleaned' and returned in 'TOON format', which provides some insight into transformation and output structure. However, it omits details like pagination behavior, filtering effects, and whether the tool is read-only or has side effects. With no annotations, a score of 3 is appropriate as it adds some value but misses key behavioral info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences with no superfluous content. The action and key additional information (cleaned, TOON format) are front-loaded, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and six parameters involving pagination and filtering, the description is too minimal. It doesn't explain the return structure thoroughly (e.g., the format of TOON, how pagination works with 'after' and 'first' parameters, or how filtering by userId interacts with ordering). The description leaves significant gaps for an agent to safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning the input schema already documents all 6 parameters adequately. The description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get maker groups') and the resource, and adds specificity with 'Returns cleaned data in TOON format'. However, it does not differentiate from the sibling tool 'get_maker_group' (singular), leaving ambiguity about when to use the plural vs singular variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings (e.g., get_maker_group for a single group). The description offers no usage context, alternatives, or exclusions, leaving the agent to infer from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_postA
Get a Product Hunt post by ID or slug. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Post ID | |
| slug | No | Post slug | |
| save_dir | No | Directory to save cleaned JSON data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. Discloses return format ('cleaned data in TOON format') but omits auth requirements, rate limits, or side effects. For a read operation, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no extraneous information. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core functionality and return format. Lacks explanation of 'TOON format' and optional save_dir usage. With 3 optional parameters and no output schema, this is mostly sufficient but missing minor details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds context by specifying 'by ID or slug' (linking to parameters) and mentioning TOON format beyond the schema. However, save_dir is not explained in description, but schema covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves a Product Hunt post by ID or slug and returns data in TOON format. Distinguishes from sibling tools like get_posts and get_post_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use ID vs slug, or when not to use this tool. No alternatives mentioned, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_post_commentsB
Get comments on a post. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | No | Post ID | |
| postSlug | No | Post slug | |
| order | No | Order: NEWEST, VOTES | |
| first | No | Number to return (default: 10) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It only mentions 'Returns cleaned data in TOON format,' but does not disclose pagination behavior, required identifiers, or any safety considerations. Critical behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. However, it could be slightly more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no output schema, and no annotations, the description is insufficient. It fails to explain parameter choices (postId vs postSlug), pagination, or the meaning of 'cleaned data.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning to parameters beyond what the schema already provides (e.g., postId, order, pagination).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get comments on a post,' specifying the verb and resource. This differentiates it from siblings like 'get_comment' (single comment) and 'get_post' (post details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, context, or conditions for use. The agent is left to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_postsC
Get Product Hunt posts with filters. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| featured | No | Filter featured posts only | |
| topic | No | Filter by topic slug | |
| postedAfter | No | Filter after date (ISO 8601) | |
| postedBefore | No | Filter before date (ISO 8601) | |
| order | No | Order: FEATURED_AT, NEWEST, RANKING, VOTES | |
| first | No | Number of posts (default: 10, max: 20) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Absent annotations, the description only mentions 'returns cleaned data in TOON format', lacking disclosure of read-only nature, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, but overly brief; misses key contextual elements that could be included without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no output schema, and no annotations, the description is insufficient for an agent to understand pagination, defaults like 'first' vs 'max_items', or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, so baseline 3 applies; description adds no extra parameter meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'Product Hunt posts' with filters, but does not differentiate from sibling tools like 'get_post' or 'search_posts'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no exclusion criteria or when-not-to-use hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topicB
Get a Product Hunt topic by ID or slug. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Topic ID | |
| slug | No | Topic slug | |
| save_dir | No | Directory to save cleaned JSON data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It mentions 'cleaned data in TOON format' but does not explain what 'cleaned' means, what TOON format entails, or any side effects. No details on auth, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, 14 words, front-loaded, with no fluff. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description is too brief. It lacks details on return values, error conditions, authentication requirements, and the meaning of 'cleaned data' and 'TOON format'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no new meaning beyond the schema; it just restates that ID or slug can be used. The save_dir parameter is not elaborated on.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a Product Hunt topic by ID or slug, using specific verbs and resource. It distinguishes from sibling tools like get_topics (plural, likely lists topics) and other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have an ID or slug, but does not specify when to avoid using the tool or mention alternatives. No explicit guidance on context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topicsC
Get Product Hunt topics. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search query | |
| order | No | Order: FOLLOWERS_COUNT, NEWEST, POSTS_COUNT | |
| first | No | Number to return (default: 10) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions returning cleaned data in TOON format, but does not clarify side effects, authentication needs, rate limits, or pagination behavior beyond parameter names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. While very concise, it could be improved by including more behavioral context without being overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters and no output schema, the description is insufficient. It does not explain return structure, default ordering, pagination mechanics, or how 'cleaned data' differs from raw output. The agent lacks critical context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 6 parameters, so the description adds no additional parameter meaning beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get Product Hunt topics', specifying the verb and resource. It also mentions returning cleaned data in TOON format. However, it does not differentiate from the sibling tool 'get_topic' (singular), which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_topic', 'get_collections', or search tools. No context for use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userA
Get a Product Hunt user by ID or username. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | User ID | |
| username | No | Username | |
| save_dir | No | Directory to save cleaned JSON data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It mentions 'cleaned data in TOON format', hinting at processing, but does not disclose permissions, side effects, or what cleaning entails. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loading the main action. No wasted words, though could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lacks detail on return structure. It mentions 'cleaned data in TOON format' but is incomplete for a tool with 3 parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds no new meaning beyond mentioning 'by ID or username' which matches the properties; 'save_dir' is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a Product Hunt user by ID or username, and it distinguishes from sibling tools (e.g., get_user_posts, get_collection) by specifying the exact resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool (to get a user by ID or username), but provides no guidance on when not to use it or mention of alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_postsC
Get posts made by a user. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username | |
| first | No | Number of posts (default: 10) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It implies a read operation but does not mention that the 'save_dir' parameter indicates a file-writing side effect, nor does it address auth or rate limits. Critical behavioral traits are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief with two sentences, no redundancy. However, it could be more structured by front-loading the primary action and listing key nuances.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is insufficient. It does not explain pagination behavior (parameters 'first', 'after', 'max_items') or the file-saving side effect. The agent lacks a complete picture for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no further semantic context beyond what the schema already provides (e.g., 'cleaned data' and 'TOON format' are not linked to parameters).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves posts made by a user, with a specific verb and resource. It also mentions return format ('cleaned data in TOON format'). However, it does not explicitly differentiate from sibling tools like 'get_posts' or 'get_user_voted_posts', which reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or constraints. Agents receive no context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_voted_postsB
Get posts upvoted by a user. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username | |
| first | No | Number of posts (default: 10) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It mentions 'cleaned data in TOON format' but does not explain side effects like file saving via save_dir parameter, auth requirements, or pagination behavior. Minimal disclosure beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences. No redundant information, every word adds value. Front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no output schema, no annotations), the description is incomplete. It fails to explain the purpose of save_dir (a side effect), the pagination mechanism (first, after), or the return format's structure. More detail is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have descriptions in the input schema, so schema coverage is 100%. The description adds no extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get posts upvoted by a user,' specifying the verb and resource. It distinguishes from sibling tools like get_user_posts and get_posts by focusing on upvoted posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as get_user_posts for all user posts or search_posts for broader queries. No explicit when-not or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewerB
Get authenticated user info. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| save_dir | No | Directory to save cleaned JSON data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'Returns cleaned data in TOON format' without explaining TOON or side effects. The optional save_dir parameter suggests file writing, but the description does not clarify behavior when omitted or if authentication is needed. No annotations compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no unnecessary words. Efficiently communicates the core purpose and a notable output detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing output schema, error conditions, authentication hints, and details on return structure. Given the tool's simplicity, more context would help an agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (save_dir described). The description adds no extra meaning beyond the schema, but matches the baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get authenticated user info.' This distinguishes it from sibling tools like get_user (which requires a user ID) and others that retrieve collections or posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Sibling tools include many get_* functions, but the description does not explain why one would choose get_viewer over get_user or others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_postsB
Search Product Hunt posts. Returns cleaned data in TOON format.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| first | No | Number of posts (default: 10) | |
| after | No | Cursor for pagination | |
| save_dir | No | Directory to save cleaned JSON data | |
| max_items | No | Max items to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions 'Returns cleaned data in TOON format' but does not explain what 'cleaned' means, the TOON format, pagination, rate limits, or any side effects. This is insufficient for a tool with 5 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no fluff. Each sentence serves a purpose: stating the action and noting the output format. It is concise, though could include more detail without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and many sibling tools, the description is too sparse. It does not explain pagination (after), the save directory functionality, or differentiate from similar tools beyond the verb 'search'. Lacks crucial context for effective tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no meaning beyond the schema's parameter descriptions; it does not clarify the role of 'save_dir', 'max_items', or 'after' cursor beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Search Product Hunt posts', which is a specific verb and resource. This clearly distinguishes it from sibling tools that are all 'get_*' for retrieving specific items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use search_posts versus alternatives. However, being the only search tool among siblings implies its usage for searching, earning a score of 3 for implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
v1.2.0- First observed
get_collection - First observed
get_collections - First observed
get_comment - First observed
get_goal - First observed
get_goals - First observed
get_maker_group - First observed
get_maker_groups - First observed
get_post - First observed
get_post_comments - First observed
get_posts - First observed
get_topic - First observed
get_topics - First observed
get_user - First observed
get_user_posts - First observed
get_user_voted_posts - First observed
get_viewer - First observed
search_posts
TDQS
Scored across 17 tools
Each tool targets a distinct entity or query (collections, comments, goals, posts, etc.), with no overlapping purposes. The descriptions make it clear what each tool retrieves.
All tools follow a consistent 'get_<entity>' pattern, with variations like 'get_post_comments' and 'get_user_voted_posts' maintaining the verb_noun structure. 'search_posts' is the only deviation but still fits the naming convention.
With 17 tools covering various entities (collections, posts, users, topics, etc.) and subtypes (comments, goals, maker groups), the count is well-scoped for a Product Hunt data retrieval server.
The tool set is thorough for read operations but lacks any mutation (create, update, delete) or voting/commenting actions. As a read-only explorer it is complete, but for a full Product Hunt integration, significant gaps exist.
Maintenance
Related MCP Connectors
Product Hunt MCP — wraps the Product Hunt GraphQL API v2 (api.producthunt.com)
Manage Memberful members, subscriptions, plans, passes and coupons via the GraphQL API.
Query site stats, realtime visitors, breakdowns and goals from Plausible Analytics.
Query Honeycomb observability data: traces, events, metrics, SLOs, triggers, and boards.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to access Product Hunt data via GraphQL API, including posts, products, and rankings. Part of the Pipeworx MCP gateway.5 npmMIT
- FlicenseAqualityCmaintenanceEnables querying WHOOP fitness data including recovery, sleep, workouts, physiological cycles, and profile via the WHOOP API v2.1114 npm-
- AlicenseBqualityDmaintenanceExposes any GraphQL API as a single tool for executing queries and mutations with authentication support.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying Open Collective public data: collective info, members, transactions, and events.5 npmMIT