Skip to main content
Glama

h1-mcp

A small, read-only Model Context Protocol server for the HackerOne Hacker API. Use it from Claude Code, Codex and opencode to pull program policy, structured scope, scope exclusions, hacktivity (dedup / prior art) and your own reports straight into the model.

Deliberately eight terse tools — every tool schema is a permanent context cost, so the surface stays small and the output is compact JSON.

Read-only by design: it only ever issues GET requests. It cannot submit or modify anything.


What you get

Tool

What it does

hackerone_list_programs

Programs your token can see. Filter by bounty eligibility, submission state or name.

hackerone_get_program

Program metadata + policy; optionally include scopes and/or exclusions in one call.

hackerone_get_structured_scopes

In-scope assets: identifier, type, bounty eligibility, max severity.

hackerone_get_scope_exclusions

Report categories the program excludes from rewards.

hackerone_check_in_scope

Is this host/URL/IP/CIDR in scope? Matches wildcards, domains, URLs, IPs and CIDRs.

hackerone_hacktivity_search

Disclosed reports by Lucene query (dedup and prior art).

hackerone_search_disclosed_reports

Disclosed reports for one program.

hackerone_my_reports

Your own submitted reports (state, severity, bounty).

Why this over the stock API wrapper:

  • list_programs so the agent can discover handles instead of being told them.

  • check_in_scope — a real wildcard/domain/URL/IP/CIDR matcher with exclusions as caveats.

  • Batched context — get_program(with_scopes=True, with_exclusions=True) in one round-trip.

  • Polite client — Retry-After-aware backoff on 429/5xx, automatic pagination, typed models.


Related MCP server: appstoreconnect-codex-mcp

Requirements


Install

1. Install the server

uv tool install git+https://github.com/gabdevele/h1-mcp

This puts an h1-mcp executable on your PATH (~/.local/bin). Make sure that directory is on PATH (it usually is).

pipx install git+https://github.com/gabdevele/h1-mcp
uvx --from git+https://github.com/gabdevele/h1-mcp h1-mcp --help

h1-mcp falls back to this form automatically when it is not installed, so the generated client configs work either way.

2. Store your credentials (once)

h1-mcp init
# HackerOne username: your-handle
# HackerOne API token: ****

This writes ~/.config/h1-mcp/env with mode 0600. Credentials live in one place, so no client config ever embeds a secret. You can also override the path with H1_MCP_ENV, or just export H1_USERNAME / H1_API_TOKEN.

3. Verify

h1-mcp doctor
# OK - authenticated. Example program visible: security

4. Register the server in your client

h1-mcp install --client all        # claude + codex + opencode
# or individually
h1-mcp install --client claude
h1-mcp install --client codex
h1-mcp install --client opencode

install uses each client's own CLI where possible, and prints a snippet when it cannot. To just see the config without writing anything:

h1-mcp config --client all

Restart the client afterwards.


Client setup (manual)

opencode

Add to ~/.config/opencode/opencode.jsonc:

{
  "mcp": {
    "hackerone": {
      "type": "local",
      "command": ["h1-mcp"],
      "enabled": true
    }
  }
}

Claude Code

claude mcp add hackerone -s user -- h1-mcp
claude mcp list

Or add this to .mcp.json / ~/.claude.json:

{
  "mcpServers": {
    "hackerone": { "command": "h1-mcp", "args": [] }
  }
}

Codex

codex mcp add hackerone -- h1-mcp
codex mcp list

Or in ~/.codex/config.toml:

[mcp_servers.hackerone]
command = "h1-mcp"
args = []

Any other MCP client

It is a plain stdio server: run h1-mcp (no arguments). Credentials are read from the environment or ~/.config/h1-mcp/env, so nothing else needs configuring.


Usage

