list_external_products
List external products for an integration using integration ID and product name filter.
Instructions
List external products for an integration. GET /integrations/{integrationId}/products. Required: integrationId, productName (sent as name query param).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| integrationId | Yes | Company integration ID (required) | |
| productName | Yes | Product name filter (required) |
Implementation Reference
- The handler function that executes the list_external_products tool logic. It parses args (integrationId, productName) using Zod, then calls integrationService.listExternalProducts to make the GET /integrations/{integrationId}/products?name={productName} API call.
async function handler(client: Client, args: Record<string, unknown> | undefined) { const parsed = schema.safeParse(args); if (!parsed.success) { return errorResult(parsed.error.errors.map((e) => e.message).join("; ")); } const { integrationId, productName } = parsed.data; return handleToolCall(() => integrationService.listExternalProducts(client, integrationId, { name: productName }) ); } - Zod input schema defining required fields: integrationId (string) and productName (string).
const schema = z.object({ integrationId: z.string().min(1, "integrationId is required"), productName: z.string().min(1, "productName is required"), }); - Tool definition object with name 'list_external_products', description, and JSON Schema input schema.
const definition = { name: "list_external_products", description: "List external products for an integration. GET /integrations/{integrationId}/products. Required: integrationId, productName (sent as name query param).", inputSchema: { type: "object" as const, properties: { integrationId: { type: "string", description: "Company integration ID (required)" }, productName: { type: "string", description: "Product name filter (required)" }, }, required: ["integrationId", "productName"], }, }; - src/tools/integrations/index.ts:16-27 (registration)Tool is registered as part of the integration tools array returned by registerIntegrationTools().
export function registerIntegrationTools(): Tool[] { return [ listIntegrationsTool, getIntegrationConfigTool, getIntegrationByKeyTool, listIntegrationsByKeyTool, listExternalInvoicesTool, listExternalProductsTool, getExternalProductTool, listOrderStatusesTool, ]; } - The service layer function that performs the actual HTTP GET request to /integrations/{integrationId}/products with optional name query parameter.
/** GET /integrations/{integrationId}/products. Optional name filter. */ export async function listExternalProducts( client: Client, integrationId: string, params?: ListExternalProductsParams ): Promise<unknown> { const search = new URLSearchParams(); if (params?.name) search.append("name", params.name); const q = search.toString(); return client.get<unknown>(`/integrations/${integrationId}/products${q ? `?${q}` : ""}`); }