Skip to main content
Glama
by pangeacyber
domain-intel.ts2.79 kB
import type { FastMCP } from 'fastmcp'; import { DomainIntelService, PangeaConfig } from 'pangea-node-sdk'; import { z } from 'zod'; import { aiGuard } from '../guard.js'; import type { FastMCPSessionAuth, ServerContext } from '../types.js'; export function registerDomainIntelTools< T extends FastMCPSessionAuth = FastMCPSessionAuth, >({ server, context }: { server: FastMCP<T>; context: ServerContext }) { const lookupDomainReputationParameters = z.object({ domains: z .array(z.string()) .min(1) .max(100) .describe('The domains to be looked up'), }); server.addTool({ name: 'lookup_domain_reputation', description: 'Look up reputation score(s) for one or more domains.', parameters: lookupDomainReputationParameters, execute: aiGuard<T, typeof lookupDomainReputationParameters>( context, async ({ domains }) => { const domainIntel = new DomainIntelService( context.apiToken, new PangeaConfig({ domain: 'aws.us.pangea.cloud' }) ); const response = await domainIntel.reputationBulk(domains); if (!response.success) { return { content: [ { type: 'text', text: 'Failed to retrieve reputation data', }, ], }; } const formattedReputation = Object.entries(response.result.data).map( ([domain, reputation]) => `${domain}: ${reputation.verdict} (score ${reputation.score}) (categories ${reputation.category.join(', ')})` ); return { content: [ { type: 'text', text: `Reputation data:\n\n${formattedReputation.join('\n')}`, }, ], }; } ), }); const whoisParameters = z.object({ domain: z.string().describe('The domain to query'), }); server.addTool({ name: 'whois', description: "Retrieve WHOIS (an Internet resource's registered users or assignees) for a domain.", parameters: whoisParameters, execute: aiGuard<T, typeof whoisParameters>(context, async ({ domain }) => { const domainIntel = new DomainIntelService( context.apiToken, new PangeaConfig({ domain: 'aws.us.pangea.cloud' }) ); const response = await domainIntel.whoIs(domain); if (!response.success) { return { content: [ { type: 'text', text: 'Failed to query domain whois', }, ], }; } return { content: [ { type: 'text', text: `Domain data:\n\n${JSON.stringify(response.result.data, null, 2)}`, }, ], }; }), }); }

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/pangeacyber/pangea-mcp-server'

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