Once registered, just talk to your agent. Examples:

  • “List programs that offer bounties and mention their max severity in scope.”

  • “Is api.acme.com in scope for the acme program? Any exclusions I should worry about?”

  • “Summarize the acme policy and list the top 10 in-scope assets.”

  • “Find disclosed XSS reports for acme from the last year.”

  • “Show my reports that are still new.”

You can also drive it directly:

h1-mcp serve            # run the stdio server (what the clients call)
h1-mcp doctor           # check credentials + connectivity
h1-mcp --version

Configuration

Env var

Default

Purpose

H1_USERNAME

–

HackerOne username (wins over the file).

H1_API_TOKEN

–

HackerOne API token.

H1_MCP_ENV

~/.config/h1-mcp/env

Path to the shared credentials file.

H1_MCP_HOME

~/.config/h1-mcp

Directory for the default file.

Resolution order: process environment → H1_MCP_ENV file → ./.env.

Security notes

  • h1-mcp init writes the credentials file as 0600.

  • .env and *.env are git-ignored; never commit tokens.

  • The server is read-only and only sends the token to api.hackerone.com over HTTPS.


Development

git clone https://github.com/gabdevele/h1-mcp
cd h1-mcp
uv sync --extra dev
uv run pytest
uv run ruff check src tests
uv run h1-mcp doctor

Layout:

src/h1_mcp/
  client.py    # HackerOne Hacker API client (retries, pagination, typed models)
  models.py    # pydantic response models
  scope.py     # pure in-scope matcher (wildcard/domain/URL/IP/CIDR)
  server.py    # the MCP server + 8 tools
  config.py    # credential loading/storage
  cli.py       # serve / init / doctor / install / config
tests/         # unit tests for scope, client and server (no network)

License

MIT — see LICENSE.

Available Tools

8 tools
check_in_scopeA

Decide whether an asset (host, URL, IP or CIDR entry) is covered by a program's structured scope. Returns every matching scope entry plus the program's exclusions as caveats.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYes
handleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It helpfully discloses the response shape ('every matching scope entry plus the program's exclusions as caveats'), which tells the agent exclusions arrive as caveats rather than verdicts. However, it says nothing about auth requirements, rate limits, or how a non-matching asset is represented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the decision purpose front-loaded and the return behavior second. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining return values is a bonus rather than a necessity, and the description still notes the caveats structure. The main gap is the undocumented 'handle' parameter, which the description does not resolve.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters. The description compensates partially by defining the accepted 'asset' forms (host, URL, IP, CIDR), but the 'handle' parameter is left entirely unexplained in both schema and description, so the agent must guess what identifies the program.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Decide whether an asset ... is covered by a program's structured scope') and enumerates the accepted asset forms (host, URL, IP, CIDR). This distinguishes it from siblings like get_structured_scopes or get_scope_exclusions, which list rather than evaluate a specific asset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose implies the usage scenario (evaluating one asset against a program's scope), but there is no explicit when-to-use or when-not-to-use guidance relative to siblings such as get_structured_scopes or get_scope_exclusions. The agent must infer that this is the per-asset membership check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_programB

Program metadata and policy (truncated). Set flags to also include structured scope and/or scope exclusions in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes
with_scopesNo
with_exclusionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose a real trait — that program metadata is truncated — and explains the flag-driven consolidation behavior. But it says nothing about permissions, whether the caller must be a program member, rate limits, or what the truncation means for completeness, leaving notable gaps for a tool with zero 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler, and the resource statement is front-loaded before the flag guidance. The cryptic "(truncated)" marker is the only element that costs clarity without adding meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the flag consolidation guidance is a useful addition. Still, with no annotations, an unexplained required handle parameter at 0% schema coverage, and an ambiguous truncation note, the description is only adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 does clarify with_scopes and with_exclusions (include structured scope and/or scope exclusions) and that they can be combined in one call, which is genuinely more than the bare titles offer. The required handle parameter — the sole identifier and the key to the whole call — is left entirely unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (program metadata and policy) but uses no verb and never states that it returns data for the single program named by the handle parameter. The parenthetical "(truncated)" is ambiguous — it could mean the tool's output is truncated or that the description itself was cut off, which muddies the stated purpose. It only weakly differentiates from siblings get_structured_scopes and get_scope_exclusions by noting that their data can be pulled "in one call."

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence implies a usage pattern: set with_scopes/with_exclusions to fold the sibling tools' data into a single call, which is a soft alternative to calling get_structured_scopes or get_scope_exclusions separately. However, it never says when to use this tool versus those siblings, and there are no exclusions or prerequisites (e.g., authentication, program membership).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scope_exclusionsC

