HackerOne MCP Server
The HackerOne MCP Server enables bug bounty hunters to manage their HackerOne activities through Claude Code or other MCP clients, providing read and write access to reports, programs, earnings, and scope data via the HackerOne API.
Report Management:
Search and filter reports by keyword, program, severity, or state
Retrieve full report details (title, CVSS vectors, bounty amounts, timestamps, attachments)
View complete triage conversation threads
Browse activity timelines (comments, state changes, bounty awards)
Submit new vulnerability reports, add comments, or withdraw/close your own reports
Program Exploration:
List all bug bounty programs you have access to
Retrieve in-scope assets (asset types, bounty eligibility, severity caps)
Get accepted vulnerability/weakness types (CWEs) for a specific program
Earnings & Profile:
View bounty earnings history (amounts, currency, dates) and current balance
Retrieve your hacker profile (reputation, signal, impact, rank)
Analytics:
Analyze your hunting patterns: severity distribution, top programs, common weakness types, and resolution rates
Search publicly disclosed reports on HackerOne's hacktivity for reconnaissance and learning
Technical Highlights:
Connects via the HackerOne Hacker API v1 using a personal API token; credentials stay local
Auto-paginates results, uses server-side filters for faster searches
Built-in retry with exponential backoff for rate limiting and a 60-second response cache
Provides tools for interacting with the HackerOne API to manage vulnerability reports, bug bounty programs, and earnings, including capabilities to submit findings, respond to triage, and analyze hunting patterns.
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., "@HackerOne MCP ServerWhat assets are in scope for the Uber bug bounty program?"
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.
HackerOne MCP Server
Disclaimer: This is an unofficial, community-built project. It is not affiliated with, endorsed by, or maintained by HackerOne. "HackerOne" is a trademark of HackerOne, Inc. This project simply integrates with their publicly documented Hacker API.
MCP server that gives Claude Code (or any MCP client) full access to your HackerOne reports, programs, earnings, and scope data via the HackerOne API — including submitting reports and responding to triage.
Setup
1. Get your HackerOne API token
Go to HackerOne > Settings > API Token and generate one.
2. Install and build
git clone https://github.com/Sicks3c/hackerone-mcp-server.git
cd hackerone-mcp-server
npm install
npm run build3. Add to Claude Code
claude mcp add hackerone \
-e H1_USERNAME=your-username \
-e H1_API_TOKEN=your-api-token \
-s user \
-- node /path/to/hackerone-mcp-server/dist/index.jsOr add manually to ~/.claude.json:
{
"mcpServers": {
"hackerone": {
"command": "node",
"args": ["/path/to/hackerone-mcp-server/dist/index.js"],
"env": {
"H1_USERNAME": "your-username",
"H1_API_TOKEN": "your-api-token"
}
}
}
}4. Verify
claude
> /mcp
# You should see "hackerone" listed with 16 toolsRelated MCP server: h1-brain
Tools
Read
Tool | Description |
| Search and filter your reports by keyword, program, severity, or state |
| Get full report details including CVSS vector, bounty amounts, and attachments |
| Get a report with its triage conversation thread |
| Get activity timeline (comments, state changes, bounties) |
| List all bug bounty programs you have access to (auto-paginates) |
| Get single program info: policy, response times, metrics |
| Get all in-scope assets for a program (auto-paginates) |
| Get accepted CWE/weakness types for a program (auto-paginates) |
| Get your bounty earnings history (amounts, dates, programs) |
| Get your reputation, signal, impact, and rank |
| Get your current unpaid bounty balance |
| Analyze your hunting patterns (severity distribution, top programs, weakness types) |
| Search publicly disclosed reports on hacktivity — great for recon and learning |
Write
Tool | Description |
| Submit a new vulnerability report to a program |
| Add a comment to an existing report (respond to triage) |
| Withdraw/close one of your own reports |
Usage Examples
Submit a report directly:
Submit this SSRF finding to the uber program with critical severity. Here's my writeup: [paste]Respond to triage:
Add a comment to report #2345678: "Here's the updated PoC with the new endpoint..."Draft a report matching your style:
Find my resolved critical reports and use the same structure to draft a new report for this SSRF I found.Learn from triage conversations:
Show me the triage conversation on report #2345678. What questions did they ask?Research what gets paid:
Search disclosed reports on the uber program for SSRF — what did they pay?Check program details before hunting:
Show me the uber program details — what are their response times?Check your stats:
Show my hacker profile — what's my current reputation and signal?Track earnings:
Show my recent bounty earnings and current balanceAnalyze patterns:
Analyze my report patterns — what severity gets resolved most?How It Works
Connects to the HackerOne Hacker API v1 using your personal API token
Runs locally over stdio — your credentials never leave your machine
Supports both read and write operations (submit reports, add comments, close reports)
Auto-paginates programs, scope, and weakness endpoints so nothing gets silently truncated
Uses server-side API filters where available (program, severity, state) for faster searches
Built-in retry with exponential backoff for rate limit handling
60-second response cache to reduce redundant API calls
License
MIT
Available Tools
9 toolsanalyze_report_patternsA
Fetch your recent reports and analyze patterns: most common vulnerability types, severity distribution, resolution rates, and programs. Useful for understanding your hunting profile.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | Number of reports to analyze (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says 'Fetch your recent reports' which implies a read operation, but does not explicitly state that the tool is read-only, non-destructive, or what permissions are needed. The description lacks details on side effects or data scope.
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 only two sentences long, front-loads the action and key outputs, and contains no unnecessary words. Every sentence 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?
For a tool with one optional parameter and no output schema, the description explains what patterns are analyzed but omits important context: what 'recent' means (time frame), whether results are paginated, and what the response format looks like. This leaves gaps for an AI agent.
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% with a single optional parameter (page_size) that has a clear description in the schema. The tool description does not add any additional meaning or context about the parameter beyond the schema, so a 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 the tool fetches recent reports and analyzes specific patterns (vulnerability types, severity, resolution rates, programs). It uses a specific verb ('analyze') and resource ('reports'), and the listed patterns distinguish it from sibling tools like search_reports or get_report that only fetch raw data.
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 includes 'Useful for understanding your hunting profile,' which implies a usage context but does not explicitly state when to use this tool over alternatives like search_reports. There is no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earningsB
Get your bounty earnings history. Shows amounts, currency, dates, and which programs paid out.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | Number of earnings to return (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation and shows output fields, but does not disclose auth requirements, rate limits, or behavior with empty history. Adequate but not detailed.
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-load the purpose and output fields. No wasted words, efficient 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?
Given a single optional parameter and no output schema, the description covers the main intent and output adequately. Could mention default page_size (100) or that it returns current user's earnings.
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% for the only parameter (page_size). The description adds no extra meaning beyond the schema, so 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 your bounty earnings history' with specific verb and resource. It mentions amounts, currency, dates, and programs, but does not explicitly differentiate from sibling tools like get_payouts.
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 such as get_payouts or get_balance. The description lacks context for selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_program_scopeA
Get the in-scope assets for a bug bounty program. Returns asset types, identifiers, bounty eligibility, and severity caps. Useful when drafting reports to pick the correct asset.
| Name | Required | Description | Default |
|---|---|---|---|
| program_handle | Yes | Program handle (e.g. 'uber', 'ipc-h1c-aws-tokyo-2026') | |
| page_size | No | Number of scope items to return (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the tool's behavior by specifying the return data (asset types, identifiers, bounty eligibility, severity caps) and a use case, but lacks details on permissions, rate limits, pagination (beyond the 'page_size' parameter in schema), or error handling. The description doesn't contradict any annotations, but with no annotations, it only partially fulfills the transparency requirement.
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 appropriately sized with two sentences: the first states the purpose and output, and the second provides a usage tip. It's front-loaded with essential information and has zero wasted words, making it efficient and easy 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?
Given the tool's moderate complexity (2 parameters, 100% schema coverage, no output schema), the description is fairly complete. It covers the purpose, output details, and a use case, but lacks information on output format (e.g., structure of returned assets), error cases, or integration with sibling tools. Without an output schema, more detail on return values would be beneficial, but it's adequate for basic understanding.
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%, so the schema already fully documents both parameters ('program_handle' and 'page_size'). The description adds no additional parameter semantics beyond what's in the schema, such as examples or constraints not covered. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.
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 'in-scope assets for a bug bounty program' with specific output details (asset types, identifiers, bounty eligibility, severity caps). It distinguishes from siblings like 'list_programs' or 'get_report' by focusing on program scope rather than programs or reports themselves, though it doesn't explicitly contrast with 'get_program_weaknesses' which might be related.
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 implied usage context ('Useful when drafting reports to pick the correct asset'), suggesting it's for report preparation. However, it doesn't explicitly state when to use this tool versus alternatives like 'list_programs' (which might list programs without scope details) or 'get_program_weaknesses' (which might focus on vulnerabilities rather than assets), nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_program_weaknessesB
Get the accepted vulnerability/weakness types for a program. Helps frame reports using the right CWE categories the program cares about.
| Name | Required | Description | Default |
|---|---|---|---|
| program_handle | Yes | Program handle (e.g. 'uber', 'ipc-h1c-aws-tokyo-2026') | |
| page_size | No | Number of weaknesses to return (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes a read operation ('Get') but does not specify if it requires authentication, has rate limits, returns paginated results, or details the output format (e.g., list of CWE IDs). The mention of 'page_size' in the schema hints at pagination, but the description does not address this behavior, leaving gaps in transparency.
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 concise with two sentences that directly address the tool's purpose and utility. It avoids redundancy and is front-loaded with the core function. However, it could be slightly more structured by explicitly separating usage guidance, but overall, it is efficient with minimal waste.
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 annotations and no output schema, the description is moderately complete for a read tool with two parameters. It covers the purpose and hints at usage but lacks details on behavioral aspects like authentication, error handling, or output structure. For a tool that likely returns a list of CWE categories, more context on the return format would enhance completeness, but it meets a basic threshold.
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%, so the schema already documents both parameters ('program_handle' and 'page_size') with descriptions. The description adds context by linking 'program_handle' to 'program' and implying 'page_size' relates to 'weaknesses to return,' but does not provide additional syntax or format details beyond what the schema offers. With high schema coverage, the 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 the tool's purpose: 'Get the accepted vulnerability/weakness types for a program.' It specifies the verb ('Get') and resource ('accepted vulnerability/weakness types'), and adds context about framing reports with CWE categories. However, it does not explicitly differentiate from sibling tools like 'get_program_scope' or 'analyze_report_patterns', which might overlap in domain but serve different functions.
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 by stating it 'Helps frame reports using the right CWE categories the program cares about,' suggesting it should be used when preparing or analyzing reports. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., 'get_program_scope' for scope details or 'search_reports' for report data), and does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportA
Get the full details of a specific HackerOne report by ID. Returns title, vulnerability details, impact, severity, CVSS, timestamps, and program info.
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes | The HackerOne report ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it 'Returns title, vulnerability details, impact, severity, CVSS, timestamps, and program info,' which gives some behavioral context about the return format. However, it lacks details on permissions, rate limits, error handling, or whether it's a read-only operation, which is a significant gap for a tool with no annotation coverage.
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, efficient sentence that front-loads the purpose and lists return details concisely. Every part earns its place with no wasted words, making it easy to scan and understand quickly.
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 annotations and no output schema, the description provides basic purpose and return details, which is adequate for a simple read operation. However, it lacks information on behavioral aspects like error cases or authentication needs, making it incomplete for full contextual understanding despite the tool's low complexity.
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%, with the parameter 'report_id' clearly documented as 'The HackerOne report ID.' The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline of 3 where the schema does the heavy lifting.
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 ('full details of a specific HackerOne report by ID'), specifying it returns title, vulnerability details, impact, severity, CVSS, timestamps, and program info. It distinguishes from siblings like get_report_activities or get_report_with_conversation by focusing on core report details rather than activities or conversations.
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 needing full report details by ID, but does not explicitly state when to use this tool versus alternatives like get_report_with_conversation or search_reports. No exclusions or prerequisites are mentioned, leaving usage context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_activitiesA
Get the activity timeline of a report: comments, state changes, bounty awards, and triage responses.
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes | The HackerOne report ID | |
| page_size | No | Number of activities to return (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the full burden. It adds behavioral context by specifying the types of activities returned (comments, state changes, etc.), which goes beyond the schema. However, it omits details like read-only nature, authentication requirements, rate limits, or pagination behavior. The description 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?
A single, well-structured sentence that conveys the core functionality and output types without extraneous words. Every element earns its place, making it easy 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?
The description lists activity types but does not detail activity structure, pagination behavior, ordering, or default page_size. With no output schema, this leaves some gaps for an agent. It is minimally sufficient for a simple read operation, but richer context would improve completeness.
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 both parameters (report_id, page_size) having descriptions. The tool description does not add further parameter-specific meaning or usage guidance. Baseline of 3 is appropriate; no extra value 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?
Clearly states the tool retrieves an activity timeline of a report, listing specific activity types (comments, state changes, bounty awards, triage responses). This verb+resource combination is specific and distinguishes it from siblings like get_report (which retrieves the report itself) and get_report_with_conversation (likely focused on conversation).
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 for fetching activity timelines but does not provide explicit guidance on when to use versus alternatives (e.g., get_report_with_conversation). No exclusions or when-not-to-use advice is given. The context is clear enough for an agent to infer the primary use case, but lacks depth.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_with_conversationA
Get a report with its full triage conversation. Useful for understanding what questions triage asked, how you responded, and what led to resolution. Great for learning what works.
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes | The HackerOne report ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the read operation but does not disclose response format, pagination, or any limitations.
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 efficient sentences front-load the purpose with no wasted words.
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?
Lacks output schema but the tool is simple with one parameter; the description adequately explains the value returned (report with conversation).
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% for the single parameter report_id, so the description adds no additional meaning beyond what the schema provides.
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 the resource 'report with its full triage conversation', distinguishing it from siblings like get_report which likely lacks conversation.
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?
It explains the tool is useful for understanding triage conversation and learning, but does not explicitly mention when to avoid using it or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_programsC
List bug bounty programs you have access to on HackerOne.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | Number of programs to return (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists programs but omits critical details: it doesn't mention pagination behavior (implied by the 'page_size' parameter), authentication requirements, rate limits, or what the output looks like (e.g., format, fields). This is a significant gap for a tool with potential complexity.
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, efficient sentence that directly states the tool's purpose without redundancy. It's front-loaded with the core action and resource, making it easy to parse. There's no wasted verbiage or unnecessary elaboration.
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 lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like authentication, pagination, or output format, which are essential for an agent to use the tool effectively. For a list operation with potential complexity, more context is needed to guide proper 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?
Schema description coverage is 100%, so the schema fully documents the single parameter ('page_size') with its type, constraints, and default. The description adds no parameter-specific information beyond what the schema provides, which is acceptable given the high coverage, but it doesn't compensate with additional context like typical usage patterns.
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 ('List') and resource ('bug bounty programs you have access to on HackerOne'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from its siblings (like 'get_program_scope' or 'get_program_weaknesses'), which would require mentioning that this returns a list of programs rather than details about a specific program.
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. It doesn't mention prerequisites (e.g., authentication), compare it to sibling tools, or specify scenarios where it's appropriate (e.g., initial discovery vs. detailed analysis). This leaves the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_reportsB
Search and list your HackerOne reports. Filter by keyword, program, severity, or state. Great for finding past reports to reference when drafting new ones.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Keyword search (e.g. 'SSRF', 'OAuth', 'PassRole', 'S3') | |
| program | No | Program handle to filter by (e.g. 'uber', 'amazon') | |
| severity | No | Filter by severity rating | |
| state | No | Filter by report state | |
| page_size | No | Results per page (default 25) | |
| page_number | No | Page number for pagination | |
| sort | No | Sort field (e.g. 'reports.created_at' or '-reports.created_at' for desc) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states it searches and lists reports but does not mention authentication requirements, rate limits, data scope (only user's reports?), pagination behavior, or response format. Critical details 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?
Two concise sentences that front-load the action and filters. No unnecessary words. It efficiently communicates the core functionality.
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 7 parameters, no output schema, and no annotations, the description is too minimal. It does not explain how parameters combine, default behavior for pagination/sorting, or return value structure. More context is needed for an agent to use this tool effectively.
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 each parameter described. The description adds value by listing the main filters (keyword, program, severity, state) but does not provide any additional semantics beyond what the schema already offers. 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 it searches and lists HackerOne reports, with specific filters (keyword, program, severity, state). This distinguishes it from siblings like get_report (single report) and search_disclosed_reports (disclosed only), though these distinctions are not explicitly mentioned.
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 a use case ('finding past reports to reference when drafting new ones'), implying when to use it. However, it does not give explicit guidance on when not to use it or how it compares to alternatives like search_disclosed_reports or get_report.
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.
9 tool updates
v1.0.0- First observed
analyze_report_patterns - First observed
get_earnings - First observed
get_program_scope - First observed
get_program_weaknesses - First observed
get_report - First observed
get_report_activities - First observed
get_report_with_conversation - First observed
list_programs - First observed
search_reports
TDQS
Scored across 9 tools
Most tools have distinct purposes, such as get_earnings for bounty history and get_program_scope for program assets, but get_report, get_report_activities, and get_report_with_conversation overlap in focusing on report details, which could cause minor confusion in selection. The descriptions help clarify the differences, but the boundaries are not entirely clear.
All tool names follow a consistent verb_noun pattern with snake_case, such as analyze_report_patterns, get_earnings, and list_programs. There are no deviations in naming conventions, making the set predictable and easy to parse for agents.
With 9 tools, the server is well-scoped for managing HackerOne bug bounty activities, covering key areas like program info, reports, and earnings. Each tool earns its place without feeling excessive or insufficient for the domain.
The tool surface provides comprehensive coverage for bug bounty hunters, including program listing, scope and weakness details, report retrieval and search, and earnings tracking. A minor gap exists in lacking tools for creating or submitting new reports, but agents can work around this with the available tools for drafting and referencing.
Maintenance
Related MCP Connectors
AI pentesting: run scans, triage vulnerabilities, review PRs, manage schedules and assets.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Threat intel + your scans/findings/Shield posture. CVE, EPSS, KEV, package vuln lookup, DAST.
- HAVNOAuthapp.havnre
Read-only AI access to HAVN properties, leads, tasks, files, media, and analytics.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables MCP clients like Claude and Codex to interact with HackerOne's API to list and get reports, programs, and scopes.218 npm3MIT
- AlicenseNot gradedqualityCmaintenanceConnects AI assistants to HackerOne to pull bug bounty history, program scopes, and report details into a local SQLite database, exposing tools for searching, analyzing, and generating attack briefings using both personal and public disclosed reports.350MIT
- AlicenseNot gradedqualityCmaintenanceConnects AI assistants to HackerOne bug bounty history, program scopes, and public disclosed reports for searching, analyzing, and generating attack briefings.MIT
- FlicenseNot gradedqualityCmaintenanceConnects Claude to the HackerOne Hacker API, enabling program listing, scope retrieval, report management, and balance checks via natural language.6-