search_all
Search across local, GitHub, and community collections for personas, skills, templates, and other elements with unified results, duplicate detection, and version comparison.
Instructions
Search across all available sources (local portfolio, GitHub portfolio, and collection) for elements. This provides unified search with duplicate detection and version comparison across all three tiers of the DollhouseMCP ecosystem.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. Can match element names, keywords, tags, triggers, or descriptions across all sources. | |
| sources | No | Sources to search. Defaults to ['local', 'github']. Include 'collection' to search the community collection. | |
| type | No | Limit search to specific element type. If not specified, searches all types. | |
| page | No | Page number for pagination (1-based). Defaults to 1. | |
| page_size | No | Number of results per page. Defaults to 20. | |
| sort_by | No | Sort results by criteria. Defaults to 'relevance'. |
Implementation Reference
- The handler function that executes the 'search_all' tool logic by mapping input arguments to the server's searchAll method.handler: (args: SearchAllArgs) => server.searchAll({ query: args.query, sources: args.sources, elementType: args.type as any, page: args.page, pageSize: args.page_size, sortBy: args.sort_by as any })
- The input schema defining parameters, types, descriptions, and requirements for the 'search_all' tool.inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query. Can match element names, keywords, tags, triggers, or descriptions across all sources.", }, sources: { type: "array", items: { type: "string", enum: ["local", "github", "collection"] }, description: "Sources to search. Defaults to ['local', 'github']. Include 'collection' to search the community collection.", }, type: { type: "string", enum: ["personas", "skills", "templates", "agents", "memories", "ensembles"], description: "Limit search to specific element type. If not specified, searches all types.", }, page: { type: "number", description: "Page number for pagination (1-based). Defaults to 1.", }, page_size: { type: "number", description: "Number of results per page. Defaults to 20.", }, sort_by: { type: "string", enum: ["relevance", "source", "name", "version"], description: "Sort results by criteria. Defaults to 'relevance'.", }, }, required: ["query"], },
- src/server/ServerSetup.ts:69-69 (registration)The call that registers all portfolio tools, including 'search_all', into the ToolRegistry.this.toolRegistry.registerMany(getPortfolioTools(instance));
- TypeScript interface defining the argument shape for the 'search_all' handler.interface SearchAllArgs { query: string; sources?: string[]; type?: string; page?: number; page_size?: number; sort_by?: 'relevance' | 'source' | 'name' | 'version'; }
- src/server/tools/PortfolioTools.ts:232-282 (registration)The tool definition object for 'search_all' returned by getPortfolioTools for registration, including name, description, schema, and handler.{ tool: { name: "search_all", description: "Search across all available sources (local portfolio, GitHub portfolio, and collection) for elements. This provides unified search with duplicate detection and version comparison across all three tiers of the DollhouseMCP ecosystem.", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query. Can match element names, keywords, tags, triggers, or descriptions across all sources.", }, sources: { type: "array", items: { type: "string", enum: ["local", "github", "collection"] }, description: "Sources to search. Defaults to ['local', 'github']. Include 'collection' to search the community collection.", }, type: { type: "string", enum: ["personas", "skills", "templates", "agents", "memories", "ensembles"], description: "Limit search to specific element type. If not specified, searches all types.", }, page: { type: "number", description: "Page number for pagination (1-based). Defaults to 1.", }, page_size: { type: "number", description: "Number of results per page. Defaults to 20.", }, sort_by: { type: "string", enum: ["relevance", "source", "name", "version"], description: "Sort results by criteria. Defaults to 'relevance'.", }, }, required: ["query"], }, }, handler: (args: SearchAllArgs) => server.searchAll({ query: args.query, sources: args.sources, elementType: args.type as any, page: args.page, pageSize: args.page_size, sortBy: args.sort_by as any }) } ];