UNPKG

@sinch/mcp

Version:

Sinch MCP server

49 lines 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.numberLookupHandler = exports.registerNumberLookup = void 0; const zod_1 = require("zod"); const verification_service_helper_1 = require("./utils/verification-service-helper"); const utils_1 = require("../../utils"); const types_1 = require("../../types"); const verification_tools_helper_1 = require("./utils/verification-tools-helper"); const TOOL_KEY = 'numberLookup'; const TOOL_NAME = (0, verification_tools_helper_1.getToolName)(TOOL_KEY); const registerNumberLookup = (server, tags) => { if (!(0, verification_tools_helper_1.shouldRegisterTool)(TOOL_KEY, tags)) return; server.tool(TOOL_NAME, 'With quick and easy access to Number Lookup, you can enhance your communications and keep your database as clean as a whistle. Number Lookup checks against first-party numbering sources and provides real-time feedback. Test numbers to ensure your recipients are ready and waiting to receive your messages!', { phoneNumber: zod_1.z.string().describe('Phone number in E.164 format to look up'), }, exports.numberLookupHandler); }; exports.registerNumberLookup = registerNumberLookup; const numberLookupHandler = async ({ phoneNumber }) => { const maybeCredentials = (0, verification_service_helper_1.getVerificationCredentials)(); if ((0, utils_1.isPromptResponse)(maybeCredentials)) { return maybeCredentials.promptResponse; } const credentials = maybeCredentials; // TODO: use the SinchClient once it supports the Number Lookup API to use the signed request instead of basic authentication const resp = await fetch('https://number-lookup.api.sinch.com/v1/lookups', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: 'Basic ' + Buffer.from(`${credentials.applicationKey}:${credentials.applicationSecret}`).toString('base64'), 'User-Agent': (0, utils_1.formatUserAgent)(TOOL_NAME, credentials.applicationKey), }, body: JSON.stringify({ number: phoneNumber, features: ['LineType'] }) }); if (!resp.ok) { const errorText = await resp.text(); return new types_1.PromptResponse(`Failed to look up number ${phoneNumber}. Status: ${resp.status}, Error: ${errorText}`).promptResponse; } const data = await resp.json(); if (!data.line || !data.line.carrier || !data.line.type || !data.countryCode || !data.number) { return new types_1.PromptResponse(`Number lookup for ${phoneNumber} returned incomplete data.`).promptResponse; } return new types_1.PromptResponse(`Line type features: carrier ${data.line.carrier}, type: ${data.line.type}), mobileCountryCode: ${data.line.mobileCountryCode}, mobileNetworkCode: ${data.line.mobileNetworkCode}, countryCode: ${data.countryCode}, number: ${data.number}, traceId: ${data.traceId}`).promptResponse; }; exports.numberLookupHandler = numberLookupHandler; //# sourceMappingURL=number-lookup.js.map