recon.dns
Resolve DNS records for domains to identify potential security vulnerabilities during reconnaissance phases of bug bounty hunting.
Instructions
Resolve DNS records for a domain or subdomain
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to resolve | |
| recordType | No | DNS record type (A, AAAA, CNAME, MX, TXT) | A |
Implementation Reference
- src/tools/recon.ts:183-204 (handler)Handler function that checks for 'dig' command availability, runs 'dig +short domain recordType' to resolve DNS records, parses the output, and returns formatted results.async ({ domain, recordType = 'A' }: any): Promise<ToolResult> => { try { const exists = await checkCommandExists('dig'); if (!exists) { return formatToolResult(false, null, 'dig command not found'); } const result = await runCommand('dig', ['+short', domain, recordType]); const records = result.stdout .split('\n') .filter((s) => s.trim().length > 0); return formatToolResult(true, { domain, recordType, records, raw: result.stdout, }); } catch (error: any) { return formatToolResult(false, null, error.message); } }
- src/tools/recon.ts:168-181 (schema)Input schema defining 'domain' as required string and optional 'recordType' (default 'A').{ description: 'Resolve DNS records for a domain or subdomain', inputSchema: { type: 'object', properties: { domain: { type: 'string', description: 'Domain to resolve' }, recordType: { type: 'string', description: 'DNS record type (A, AAAA, CNAME, MX, TXT)', default: 'A', }, }, required: ['domain'], },
- src/tools/recon.ts:166-205 (registration)Registers the 'recon.dns' tool on the MCP server with its schema and handler function.server.tool( 'recon.dns', { description: 'Resolve DNS records for a domain or subdomain', inputSchema: { type: 'object', properties: { domain: { type: 'string', description: 'Domain to resolve' }, recordType: { type: 'string', description: 'DNS record type (A, AAAA, CNAME, MX, TXT)', default: 'A', }, }, required: ['domain'], }, }, async ({ domain, recordType = 'A' }: any): Promise<ToolResult> => { try { const exists = await checkCommandExists('dig'); if (!exists) { return formatToolResult(false, null, 'dig command not found'); } const result = await runCommand('dig', ['+short', domain, recordType]); const records = result.stdout .split('\n') .filter((s) => s.trim().length > 0); return formatToolResult(true, { domain, recordType, records, raw: result.stdout, }); } catch (error: any) { return formatToolResult(false, null, error.message); } } );