search
Search across Zoho Projects to find tasks, issues, milestones, forums, events, and project information using specific search terms and filters.
Instructions
Search across portal or project
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Module to search in | |
| page | No | Page number | |
| per_page | No | Items per page | |
| project_id | No | Project ID (optional for portal-level search) | |
| search_term | Yes | Search term/query |
Implementation Reference
- src/index.ts:868-877 (handler)The handler function that executes the 'search' tool logic: parses input params, constructs Zoho API search endpoint (portal or project level), fetches data via makeRequest, and returns formatted JSON response.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:489-525 (schema)JSON schema defining the input parameters for the 'search' tool, including required search_term and optional filters.{ 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:599-601 (registration)Registration/dispatch in the CallToolRequestSchema switch statement that routes 'search' tool calls to the handler function.// Search case "search": return await this.search(params);
- src/http-server.ts:870-880 (handler)Identical handler function in the HTTP server variant (src/http-server.ts).// Search 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/http-server.ts:491-528 (schema)Identical input schema in the HTTP server variant.// Search { 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"], }, },