get_program_scope
Retrieve in-scope assets for bug bounty programs to identify eligible targets, asset types, and severity caps when drafting security reports.
Instructions
Get the in-scope assets for a bug bounty program. Returns asset types, identifiers, bounty eligibility, and severity caps. Useful when drafting reports to pick the correct asset.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| program_handle | Yes | Program handle (e.g. 'uber', 'ipc-h1c-aws-tokyo-2026') | |
| page_size | No | Number of scope items to return (default 100) |
Implementation Reference
- src/h1client.ts:249-264 (handler)The actual implementation of the get_program_scope logic, which fetches and transforms the structured scope data for a program.
export async function getProgramScope(handle: string, pageSize = 100) { const data = await h1Fetch(`/hackers/programs/${handle}/structured_scopes`, { "page[size]": String(pageSize), }); return data.data.map((s: any) => ({ id: s.id, asset_type: s.attributes.asset_type, asset_identifier: s.attributes.asset_identifier, eligible_for_bounty: s.attributes.eligible_for_bounty, eligible_for_submission: s.attributes.eligible_for_submission, instruction: s.attributes.instruction, max_severity: s.attributes.max_severity, created_at: s.attributes.created_at, })); } - src/index.ts:274-303 (registration)Registration of the get_program_scope tool with the MCP server, including input schema definition and tool handler mapping.
server.tool( "get_program_scope", "Get the in-scope assets for a bug bounty program. Returns asset types, identifiers, bounty eligibility, and severity caps. Useful when drafting reports to pick the correct asset.", { program_handle: z .string() .describe("Program handle (e.g. 'uber', 'ipc-h1c-aws-tokyo-2026')"), page_size: z .number() .min(1) .max(100) .optional() .describe("Number of scope items to return (default 100)"), }, async ({ program_handle, page_size }) => { try { const scope = await getProgramScope(program_handle, page_size); return { content: [ { type: "text" as const, text: JSON.stringify(scope, null, 2), }, ], }; } catch (err: any) { return { content: [{ type: "text" as const, text: `Error: ${err.message}` }], isError: true, };