@sinch/mcp
Version:
Sinch MCP server
52 lines • 3.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.searchAvailableNumbersHandler = exports.registerSearchAvailableNumbers = void 0;
const zod_1 = require("zod");
const types_1 = require("../../types");
const utils_1 = require("../../utils");
const numbers_tools_helper_1 = require("./utils/numbers-tools-helper");
const numbers_service_helper_1 = require("./utils/numbers-service-helper");
const TOOL_KEY = 'searchForAvailableNumbers';
const TOOL_NAME = (0, numbers_tools_helper_1.getToolName)(TOOL_KEY);
const registerSearchAvailableNumbers = (server, tags) => {
if (!(0, utils_1.matchesAnyTag)(tags, numbers_tools_helper_1.toolsConfig[TOOL_KEY].tags))
return;
server.tool(TOOL_NAME, 'Search for available phone numbers that are available for you to activate. You can filter by any property on the available number resource.', {
regionCode: zod_1.z.string().describe('Region code to filter by. ISO 3166-1 alpha-2 country code of the phone number. Example: US, GB or SE.'),
type: zod_1.z.enum(['MOBILE', 'LOCAL', 'TOLL_FREE']).describe('Number type to filter by. Options include, MOBILE, LOCAL or TOLL_FREE.'),
searchPattern: zod_1.z.string().optional().describe('Sequence of digits to search for. If you prefer or need certain digits in sequential order, you can enter the sequence of numbers here. For example, `2020`.'),
patternPosition: zod_1.z.enum(['START', 'CONTAINS', 'END']).optional().describe('Position of the search pattern. Options include START, END or CONTAINS. If you want the search pattern to be at the beginning of the phone number, select START. If you want it at the end, select END. If you want it to be anywhere in the phone number, select CONTAINS.'),
capabilities: zod_1.z.array(zod_1.z.enum(['SMS', 'VOICE'])).optional().describe('Number capabilities to filter by SMS and/or VOICE.'),
size: zod_1.z.number().optional().describe('Maximum number of phone numbers to return.'),
}, exports.searchAvailableNumbersHandler);
};
exports.registerSearchAvailableNumbers = registerSearchAvailableNumbers;
const searchAvailableNumbersHandler = async ({ regionCode, type, searchPattern, patternPosition, capabilities, size }) => {
const maybeService = (0, numbers_service_helper_1.getNumbersService)(TOOL_NAME);
if ((0, utils_1.isPromptResponse)(maybeService)) {
return maybeService.promptResponse;
}
const numbersService = maybeService;
try {
const response = await numbersService.searchForAvailableNumbers({
regionCode,
type,
'numberPattern.pattern': searchPattern,
'numberPattern.searchPattern': patternPosition,
capabilities,
size,
});
return new types_1.PromptResponse(JSON.stringify({
success: true,
data: response.availableNumbers
})).promptResponse;
}
catch (error) {
return new types_1.PromptResponse(JSON.stringify({
success: false,
error: (error instanceof Error ? error.message : String(error))
})).promptResponse;
}
};
exports.searchAvailableNumbersHandler = searchAvailableNumbersHandler;
//# sourceMappingURL=search-for-available-numbers.js.map