Report categories the program excludes from rewards (out-of-scope classes).

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only lookup but says nothing about permissions, whether results are program-specific, rate limits, or freshness. With an output schema present, return-shape disclosure is not required, but the remaining behavioral context is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. The parenthetical clarifying 'out-of-scope classes' is the only elaboration, and it earns its place; nothing is wasted, though there is very little content overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one parameter and a present output schema, the definition is nearly sufficient: it says what is returned. However, it omits what 'handle' identifies and how this list differs from the scope data returned by get_structured_scopes, leaving a genuine routing gap for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the sole parameter 'handle' is never mentioned in the description. The agent must infer that handle means a program handle and how it relates to the exclusions returned. The description does not compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and scope: categories excluded from rewards (out-of-scope classes). The verb 'Report' is slightly odd for a getter, and it does not explicitly distinguish itself from nearby siblings like get_structured_scopes or check_in_scope, but the purpose is clear and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no named alternative. An agent reading this cannot tell whether to call it instead of get_structured_scopes or check_in_scope, which is exactly the confusion this tool needs to resolve.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_structured_scopesC

In-scope assets for a program: identifier, type, bounty eligibility and max severity.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return fields (identifier, type, bounty eligibility, max severity), which is mild content transparency, but says nothing about permissions, auth, pagination, or whether the list is complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded with the core resource, so it is not verbose. But it is a sentence fragment rather than a structured statement, and the terse field list substitutes for real explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description omits the required handle argument, prerequisites, and any routing guidance. For a program-scoped read tool with no annotations, this leaves too much to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter (handle) with 0% schema description coverage, and the description never mentions it. The agent must guess that 'handle' is the program identifier referenced by 'a program' in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (in-scope assets for a program) and the fields returned, so an agent can infer it retrieves scopes. However it is a noun phrase with no verb, and it never distinguishes itself from siblings like check_in_scope or get_scope_exclusions, which sound equally scope-related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus check_in_scope, get_scope_exclusions, or get_program. The word 'program' implies a program handle is needed, but no prerequisite or context is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_programsA

List HackerOne programs you can access. Filter by bounty eligibility, submission state or a handle/name substring. Returns handles to feed the other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
queryNo
offers_bountiesNo
submission_stateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. 'List' and 'programs you can access' imply a permission-scoped read, but the description says nothing about pagination behavior, rate limits, or the result shape beyond handles. Adequate but thin for a tool with zero 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action, then filters, then the return-value purpose. No redundant or wasted phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained, and the description correctly points to handles as the takeaway. The remaining gap is undocumented pagination parameters and the absence of any behavioral notes for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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, and it does so only partially: it explains query (handle/name substring), offers_bounties (bounty eligibility) and submission_state, but says nothing about the page and limit pagination parameters the schema exposes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List HackerOne programs') and adds scope ('you can access'), which lets an agent distinguish it from the singular get_program sibling. It does not explicitly name or contrast with siblings, but the list-vs-get distinction is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: filter by bounty eligibility, submission state, or a handle/name substring, and the closing line 'Returns handles to feed the other tools' signals the downstream workflow. No explicit when-not or alternative-tool routing, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

my_reportsB

