Skip to main content
Glama

training.import_portswigger

Import PortSwigger Academy lab solutions to train vulnerability testing skills with payloads and step-by-step guidance for security practice.

Instructions

Import training data from PortSwigger Academy lab solution

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
labNameYesName of the PortSwigger lab
labUrlNoURL of the lab
vulnerabilityTypeYesType of vulnerability
solutionYesSolution data with payloads and steps

Implementation Reference

  • The handler function that implements the core logic for importing PortSwigger Academy lab solutions as training data. It loops through payloads in the solution, calls saveTrainingData for each, and returns the import results.
    async (params: any): Promise<ToolResult> => { try { const solution = params.solution; const payloads = solution.payloads || []; const results: any[] = []; for (const payload of payloads) { const id = await saveTrainingData( 'portswigger', params.labName, params.vulnerabilityType, params.labUrl || '', payload.payload || payload, solution.successPattern || 'success', solution.failurePattern || 'error', { solution, labUrl: params.labUrl }, solution.score || 7 ); results.push(id); } return formatToolResult(true, { imported: results.length, ids: results, }); } catch (error: any) { return formatToolResult(false, null, error.message); } }
  • Input schema defining the parameters for the tool: labName, labUrl (opt), vulnerabilityType, and solution object.
    description: 'Import training data from PortSwigger Academy lab solution', inputSchema: { type: 'object', properties: { labName: { type: 'string', description: 'Name of the PortSwigger lab' }, labUrl: { type: 'string', description: 'URL of the lab' }, vulnerabilityType: { type: 'string', description: 'Type of vulnerability' }, solution: { type: 'object', description: 'Solution data with payloads and steps' }, }, required: ['labName', 'vulnerabilityType', 'solution'], }, }, async (params: any): Promise<ToolResult> => {
  • The server.tool call that registers the 'training.import_portswigger' tool with its schema and handler function.
    'training.import_portswigger', { description: 'Import training data from PortSwigger Academy lab solution', inputSchema: { type: 'object', properties: { labName: { type: 'string', description: 'Name of the PortSwigger lab' }, labUrl: { type: 'string', description: 'URL of the lab' }, vulnerabilityType: { type: 'string', description: 'Type of vulnerability' }, solution: { type: 'object', description: 'Solution data with payloads and steps' }, }, required: ['labName', 'vulnerabilityType', 'solution'], }, }, async (params: any): Promise<ToolResult> => { try { const solution = params.solution; const payloads = solution.payloads || []; const results: any[] = []; for (const payload of payloads) { const id = await saveTrainingData( 'portswigger', params.labName, params.vulnerabilityType, params.labUrl || '', payload.payload || payload, solution.successPattern || 'success', solution.failurePattern || 'error', { solution, labUrl: params.labUrl }, solution.score || 7 ); results.push(id); } return formatToolResult(true, { imported: results.length, ids: results, }); } catch (error: any) { return formatToolResult(false, null, error.message); } } );

Latest Blog Posts

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/telmon95/VulneraMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server