hackerone-mcp
Provides read-only tools to interact with a HackerOne researcher account, including listing programs, scopes, reports, earnings, searching disclosed reports, and drafting bug reports.
Click on "Install 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-mcpList my top 3 programs by total bounty"
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
A local, read-only MCP server that connects your HackerOne researcher account to Claude Desktop and Claude Code. It helps you find the best targets, analyze program scopes, review your reports/earnings, and draft bug reports (which you submit yourself — the server never writes to your account).
How it works
Claude Desktop or Claude Code spawns this server as a local subprocess and talks to it over stdio using the Model Context Protocol. Every tool is read-only. The server reaches HackerOne over two separate paths: your private account data through the authenticated official API, and public disclosed-report data through an unauthenticated public endpoint (so your account is never involved in those requests).
┌──────────────────┐ ┌──────────────────┐
│ Claude Desktop │ │ Claude Code │
└────────┬─────────┘ └────────┬─────────┘
└───────────┬───────────────┘
│ MCP over stdio
│ (launches: python -m hackerone_mcp)
▼
┌───────────────────────────────────────────────────────────────────── ┐
│ hackerone-mcp (local server) │
│ │
│ server.py ── FastMCP tools │
│ │ programs · scopes · count/filter · rank · weaknesses │
│ │ my_reports · earnings · draft_report · raw_get │
│ │ search_disclosed_reports · list_cwe_types · directory │
│ │ │
│ ├── config.py ◄──────── .env (H1_ENV_FILE: H1_USERNAME / TOKEN) │
│ │ │
│ └── tools.py ── orchestrates each request │
│ │ │
│ ├── cache.py ......... disk cache (1h TTL) — hit? return │
│ │ │
│ ├── analysis.py ...... rank / filter / summarize ┐ │
│ ├── hacktivity.py .... build query / project │ pure │
│ │ (no I/O) ┘ funcs │
│ │ │
│ ├── client.py ........ httpx + HTTP Basic auth ─────────┐ │
│ │ (GET only, 429 retry) │ │
│ └── graphql_client.py httpx POST, NO auth ──────────┐ │ │
│ (read queries only) │ │ │
└────────────────────────────────────────────────────────────-----│--│--┘
│ │
authenticated, read-only GET (HTTPS) ────────┼──┘
your account data │
▼
┌──────────────────────────────┐
│ api.hackerone.com/v1 │
│ /hackers/programs … │
└──────────────────────────────┘
unauthenticated, read-only POST (HTTPS)
public disclosed reports │
▼
┌──────────────────────────────┐
│ hackerone.com/graphql │
│ (public hacktivity) │
└──────────────────────────────┘Two flows, one pattern: Claude calls a tool → tools.py checks cache.py →
on a miss it hits the right backend → a pure function (analysis.py /
hacktivity.py) shapes the result → it goes back up to Claude.
Account path (your programs, scopes, reports, earnings):
client.pymakes an authenticated read-only GET toapi.hackerone.com/v1. Your token never leaves your machine except as the Basic-auth header.Public path (disclosed-report / CWE / directory search):
graphql_client.pymakes an unauthenticated read-only POST tohackerone.com/graphql— no token or cookie is ever attached, so these requests carry no account risk.
Related MCP server: HackerOne MCP Server
Requirements
Python 3.10+ (tested on 3.13)
A HackerOne API token: hackerone.com → Settings → API Token. Use the narrowest read scope available.
Install
git clone <this repo> hackerone-mcp
cd hackerone-mcp
python -m pip install -e .Configure credentials
Set two environment variables (these go in your MCP client config below):
H1_USERNAME— your HackerOne usernameH1_API_TOKEN— the API token you generated
Optional: H1_CACHE_DIR, H1_CACHE_TTL (seconds, default 3600).
Verify your token works:
H1_USERNAME=you H1_API_TOKEN=xxxx python -m hackerone_mcp --check-authOn Windows PowerShell:
$env:H1_USERNAME="you"; $env:H1_API_TOKEN="xxxx"; python -m hackerone_mcp --check-authExpected: OK: authenticated as you. N program(s) accessible.
Connect to Claude Desktop
Edit claude_desktop_config.json
(Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"hackerone": {
"command": "python",
"args": ["-m", "hackerone_mcp"],
"env": {
"H1_USERNAME": "your_username",
"H1_API_TOKEN": "your_api_token"
}
}
}
}Restart Claude Desktop.
Connect to Claude Code
claude mcp add hackerone --env H1_USERNAME=your_username --env H1_API_TOKEN=your_api_token -- python -m hackerone_mcpOr add an .mcp.json entry with the same command/args/env.
Tools
list_programs— programs your account can access (compact=truefor a small handle/name/bounty/state listing; the full list is several MB)count_programs— totals only: program count, bounty programs, VDPs, and a submission-state breakdown (use this for "how many ..." questions)get_program— full policy/details for a handleget_program_scopes— structured scopes, summarized in/out of scopeget_program_weaknesses— the CWE/weakness types a program tracksfilter_programs— compact list filtered by offers_bounties / submission_state / bookmarked (e.g. all VDPs)list_my_reports— your own submitted reports (compact; useget_reportfor full detail)search_scopes— search assets across your programs (limitfor a quick scan)rank_programs— rank programs for hunting (bounties, scope, severity;limitfor a quick scan)get_balance,list_earnings— your paymentsget_report— read a report by iddraft_report— format a report in markdown (you submit it yourself)raw_get— authenticated read-only GET against any v1 API pathsearch_disclosed_reports— search PUBLIC disclosed reports by keyword / severity / CWE / CVE / program;sort("relevance"/"recent", default relevance for keyword searches) andsince/until(YYYY-MM-DD) date boundslist_cwe_types— valid CWE names for thecwefiltersearch_directory— search the public program directory by name
Note:
search_scopesandrank_programsscan every program you can access (one API call per program on a cold cache — potentially hundreds). Results are cached for an hour, so the first call is slow and later calls are fast. Passlimit(e.g. 50) for a quick partial scan, orrefresh=trueto bypass the cache.
Security
Your API token is stored in plaintext in the client config file. Protect that file (restrict permissions), use a narrow-scope token, and revoke/rotate it from HackerOne if it is ever exposed. This server makes only read-only requests (authenticated GETs to the official API, plus unauthenticated read-only GraphQL POSTs to the public hacktivity endpoint) — it cannot submit, edit, or delete anything on your account.
Public hacktivity search (Part 2)
search_disclosed_reports, list_cwe_types, and search_directory read
HackerOne's public disclosed-report data through its undocumented GraphQL
endpoint, unauthenticated — no token or cookie is sent, so these calls carry
no risk to your account. They are read-only (the server never sends mutations).
Because the endpoint is undocumented, the baked-in queries can break if HackerOne
changes its schema. The exact queries were captured on 2026-06-28 and saved to
docs/superpowers/reference/hackerone-graphql-captures-2026-06-28.json; re-capture
from a browser and update graphql_client.py if a hacktivity tool stops working.
Development
python -m pip install -e ".[dev]"
python -m pytest -vAvailable Tools
17 toolscount_programsA
Count programs without listing them: total, bounty programs, VDPs (offers_bounties=false), and a breakdown by submission_state. One cheap API call, tiny response — use this for 'how many ...' questions.
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses that the tool returns a tiny response and counts various categories. However, it does not clarify the behavior of the refresh parameter or whether counts are cached.
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 key information, no superfluous content. Each phrase earns its place.
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 the tool's main purpose and breakdowns, but omits explanation of the refresh parameter. For a simple tool with one optional parameter, this is a notable gap in 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 0% (no parameter described). The sole parameter 'refresh' is not mentioned in the description, leaving its purpose unexplained. Description must compensate for low coverage but fails to do so.
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 counts programs with specific breakdowns (total, bounty, VDP, by submission_state) and explicitly distinguishes from listing, which differentiates it from sibling tools like list_programs.
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?
Explicitly advises to use for 'how many ...' questions, implying when to count rather than list. Also notes it's a cheap, small API call, guiding efficient usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_reportC
Format a HackerOne-style report in markdown for you to submit yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| steps | Yes | ||
| title | Yes | ||
| impact | Yes | ||
| summary | Yes | ||
| weakness | Yes |
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 disclosing behavioral traits. The description only says it 'formats' a report, but does not state whether it has side effects (e.g., saves the report), requires authentication, or has rate limits. For a tool that likely only returns formatted text, this is insufficient.
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 concise sentence. However, it sacrifices necessary detail for brevity. Every word matters, but important aspects like output format and parameter hints are omitted. It is not overly long, but it could be more informative without losing 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 6 required parameters, no output schema, and no annotations, the description is far from complete. It does not explain the return value (markdown text), any constraints (e.g., character limits), or how the parameters relate to a HackerOne report. The agent would have to infer too much.
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 schema has 6 required string parameters with no descriptions (0% coverage). The description adds no information about parameter semantics. For example, 'weakness' could be a CWE ID or name, and 'steps' likely means steps to reproduce, but nothing clarifies this. The agent receives no guidance beyond parameter names.
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 formats a HackerOne-style report in markdown. The verb 'Format' and resource 'HackerOne-style report' are specific, and it distinguishes from sibling tools like 'get_report' (retrieves existing reports) and 'list_my_reports' (lists reports). However, it could explicitly mention that it does not submit the report.
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 usage guidelines are provided. There is no indication of when to use this tool versus alternatives such as 'get_report' or 'list_my_reports'. The description does not include any context about prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_programsB
List programs matching filters, compactly. Examples: all VDPs (offers_bounties=false), all bounty programs (offers_bounties=true), only open programs (submission_state="open"), your bookmarked programs (bookmarked=true). Omitted filters are not applied.
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No | ||
| bookmarked | No | ||
| offers_bounties | No | ||
| submission_state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states 'Omitted filters are not applied' which implies independent filtering, but it does not disclose whether the tool is read-only, requires authentication, has rate limits, or what the 'refresh' parameter does (e.g., force fetch from API). The behavior of the 'refresh' parameter is completely unexplained.
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 sentence with inline examples, making it efficient and front-loaded with the tool's purpose. It avoids unnecessary words and the examples are directly integrated. However, the lack of any structure (e.g., separate parameter descriptions) slightly reduces clarity for the refresh parameter.
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 has 4 parameters, no output schema, and no annotations, the description provides a basic understanding of filtering but falls short on explaining the 'refresh' parameter, return format, and what 'compactly' means. For a simple filtered list tool, it is adequate but not fully complete.
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 0%, so the description must provide meaning. It adds value for three parameters (bookmarked, offers_bounties, submission_state) by providing example values, but does not explain the 'refresh' parameter at all. Additionally, it does not specify data types, allowed values (e.g., whether submission_state has a fixed set), or null semantics beyond default null.
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 that the tool lists programs matching filters, and provides examples like 'all VDPs (offers_bounties=false)'. It specifies the resource (programs) and action (list with filters). However, it does not explicitly differentiate from sibling tool 'list_programs', which may serve a similar unfiltered purpose.
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 gives contextual examples for when to use each filter (bookmarked, offers_bounties, submission_state), which implies usage scenarios. However, it lacks guidance on when to prefer this tool over siblings like 'list_programs' or 'count_programs', and does not specify when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceA
Read your current HackerOne balance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states it is a read operation, which implies non-destructive behavior. No annotations exist, so description bears full burden; it is adequate but could mention authentication requirements.
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?
Single sentence, no wasted words. Front-loaded with verb and resource.
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 parameter-less read tool with no output schema, the description fully informs the agent of the tool's function. No additional context needed.
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?
No parameters exist; schema coverage is 100%. Baseline 3 applies as description adds no parameter information but doesn't need to.
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 the action (Read) and resource (your current HackerOne balance), making its purpose unambiguous and distinct from siblings.
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 or when not to use this tool. While context implies it's for checking balance, no alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_programA
Get full policy/details for a program by its handle.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It states 'Get' implying a read operation, but does not specify idempotency, permissions required, response size, or any side effects. Basic expectations are inferred but not explicitly clarified.
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, concise sentence that immediately conveys the tool's purpose and required input. Every word is necessary, and there is no redundancy or wasted space.
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 simplicity (single required parameter, standard retrieval operation), the description is largely complete. However, the lack of an output schema means details about the return structure are absent, but the description 'full policy/details' broadly covers expectations.
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 0%, but the description explicitly mentions the parameter 'handle' with the phrase 'by its handle', clarifying its purpose. Since there is only one parameter and it is explained, the description adds sufficient semantic value 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 uses specific verb 'Get' and resource 'full policy/details for a program', clearly indicating the tool retrieves complete information for a single program. It distinguishes from sibling tools like 'list_programs' (which lists multiple) and 'filter_programs' (which filters), as it targets a unique program by handle.
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 such as 'list_programs' or 'filter_programs'. There is no mention of prerequisites, when not to use it, or trade-offs compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_program_scopesC
Get structured scopes for a program, summarized in/out of scope.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | ||
| refresh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It indicates a read operation with summarization, but lacks details on authentication, rate limits, or side effects. Minimal behavioral disclosure.
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 concise sentence, but underspecifies. It could add parameter context without becoming verbose.
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 simple 2-parameter tool with no output schema, the description covers the basic purpose but omits parameter details and behavioral context, leaving gaps for the 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?
With 0% schema description coverage, the description must explain parameters. It does not mention 'handle' or 'refresh', leaving their meaning and usage unclear.
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 structured scopes for a program, summarized in/out of scope. It uses a specific verb and resource, distinguishing it from sibling tools like search_scopes or filter_programs.
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 use when needing scopes for a specific program, but does not specify when to avoid this tool or mention alternatives like search_scopes. No context for 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_weaknessesA
List the weaknesses (CWE types) a program tracks: name, external_id (e.g. CWE-79), and description.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description discloses the output fields (name, external_id, description) but does not mention any behavioral traits such as side effects, authorization requirements, or rate limits. It is a minimal disclosure for a simple list operation.
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 sentence of 20 words, front-loaded with the action and resource, with no extraneous 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?
Given the tool has only one parameter and no output schema, the description adequately lists the return fields and gives an example of external_id format. It misses details like potential constraints or ordering, but is largely complete for its simplicity.
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 0% with no description for the handle parameter. The description only implies handle identifies a program, but does not explicitly state its meaning, format, or how to obtain it. This provides only marginal added value over 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 lists weaknesses (CWE types) for a program, specifying the returned fields: name, external_id, and description. This distinguishes it from siblings like list_cwe_types (which might list all CWE types) and get_program_scopes.
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?
Usage context is implied: you need a specific program handle to list its weaknesses. However, no explicit guidance on when to use this vs alternatives or any prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportB
Read a specific report by its id.
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It states 'Read' (non-destructive) but does not mention permissions, error conditions (e.g., missing report), or any 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?
The description is a single, concise sentence with no unnecessary words. It is front-loaded with the action. However, additional useful details could be added 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 a simple tool with one parameter and no output schema, the description covers the core purpose but omits return format, error handling, and access requirements. It is minimally adequate but not comprehensive.
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 0%, so the description must compensate. It mentions 'by its id' but does not clarify the format, source, or expected value of report_id. The parameter lacks semantic enrichment.
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 'Read', the resource 'a specific report', and the method 'by its id'. This distinguishes it from sibling tools like list_my_reports and search_disclosed_reports.
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 over alternatives such as list_my_reports or search_disclosed_reports. The description lacks any context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cwe_typesB
List valid CWE/weakness names usable as the cwe filter in
search_disclosed_reports.
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as whether the tool is read-only, if it caches results, or the effect of the refresh parameter. Minimal transparency 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 a single, front-loaded sentence that efficiently conveys the core purpose. However, it omits important parameter information that could be included 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?
Despite the tool's simplicity (one optional param, no output schema), the description lacks any mention of what the tool returns (e.g., a list of names) or the behavior of the refresh parameter, leaving the agent with incomplete 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?
Schema coverage is 0% and the description makes no mention of the single parameter 'refresh'. It provides no additional meaning beyond the schema's type and default, leaving the agent without guidance on how to use the parameter.
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 'list' and resource 'valid CWE/weakness names', and explicitly links its purpose to the 'cwe' filter in search_disclosed_reports, distinguishing it from sibling 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 when to use the tool (when needing CWE names for filtering), but provides no explicit guidance on when not to use it or alternatives, and does not address the refresh parameter's role in usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_earningsB
List your HackerOne earnings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility for disclosing behavior. It only says 'List', implying a read operation, but does not mention pagination, sorting, filtering, or any other behavioral traits. This is a significant gap for a tool with no annotation support.
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, front-loaded sentence with no wasted words. It is appropriately concise for a parameterless tool.
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 output schema and annotations, the description should explain what the list of earnings contains. It does not specify fields, format, or any additional context, leaving the agent with insufficient information to interpret the results.
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?
There are zero parameters, and schema coverage is 100%. According to the rubric, a baseline of 4 is appropriate since the description adds no additional parameter information, but none is needed.
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 the resource ('your HackerOne earnings'). It is specific and unambiguous, but does not differentiate from sibling tools like 'get_balance' which might also relate to financial 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?
No guidance is provided on when to use this tool versus alternatives. The description merely states what it does, with no context about when it is appropriate or when to use other tools like 'get_balance' or 'list_my_reports'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_reportsA
List your own submitted reports (compact: id, title, state, dates). Use get_report(id) for the full detail of one report.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool lists only the user's own submitted reports and the output fields (id, title, state, dates). No contradictions with annotations (none provided). Could mention pagination or ordering, but acceptable for a simple list.
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: first states purpose and output, second provides usage guidance. No filler 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?
Complete for a parameterless list tool with no output schema. Tells what it does, output format, and how to get details. Could mention ordering or number of results, but not critical.
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?
No parameters, so baseline 4. Description adds meaning about output format beyond schema (compact fields).
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 it lists the user's own submitted reports with compact output including id, title, state, dates. Distinguishes from sibling get_report by specifying compact vs full detail.
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?
Explicitly says to use get_report for full detail of one report, providing an alternative. This guides the agent when to use this tool vs the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_programsA
List all HackerOne programs your account can access.
The full list is large; pass compact=true to get just
handle/name/offers_bounties/submission_state/state per program, which
stays well under the response size limit. For just totals, use
count_programs instead.
| Name | Required | Description | Default |
|---|---|---|---|
| compact | No | ||
| refresh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the full list is large and compact reduces response size. No annotations exist, so description carries the burden well, though it omits stating it's read-only.
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 fluff, front-loaded with main purpose. 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?
Covers purpose, usage, and one parameter. Lacks explanation of refresh parameter and response format, but for a simple list tool, it's largely sufficient.
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?
Explains compact parameter in detail (what fields it returns and size benefit), but refresh parameter is left unexplained. Schema coverage is 0%, so description partially compensates.
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 'List all HackerOne programs your account can access' – a specific verb and resource. It also distinguishes from sibling 'count_programs'.
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?
Explicitly suggests using compact=true for large lists and directs to count_programs for totals, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_programsA
Rank your programs by attractiveness (bounties, scope breadth, severity).
Scans every program you can access, which on a cold cache means one API
call per program and can be slow/rate-limited. Pass limit (e.g. 50) to
rank only the first N programs for a quick result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| refresh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool scans every program (one API call per program) and can be slow/rate-limited, which is critical behavioral context. Does not mention any side effects or return format.
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?
Very concise: two sentences in first paragraph for purpose, two sentences for behavior and parameter guidance. No redundant information, front-loaded with key action.
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 purpose, performance, and one parameter. Lacks explanation of the 'refresh' parameter and does not describe the output format. Given the tool's simplicity and no output schema, it is still partially incomplete.
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 0%. The description adds value for the 'limit' parameter (explains its effect on speed and scope) but does not explain the 'refresh' parameter, leaving it ambiguous.
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 ranks programs by attractiveness with explicit criteria (bounties, scope breadth, severity), distinguishing it from siblings like list_programs or filter_programs.
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?
Provides advice on when to use the tool (ranking) and performance considerations (slow on cold cache, suggests using limit for quick results). Does not explicitly mention when not to use, but the context implies alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_getA
Authenticated read-only GET against any HackerOne v1 path, for reads not covered by a dedicated tool. Pass a RELATIVE path (no host).
Known read endpoints: hackers/programs hackers/programs/{handle} hackers/programs/{handle}/structured_scopes hackers/programs/{handle}/weaknesses hackers/me/reports hackers/reports/{id} hackers/payments/balance hackers/payments/earnings
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. States 'authenticated read-only GET' indicating safety. However, it doesn't detail behavior for invalid paths, rate limits, or response format. Adequate but could be more transparent.
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?
Description is concise and front-loaded with purpose. The list of known endpoints is useful but slightly lengthens it. Efficient overall.
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?
No output schema and missing return value description. Authentication details are implied but not explicit. Could be more complete by noting expected response shape or error handling for a raw GET 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 coverage is 0% with no descriptions. The description adds value by specifying 'Pass a RELATIVE path (no host)' for path and implies params are for query parameters. Significantly compensates for lack of schema descriptions.
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 'Authenticated read-only GET against any HackerOne v1 path, for reads not covered by a dedicated tool.' It provides a specific verb (GET) and resource (HackerOne v1 path) and distinguishes from siblings by indicating it's for uncovered reads.
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?
Explicitly says 'for reads not covered by a dedicated tool' and lists known read endpoints, guiding when to use this tool. Also instructs to pass a relative path. Slightly missing explicit when-not scenarios, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_directoryA
Search HackerOne's public program directory by name/handle term. Returns up to 10 matches (name, handle).
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | ||
| refresh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses it returns up to 10 matches with name and handle, but does not mention behavior for empty term or the refresh parameter. Without annotations, more detail on side effects or auth would help.
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, efficiently describes action and output 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?
Covers core functionality but lacks details on refresh parameter, search semantics (case sensitivity, partial matches), and output format beyond name/handle.
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?
With 0% schema coverage, description partially explains 'term' (name/handle) but omits 'refresh' entirely, failing to compensate for the lack of documentation.
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 searches HackerOne's public program directory by name/handle term, which distinguishes it from siblings like list_programs and search_disclosed_reports.
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?
Implied usage for searching programs by name/handle, but no explicit guidance on when to use this tool over siblings like search_disclosed_reports or list_programs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_disclosed_reportsA
Search HackerOne's PUBLIC disclosed reports (hacktivity). Filters:
free-text query; severity (critical/high/medium/low); cwe
(vuln-class name, e.g. "Cross-site Scripting (XSS)"); cve
(e.g. CVE-2024-1234); program (a team handle, e.g. "curl").
sort is "relevance" or "recent" (default: relevance when a free-text
query is given, else recent). since/until bound results by
disclosable-activity date as YYYY-MM-DD. Use size/from_ to page.
Returns {total_count, results[...]}.
| Name | Required | Description | Default |
|---|---|---|---|
| cve | No | ||
| cwe | No | ||
| size | No | ||
| sort | No | ||
| from_ | No | ||
| query | No | ||
| since | No | ||
| until | No | ||
| program | No | ||
| refresh | No | ||
| severity | No |
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 return format ({total_count, results[...]}), pagination via size/from_, default sort logic, and date bounds with YYYY-MM-DD format. It does not mention rate limits or authentication requirements, but it is sufficiently transparent for a read-only search operation.
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 (5 sentences) and well-structured: first sentence states purpose, followed by filter list, sort defaults, date bounds, pagination, and return format. Every sentence adds value with no redundancy or fluff.
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 11 parameters, no output schema, and no annotations, the description is highly comprehensive. It covers all parameters, return structure, pagination, and default behaviors. It lacks details on error handling or rate limits, but it is sufficient for an agent to understand and use the tool 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?
The input schema has 0% description coverage, leaving all parameter meaning to the description. The description thoroughly explains each parameter: query, severity, cwe, cve, program, sort (with default behavior), since/until (with format), size, and from_. It provides valid values and context beyond the schema, making parameter usage clear.
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 'HackerOne's PUBLIC disclosed reports (hacktivity)', distinguishes from sibling search tools like search_directory and search_scopes, and details the specific resource and verb. It also lists multiple filters, making the purpose unambiguous.
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 clear context for when to use the tool (to search public disclosed reports) but does not explicitly state when not to use it or mention alternative tools. It explains default sort behavior and parameter usage, which helps, but lacks exclusions or comparisons to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_scopesA
Search assets across your programs by keyword and optional asset_type.
Scans every program you can access, which on a cold cache means one API
call per program and can be slow/rate-limited. Pass limit (e.g. 50) to
scan only the first N programs for a quick result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| refresh | No | ||
| asset_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description discloses performance implications: cold cache makes one API call per program, causing slowness/rate limits. This adds value beyond the schema.
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?
Three sentences, each earning its place: purpose, then behavioral note and tip. No wasted words, front-loaded with 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?
Covers purpose and performance but lacks output format description and does not explain the refresh parameter. Given no output schema, more detail on return values 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 0%, so description must add meaning. It explains query (keyword), limit (controls scanning), and asset_type (optional), but does not mention refresh. The explanations are minimal but useful.
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 searches assets across programs by keyword and optional asset_type. It is distinct from sibling tools like search_directory and search_disclosed_reports.
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?
Provides context that scanning all programs can be slow/rate-limited and suggests using limit for quick results. No explicit when-not or alternatives, but the context is clear.
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. Dates show when Glama detected each change.
17 tool updates
v0.1.0- First observed
count_programs - First observed
draft_report - First observed
filter_programs - First observed
get_balance - First observed
get_program - First observed
get_program_scopes - First observed
get_program_weaknesses - First observed
get_report - First observed
list_cwe_types - First observed
list_earnings - First observed
list_my_reports - First observed
list_programs - First observed
rank_programs - First observed
raw_get - First observed
search_directory - First observed
search_disclosed_reports - First observed
search_scopes
TDQS
Most tools have distinct purposes, with clear boundaries between listing programs, filtering, searching, and getting details. However, `list_programs`, `filter_programs`, and `search_directory` could cause minor confusion, and `raw_get` overlaps with any read operation.
All tools follow a consistent `verb_noun` snake_case pattern (e.g., `count_programs`, `get_program`, `search_disclosed_reports`). Even `raw_get` fits the pattern as an adjective-verb combination.
17 tools cover the HackerOne domain well—program management, report viewing, earnings, and search—without being excessive. Each tool serves a clear purpose within the read-only scope.
The tool surface is read-only, lacking any write operations (e.g., submitting reports, updating programs, or managing account settings). `draft_report` prepares a report for manual submission, but there is no tool to actually submit it, creating a dead end.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Related MCP Servers
- FlicenseAqualityDmaintenanceA read-only MCP server that exposes your iMessage data to Claude Code and Claude Desktop, with automatic contact name resolution.3-
- AlicenseBqualityCmaintenanceEnables MCP clients like Claude and Codex to interact with HackerOne's API to list and get reports, programs, and scopes.21253MIT
- AlicenseAqualityCmaintenanceMCP server that connects Claude to Dependency-Track for natural language vulnerability triage, analysis, and management.14MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server for the IssueHunt bug bounty platform. Enables LLMs like Claude to interact with IssueHunt to list organizations, programs, and vulnerability reports, as well as perform triage actions.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AxiomSec/hackerone-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server