get_akciz_codes
Retrieve excise codes from the Georgian tax system for waybill processing. Filter results by search text to find specific codes.
Instructions
Get akciz (excise) codes from RS.ge system. Optionally filter by search text.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optional search text to filter results |
Implementation Reference
- src/tools/get-dictionaries.ts:123-165 (handler)The core handler function that implements the get_akciz_codes tool logic: validates input, calls the SOAP client, formats results (limited to 20), handles errors.export async function executeGetAkcizCodes( client: RsWaybillSoapClient, input: unknown ): Promise<string> { const logger = getLogger(); try { const validated = getAkcizCodesInputSchema.parse(input || {}); logger.info('Getting akciz codes', { search: validated.search }); const codes = await client.getAkcizCodes(validated.search); if (codes.length === 0) { return validated.search ? `No akciz codes found matching "${validated.search}"` : 'No akciz codes found'; } let response = `Akciz Codes (${codes.length})`; if (validated.search) { response += ` matching "${validated.search}"`; } response += ':\n\n'; codes.slice(0, 20).forEach((code: any) => { response += `- ${code.CODE}: ${code.NAME}`; if (code.DESCRIPTION) { response += ` - ${code.DESCRIPTION}`; } response += '\n'; }); if (codes.length > 20) { response += `\n... and ${codes.length - 20} more codes`; } return response; } catch (error) { logger.error('Error in get_akciz_codes tool', { error }); return formatErrorForUser(error); } }
- Zod schema for input validation in the get_akciz_codes handler.export const getAkcizCodesInputSchema = z.object({ search: z.string() .optional() .describe('Optional search text to filter akciz codes'), });
- src/index.ts:129-131 (registration)Registers the tool object in MCP listTools response if feature flag enabled.if (features.getAkcizCodes) { tools.push(getAkcizCodesTool); }
- src/index.ts:177-182 (registration)Dispatches execution in MCP callTool handler, checks feature flag.case 'get_akciz_codes': if (!features.getAkcizCodes) { throw new Error('get_akciz_codes tool is disabled'); } result = await executeGetAkcizCodes(soapClient, args); break;
- src/tools/get-dictionaries.ts:107-121 (registration)Defines the MCP tool object including name, description, and input schema.export const getAkcizCodesTool = { name: 'get_akciz_codes', description: 'Get akciz (excise) codes from RS.ge system. Optionally filter by search text.', inputSchema: { type: 'object' as const, properties: { search: { type: 'string', description: 'Optional search text to filter results', }, }, required: [], }, };