search
Search across Zoho Projects portal or specific projects to find tasks, issues, milestones, forums, and events using keywords and filters.
Instructions
Search across portal or project
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| search_term | Yes | Search term/query | |
| project_id | No | Project ID (optional for portal-level search) | |
| module | No | Module to search in | |
| page | No | Page number | |
| per_page | No | Items per page |
Implementation Reference
- src/index.ts:868-877 (handler)The handler function that executes the 'search' tool. It destructures parameters, builds the appropriate Zoho API search endpoint (project-specific or portal-wide), calls makeRequest to fetch results, and returns the JSON-formatted response as MCP content.
private async search(params: any) { const { search_term, project_id, module = "all", page = 1, per_page = 10 } = params; const endpoint = project_id ? `/portal/${this.config.portalId}/projects/${project_id}/search?search_term=${encodeURIComponent(search_term)}&module=${module}&page=${page}&per_page=${per_page}` : `/portal/${this.config.portalId}/search?search_term=${encodeURIComponent(search_term)}&module=${module}&status=active&page=${page}&per_page=${per_page}`; const data = await this.makeRequest(endpoint); return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }], }; } - src/index.ts:492-523 (schema)The input schema defining parameters for the 'search' tool: search_term (required), project_id (optional), module (enum), page, per_page.
inputSchema: { type: "object", properties: { search_term: { type: "string", description: "Search term/query", }, project_id: { type: "string", description: "Project ID (optional for portal-level search)", }, module: { type: "string", description: "Module to search in", enum: [ "all", "projects", "tasks", "issues", "milestones", "forums", "events", ], }, page: { type: "number", description: "Page number", default: 1 }, per_page: { type: "number", description: "Items per page", default: 10, }, }, required: ["search_term"], - src/index.ts:489-525 (registration)The tool registration object in the listTools response, specifying name 'search', description, and inputSchema.
{ name: "search", description: "Search across portal or project", inputSchema: { type: "object", properties: { search_term: { type: "string", description: "Search term/query", }, project_id: { type: "string", description: "Project ID (optional for portal-level search)", }, module: { type: "string", description: "Module to search in", enum: [ "all", "projects", "tasks", "issues", "milestones", "forums", "events", ], }, page: { type: "number", description: "Page number", default: 1 }, per_page: { type: "number", description: "Items per page", default: 10, }, }, required: ["search_term"], }, }, - src/index.ts:600-602 (registration)The dispatch case in the CallToolRequest handler that routes 'search' tool calls to the search handler function.
case "search": return await this.search(params);