Your own submitted reports (state, severity, bounty). Pass report_id for one report.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
report_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it only discloses that results are scoped to the caller's own reports. It says nothing about auth requirements, whether the list is paginated or bounded, or how state/severity/bounty are represented, leaving the agent to infer behavior from the schema defaults.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the resource and followed by the alternate mode. There is no filler, though it is arguably terse to the point of under-specifying pagination.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is not strictly needed, and the description does hint at returned fields. For a simple read tool this is close to adequate, but with zero schema coverage and no annotations, the absence of any pagination or auth context leaves a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, but it only explains `report_id` (selects a single report). The `page` and `limit` parameters are entirely undocumented in both schema and description, so an agent gets no guidance on pagination semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete resource — the caller's own submitted reports — and even lists the salient fields (state, severity, bounty), which separates it from sibling listing tools like search_disclosed_reports or hacktivity_search. It stops short of explicitly naming those siblings, so the distinction is inferable rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one clear mode switch — 'Pass `report_id` for one report' — which tells the agent how to go from list to single-item retrieval. However, it never says when to prefer this over the sibling discovery tools or what happens when no report_id is supplied, so usage remains implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_disclosed_reportsC

Disclosed reports for one program (dedup scoped to the program you are hunting).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
handleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses one trait, program-scoped deduplication, but says nothing about permissions/auth, rate limits, pagination, or result ordering for a search endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single compact sentence with no waste, and the scoping constraint is front-loaded. The terseness crosses into under-specification, but it is not verbose or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, but with no annotations and 0% parameter documentation, the agent is missing essential invocation context such as query semantics, default result size, and how this differs from hacktivity_search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across three parameters. The description implies the program handle is required ('one program') but adds no meaning for 'query' or 'limit', leaving two of three parameters undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('disclosed reports') and scopes it to a single program, which separates it from hacktivity_search and my_reports. However, it is a noun phrase with no verb, and 'search' is only inferable from the tool name, so the action itself is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical hints that results are deduplicated within the program being hunted, giving a fragment of context, but there is no explicit when-to-use guidance and no mention of the obvious alternative hacktivity_search for broader disclosure browsing.

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.

  1. 8 tool updatesv0.1.0
    • First observedcheck_in_scope
    • First observedget_program
    • First observedget_scope_exclusions
    • First observedget_structured_scopes
    • First observedhacktivity_search
    • First observedlist_programs
    • First observedmy_reports
    • First observedsearch_disclosed_reports

TDQS

B3/5.0

Scored across 8 tools

Disambiguation3/5

There is meaningful overlap: get_program can optionally return structured scope and exclusions, duplicating get_structured_scopes and get_scope_exclusions, and hacktivity_search vs search_disclosed_reports both search disclosed reports. Descriptions clarify scope (global Lucene vs per-program) and intent, but an agent can reasonably hesitate between the program-metadata tool with flags and the dedicated scope tools.

Naming Consistency3/5

Most tools use a readable snake_case verb_noun pattern (list_programs, get_program, get_structured_scopes, check_in_scope). However hacktivity_search reverses the order compared to search_disclosed_reports, and my_reports is a possessive noun rather than a verb, creating mixed conventions.

Tool Count4/5

Eight tools is a well-sized surface for the HackerOne domain, comfortably within the 3-15 range. There is slight redundancy because get_structured_scopes and get_scope_exclusions overlap with get_program's flags, so not every tool strictly earns an independent place.

Completeness4/5

The set covers program discovery, policy/scope lookup, scope checking, disclosed-report research, and a user's own reports—core hunting workflows. Gaps are minor for a read-oriented server: no report submission, no direct get-by-ID for disclosed reports, and program policy is noted as truncated.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Provides read-only access to HackerOne reports, program scopes, and bounty earnings through the HackerOne API. It enables users to analyze hunting patterns, check asset eligibility, and retrieve report details or triage conversations via natural language.
    9
    41
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only interaction with App Store Connect via MCP tools, including listing apps, versions, builds, and review submissions, with compliance boundaries and no write operations by default.
    MIT