pgp_search
Search PGP keyservers to find public keys associated with email addresses or names for security research and verification purposes.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Email or name to search for in PGP keyservers |
Implementation Reference
- src/index.ts:720-729 (handler)The `pgp_search` tool is registered in `src/index.ts`. It invokes the `corpClient.searchPgp` method.
server.tool( "pgp_search", { query: z.string().describe("Email or name to search for in PGP keyservers") }, async ({ query }) => { const result = await corpClient.searchPgp(query); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; } ); - src/tools/corporate.ts:28-41 (handler)The actual implementation of `searchPgp` is in `CorporateApiClient`, which queries the Ubuntu keyserver.
async searchPgp(query: string): Promise<any> { try { const response = await fetch(`https://keyserver.ubuntu.com/pks/lookup?search=${encodeURIComponent(query)}&op=index&fingerprint=on&options=mr`); const text = await response.text(); // Machine-readable format (mr) is hard to parse without a lib, but we can return raw text for the user return { query, rawResult: text, info: "Public PGP keys found for this identity." }; } catch (error) { throw new McpError(ErrorCode.InternalError, `PGP Search error: ${(error as Error).message}`); } }