list-domains
Discover available knowledge domains and their document counts to identify relevant content areas for search and retrieval operations.
Instructions
List all available domains and their document counts.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/index.ts:358-381 (handler)The main handler for the 'list-domains' tool call. It invokes repository.listDomains(), formats the results into a markdown list, and returns as TextContent.
case 'list-domains': { console.error(`[DEBUG] list-domains called`); const domains = repository.listDomains(); console.error(`[DEBUG] domains found: ${JSON.stringify(domains)}`); if (domains.length === 0) { const content: TextContent[] = [{ type: 'text', text: `## Available Domains\n\nNo domains found. Check if documents are loaded properly.` }]; return { content }; } const domainList = domains .map(d => `- ${d.name}: ${d.documentCount} documents`) .join('\n'); const content: TextContent[] = [{ type: 'text', text: `## Available Domains\n\n${domainList}` }]; return { content }; } - Core helper method in DocumentRepository that iterates over all documents, groups by domainName (default 'general'), and returns array of {name, documentCount}.
listDomains(): Array<{ name: string; documentCount: number }> { this.ensureInitialized(); console.error(`[DEBUG] listDomains called on instance ${this.instanceId}, documents.size=${this.documents.size}`); const domainCounts = new Map<string, number>(); this.documents.forEach(doc => { const domain = doc.domainName || 'general'; console.error(`[DEBUG] Processing document: ID=${doc.id}, domain=${domain}`); domainCounts.set(domain, (domainCounts.get(domain) || 0) + 1); }); console.error(`[DEBUG] domainCounts Map: ${JSON.stringify([...domainCounts.entries()])}`); const result = Array.from(domainCounts.entries()).map(([name, count]) => ({ name, documentCount: count })); console.error(`[DEBUG] listDomains result: ${JSON.stringify(result)}`); return result; } - src/index.ts:253-260 (registration)Tool registration in ListToolsRequestSchema handler, including name, description, and empty input schema (no parameters required).
{ name: 'list-domains', description: 'List all available domains and their document counts.', inputSchema: { type: 'object', properties: {} } }, - src/index.ts:256-259 (schema)Input schema for 'list-domains' tool: empty object (no input parameters).
inputSchema: { type: 'object', properties: {} }