semanticSearch
Enable precise content retrieval by using meaning-based search across your namespace, eliminating reliance on exact keywords. Supports hybrid and semantic search methods to enhance relevance.
Instructions
Performs semantic search across the namespace to find relevant content based on meaning rather than exact keyword matches.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | ||
| namespaceId | No | ||
| query | Yes | ||
| scoreThreshold | No | ||
| searchType | No | ||
| tenantId | No | ||
| topK | No |
Implementation Reference
- src/sourcesync.ts:562-584 (handler)Core handler implementation for semanticSearch: makes POST request to /v1/search endpoint with search parameters.public async semanticSearch({ query, topK, scoreThreshold, filter, searchType, }: Omit< SourceSyncSemanticSearchRequest, 'namespaceId' >): Promise<SourceSyncSearchResponse> { return this.client .url('/v1/search') .json({ query, namespaceId: this.namespaceId, topK, scoreThreshold, filter, searchType, } satisfies SourceSyncSemanticSearchRequest) .post() .json<SourceSyncSearchResponse>() }
- src/schemas.ts:427-439 (schema)Zod input schema for the semanticSearch tool defining parameters like query, topK, filter, etc.export const SemanticSearchSchema = z.object({ namespaceId: namespaceIdSchema.optional(), query: z.string(), topK: z.number().optional(), scoreThreshold: z.number().optional(), filter: z .object({ metadata: z.record(z.union([z.string(), z.array(z.string())])).optional(), }) .optional(), tenantId: tenantIdSchema, searchType: SearchTypeEnum.optional(), })
- src/index.ts:571-600 (registration)Registers the semanticSearch tool with the MCP server, providing schema validation and a handler that creates a SourceSync client and invokes its semanticSearch method.server.tool( 'semanticSearch', 'Performs semantic search across the namespace to find relevant content based on meaning rather than exact keyword matches.', SemanticSearchSchema.shape, async (params: any) => { return safeApiCall(async () => { const { namespaceId, query, topK, scoreThreshold, filter, tenantId, searchType, } = params // Create a client with the provided parameters const client = createClient({ namespaceId, tenantId }) // Call the semanticSearch method with the searchType (default to SEMANTIC if not provided) return await client.semanticSearch({ query, topK, scoreThreshold, filter, searchType: searchType || SourceSyncSearchType.SEMANTIC, }) }) }, )