flexible_search
Execute FlexibleSearch queries to retrieve data from SAP Commerce Cloud (Hybris) databases using custom search syntax for product management, order analysis, and system administration.
Instructions
Execute a FlexibleSearch query against the Hybris database. Use FlexibleSearch syntax.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | FlexibleSearch query (e.g., "SELECT {pk}, {code} FROM {Product}") | |
| maxCount | No | Maximum number of results (default: 100) |
Implementation Reference
- src/hybris-client.ts:386-402 (handler)Core handler function that executes the FlexibleSearch query by posting to the Hybris HAC console endpoint.async executeFlexibleSearch(query: string, maxCount = 100): Promise<FlexibleSearchResult> { const formData = new URLSearchParams({ flexibleSearchQuery: query, maxCount: maxCount.toString(), }); return this.hacRequest<FlexibleSearchResult>( `${this.hacPrefix}/console/flexsearch/execute`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: formData, } ); }
- src/hybris-client.ts:73-76 (schema)Type definition for the output of a FlexibleSearch query, including results array and count.export interface FlexibleSearchResult { results: Record<string, unknown>[]; count: number; }
- src/index.ts:129-146 (registration)MCP tool registration defining the name, description, and input schema for flexible_search.{ name: 'flexible_search', description: 'Execute a FlexibleSearch query against the Hybris database. Use FlexibleSearch syntax.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'FlexibleSearch query (e.g., "SELECT {pk}, {code} FROM {Product}")', }, maxCount: { type: 'number', description: 'Maximum number of results (default: 100)', }, }, required: ['query'], }, },
- src/index.ts:324-329 (handler)MCP server dispatch handler that extracts arguments and calls the flexible_search implementation.case 'flexible_search': result = await hybrisClient.executeFlexibleSearch( args?.query as string, args?.maxCount as number ); break;