training.get
Retrieve training data for learning security vulnerability patterns, enabling users to filter by vulnerability type and source to improve bug bounty hunting skills.
Instructions
Retrieve training data for learning patterns
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| vulnerabilityType | No | Filter by vulnerability type | |
| source | No | Filter by source (htb, portswigger) | |
| limit | No | Maximum number of results |
Implementation Reference
- src/tools/training.ts:148-158 (handler)Handler function for the 'training.get' MCP tool. Fetches training data from PostgreSQL via getTrainingData and formats the result as ToolResult.async ({ vulnerabilityType, source, limit = 100 }: any): Promise<ToolResult> => { try { const data = await getTrainingData(vulnerabilityType, source, limit); return formatToolResult(true, { trainingData: data, count: data.length, }); } catch (error: any) { return formatToolResult(false, null, error.message); } }
- src/tools/training.ts:137-146 (schema)Description and input schema definition for the 'training.get' tool.{ description: 'Retrieve training data for learning patterns', inputSchema: { type: 'object', properties: { vulnerabilityType: { type: 'string', description: 'Filter by vulnerability type' }, source: { type: 'string', description: 'Filter by source (htb, portswigger)' }, limit: { type: 'number', description: 'Maximum number of results', default: 100 }, }, },
- src/tools/training.ts:135-159 (registration)Registration of the 'training.get' tool on the MCP server within registerTrainingTools, including schema and inline handler.server.tool( 'training.get', { description: 'Retrieve training data for learning patterns', inputSchema: { type: 'object', properties: { vulnerabilityType: { type: 'string', description: 'Filter by vulnerability type' }, source: { type: 'string', description: 'Filter by source (htb, portswigger)' }, limit: { type: 'number', description: 'Maximum number of results', default: 100 }, }, }, }, async ({ vulnerabilityType, source, limit = 100 }: any): Promise<ToolResult> => { try { const data = await getTrainingData(vulnerabilityType, source, limit); return formatToolResult(true, { trainingData: data, count: data.length, }); } catch (error: any) { return formatToolResult(false, null, error.message); } } );
- src/integrations/postgres.ts:283-318 (helper)Database helper function getTrainingData used by the tool handler to query training data from the 'training_data' PostgreSQL table with optional filters.export async function getTrainingData( vulnerabilityType?: string, source?: string, limit: number = 100 ): Promise<any[]> { const client = await initPostgres().connect(); try { let query = 'SELECT * FROM training_data'; const conditions: string[] = []; const params: any[] = []; let paramCount = 0; if (vulnerabilityType) { paramCount++; conditions.push(`vulnerability_type = $${paramCount}`); params.push(vulnerabilityType); } if (source) { paramCount++; conditions.push(`source = $${paramCount}`); params.push(source); } if (conditions.length > 0) { query += ' WHERE ' + conditions.join(' AND '); } query += ' ORDER BY learned_at DESC LIMIT $' + (paramCount + 1); params.push(limit); const result: QueryResult = await client.query(query, params); return result.rows; } finally { client.release(); } }