recruitcrm-mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # Recruit CRM MCP Server
2
+
3
+ Local `stdio` MCP server for Recruit CRM's Public API.
4
+
5
+ Repository: `https://github.com/saurav-rcrm/mcp-recruitcrm`
6
+
7
+ ## What It Does
8
+
9
+ This server exposes compact Recruit CRM search and lookup tools for MCP clients.
10
+
11
+ ## Tools
12
+
13
+ | Tool | Description |
14
+ | --- | --- |
15
+ | `search_candidates` | Search candidates and return compact summaries for large result sets. Returns `slug`, which can be used for candidate detail lookup or Recruit CRM app links. |
16
+ | `search_jobs` | Search jobs and return compact summaries for large result sets. Returns job, company, and contact slugs for Recruit CRM app links. |
17
+ | `search_companies` | Search companies and return compact summaries for large result sets. Returns company slug and related contact slugs for Recruit CRM app links. |
18
+ | `search_tasks` | Search tasks and return compact task summaries with related entity context. Returns `related_to` and `related_to_type` for related entity links. |
19
+ | `search_meetings` | Search meetings and return compact meeting summaries with scheduling metadata. Returns `related_to` and `related_to_type` for related entity links. |
20
+ | `search_notes` | Search notes and return compact note summaries with related entity context. Returns `related_to` and `related_to_type` for related entity links. |
21
+ | `search_call_logs` | Search call logs and return compact call summaries with related entity context. Returns `related_to` and `related_to_type` for related entity links. |
22
+ | `get_candidate_details` | Fetch one candidate by slug and return the raw Recruit CRM payload, which may include `resource_url`. |
23
+ | `get_job_details` | Fetch one job by slug and return the raw Recruit CRM payload, which may include `resource_url` and `application_form_url`. |
24
+ | `get_candidate_job_assignment_hiring_stage_history` | Fetch one candidate's job assignment hiring stage history by slug and return compact entries with job, company, stage, remark, and update metadata. |
25
+ | `list_candidate_custom_fields` | List curated searchable candidate custom field metadata. |
26
+ | `get_candidate_custom_field_details` | Fetch curated details for one candidate custom field, including full option values when relevant. |
27
+
28
+ ## Open In Recruit CRM
29
+
30
+ Current live Recruit CRM `resource_url` values use the app path pattern `https://app.recruitcrm.io/<entity>/<slug>`.
31
+
32
+ | Entity | App Link Pattern | Source Field In MCP Output |
33
+ | --- | --- | --- |
34
+ | Candidate | `https://app.recruitcrm.io/candidate/{slug}` | `search_candidates.slug` or `get_candidate_details.slug` |
35
+ | Company | `https://app.recruitcrm.io/company/{slug}` | `search_companies.slug`, `search_jobs.company_slug`, activity search `related_to` when `related_to_type` is `company`, or `get_candidate_job_assignment_hiring_stage_history.history[].company_slug` |
36
+ | Contact | `https://app.recruitcrm.io/contact/{slug}` | `search_companies.contact_slugs[]`, `search_jobs.contact_slug`, or activity search `related_to` when `related_to_type` is `contact` |
37
+ | Job | `https://app.recruitcrm.io/job/{slug}` | `search_jobs.slug`, `get_job_details.slug`, activity search `related_to` when `related_to_type` is `job`, or `get_candidate_job_assignment_hiring_stage_history.history[].job_slug` |
38
+ | Deal | `https://app.recruitcrm.io/deal/{slug}` | activity search `related_to` when `related_to_type` is `deal` |
39
+
40
+ ## Required Environment Variable
41
+
42
+ `RECRUITCRM_API_TOKEN`
43
+
44
+ Optional:
45
+
46
+ - `RECRUITCRM_BASE_URL` default: `https://api.recruitcrm.io/v1`
47
+ - `RECRUITCRM_TIMEOUT_MS` default: `10000`
48
+ - `RECRUITCRM_DEBUG_SCHEMA_ERRORS` default: `false`
49
+
50
+ ## Install And Run
51
+
52
+ Run directly from GitHub with `npx`:
53
+
54
+ ```bash
55
+ npx -y github:saurav-rcrm/mcp-recruitcrm
56
+ ```
57
+
58
+ ## MCP Config Example
59
+
60
+ ```json
61
+ {
62
+ "mcpServers": {
63
+ "recruitcrm": {
64
+ "command": "npx",
65
+ "args": ["-y", "github:saurav-rcrm/mcp-recruitcrm"],
66
+ "env": {
67
+ "RECRUITCRM_API_TOKEN": "<your-api-token>"
68
+ }
69
+ }
70
+ }
71
+ }
72
+ ```
73
+
74
+ ## Local Development
75
+
76
+ ```bash
77
+ npm install
78
+ npm run build
79
+ npm test
80
+ ```
81
+
82
+ ## Privacy And Security
83
+
84
+ - Runs locally on the user's machine over `stdio`
85
+ - No live deployment required
86
+ - Search results exclude email and phone by default
87
+ - `search_companies` excludes custom fields, social links, logos, `resource_url`, last-meeting metadata, and other large raw fields not needed for compact search output
88
+ - `search_jobs` excludes contact emails, phone numbers, and large nested arrays or objects such as job questions, custom fields, collaborator payloads, and feed metadata
89
+ - `search_tasks` exposes only a compact `related` identity object from the nested `related` payload and excludes the rest of that payload plus associated entity and collaborator arrays
90
+ - `search_meetings` exposes only a compact `related` identity object from the nested `related` payload and excludes the rest of that payload plus attendee, associated entity, and collaborator arrays
91
+ - `search_notes` exposes only a compact `related` identity object from the nested `related` payload and excludes the rest of that payload plus associated entity and collaborator arrays
92
+ - `search_call_logs` exposes only a compact `related` identity object from the nested `related` payload and excludes the rest of that payload plus associated entity and collaborator arrays
93
+ - `search_tasks` treats `created_*` as task created-on range filters, `starting_*` as task due-date range filters, and `updated_*` as task updated-on range filters
94
+ - `search_meetings` treats `created_*` as meeting created-on range filters, `starting_*` as meeting start date/time range filters, and `updated_*` as meeting updated-on range filters
95
+ - `search_notes` treats `added_*` as note added-on range filters and `updated_*` as note updated-on range filters
96
+ - `search_call_logs` treats `starting_*` as call started-on range filters and `updated_*` as call log updated-on range filters
97
+ - `search_call_logs` does not support `related_to_type=job` or `related_to_type=deal`; Recruit CRM rejects those filters upstream
98
+ - API tokens are read from environment variables only
99
+
100
+ ## Custom Field Flow
101
+
102
+ Ask the client to resolve a custom field first, then search with its `field_id`. Example: find `Tech Stack`, get `field_id: 34`, then call `search_candidates` with `custom_fields`.
103
+
104
+ `supported_filter_types` and `filter_value_required_for` are guidance for the model. The MCP server no longer blocks valid-looking searches locally based on the hardcoded field-type matrix, except when a referenced `field_id` does not exist.
@@ -0,0 +1,7 @@
1
+ export type AppConfig = {
2
+ apiToken: string;
3
+ baseUrl: string;
4
+ timeoutMs: number;
5
+ debugSchemaErrors: boolean;
6
+ };
7
+ export declare function loadConfig(env?: NodeJS.ProcessEnv): AppConfig;
package/dist/config.js ADDED
@@ -0,0 +1,41 @@
1
+ import * as z from "zod/v4";
2
+ const DEFAULT_BASE_URL = "https://api.recruitcrm.io/v1";
3
+ const DEFAULT_TIMEOUT_MS = 10_000;
4
+ const envBooleanSchema = z
5
+ .preprocess((value) => (typeof value === "string" ? value.trim().toLowerCase() : value), z.union([z.literal("true"), z.literal("false"), z.literal("1"), z.literal("0")]).optional())
6
+ .transform((value) => value === "true" || value === "1");
7
+ const envSchema = z.object({
8
+ RECRUITCRM_API_TOKEN: z.string().trim().min(1, "RECRUITCRM_API_TOKEN is required."),
9
+ RECRUITCRM_BASE_URL: z.string().trim().url().optional(),
10
+ RECRUITCRM_TIMEOUT_MS: z
11
+ .string()
12
+ .trim()
13
+ .optional()
14
+ .transform((value) => {
15
+ if (value === undefined || value === "") {
16
+ return DEFAULT_TIMEOUT_MS;
17
+ }
18
+ const parsed = Number(value);
19
+ if (!Number.isFinite(parsed) || parsed <= 0) {
20
+ throw new Error("RECRUITCRM_TIMEOUT_MS must be a positive integer.");
21
+ }
22
+ return Math.floor(parsed);
23
+ }),
24
+ RECRUITCRM_DEBUG_SCHEMA_ERRORS: envBooleanSchema,
25
+ });
26
+ export function loadConfig(env = process.env) {
27
+ const parsed = envSchema.safeParse(env);
28
+ if (!parsed.success) {
29
+ throw new Error(parsed.error.issues[0]?.message ?? "Invalid environment configuration.");
30
+ }
31
+ return {
32
+ apiToken: parsed.data.RECRUITCRM_API_TOKEN,
33
+ baseUrl: stripTrailingSlash(parsed.data.RECRUITCRM_BASE_URL ?? DEFAULT_BASE_URL),
34
+ timeoutMs: parsed.data.RECRUITCRM_TIMEOUT_MS,
35
+ debugSchemaErrors: parsed.data.RECRUITCRM_DEBUG_SCHEMA_ERRORS,
36
+ };
37
+ }
38
+ function stripTrailingSlash(value) {
39
+ return value.replace(/\/+$/, "");
40
+ }
41
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;AACxD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,gBAAgB,GAAG,CAAC;KACvB,UAAU,CACT,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAC3E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC5F;KACA,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC;AAE3D,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC;IACnF,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACvD,qBAAqB,EAAE,CAAC;SACrB,MAAM,EAAE;SACR,IAAI,EAAE;SACN,QAAQ,EAAE;SACV,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QACnB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC;IACJ,8BAA8B,EAAE,gBAAgB;CACjD,CAAC,CAAC;AASH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,oCAAoC,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB;QAC1C,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,gBAAgB,CAAC;QAChF,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB;QAC5C,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,8BAA8B;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare class RecruitCrmApiError extends Error {
2
+ readonly statusCode?: number | undefined;
3
+ readonly cause?: unknown | undefined;
4
+ constructor(message: string, statusCode?: number | undefined, cause?: unknown | undefined);
5
+ }
6
+ export declare function mapFetchError(error: unknown): RecruitCrmApiError;
7
+ export declare function mapHttpError(statusCode: number): RecruitCrmApiError;
8
+ export declare function invalidApiResponse(message?: string): RecruitCrmApiError;
package/dist/errors.js ADDED
@@ -0,0 +1,38 @@
1
+ export class RecruitCrmApiError extends Error {
2
+ statusCode;
3
+ cause;
4
+ constructor(message, statusCode, cause) {
5
+ super(message);
6
+ this.statusCode = statusCode;
7
+ this.cause = cause;
8
+ this.name = "RecruitCrmApiError";
9
+ }
10
+ }
11
+ export function mapFetchError(error) {
12
+ if (error instanceof RecruitCrmApiError) {
13
+ return error;
14
+ }
15
+ if (error instanceof Error && error.name === "AbortError") {
16
+ return new RecruitCrmApiError("Recruit CRM API request timed out.", undefined, error);
17
+ }
18
+ return new RecruitCrmApiError("Unable to reach the Recruit CRM API.", undefined, error);
19
+ }
20
+ export function mapHttpError(statusCode) {
21
+ if (statusCode === 401 || statusCode === 403) {
22
+ return new RecruitCrmApiError("Recruit CRM API authentication failed.", statusCode);
23
+ }
24
+ if (statusCode === 404) {
25
+ return new RecruitCrmApiError("Candidate not found.", statusCode);
26
+ }
27
+ if (statusCode === 429) {
28
+ return new RecruitCrmApiError("Recruit CRM API rate limit exceeded.", statusCode);
29
+ }
30
+ if (statusCode >= 500) {
31
+ return new RecruitCrmApiError("Recruit CRM API is unavailable right now.", statusCode);
32
+ }
33
+ return new RecruitCrmApiError("Recruit CRM API request failed.", statusCode);
34
+ }
35
+ export function invalidApiResponse(message = "Recruit CRM API returned an invalid response.") {
36
+ return new RecruitCrmApiError(message);
37
+ }
38
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGhC;IACA;IAHX,YACE,OAAe,EACN,UAAmB,EACnB,KAAe;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,eAAU,GAAV,UAAU,CAAS;QACnB,UAAK,GAAL,KAAK,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1D,OAAO,IAAI,kBAAkB,CAAC,oCAAoC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,IAAI,kBAAkB,CAAC,sCAAsC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO,IAAI,kBAAkB,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,IAAI,kBAAkB,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO,IAAI,kBAAkB,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,IAAI,kBAAkB,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAO,GAAG,+CAA+C;IAC1F,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { createRecruitCrmServer } from "./server.js";
4
+ async function main() {
5
+ const server = createRecruitCrmServer();
6
+ const transport = new StdioServerTransport();
7
+ await server.connect(transport);
8
+ console.error("Recruit CRM MCP Server running on stdio");
9
+ }
10
+ main().catch((error) => {
11
+ const message = error instanceof Error ? error.message : "Unknown startup error.";
12
+ console.error(`Recruit CRM MCP Server failed to start: ${message}`);
13
+ process.exit(1);
14
+ });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC3D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;IAClF,OAAO,CAAC,KAAK,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { AppConfig } from "../config.js";
2
+ import { type HttpTransport } from "./http.js";
3
+ import type { RecruitCrmCandidateCustomField, RecruitCrmCandidateJobAssignmentHiringStageHistoryResponse, RecruitCrmCallLogSearchResponse, CandidateDetail, JobDetail, RecruitCrmCompanySearchResponse, RecruitCrmJobSearchResponse, RecruitCrmMeetingSearchResponse, RecruitCrmNoteSearchResponse, RecruitCrmSearchResponse, RecruitCrmTaskSearchResponse, SearchCandidatesInput, SearchCallLogsInput, SearchCompaniesInput, SearchJobsInput, SearchMeetingsInput, SearchNotesInput, SearchTasksInput } from "./types.js";
4
+ export declare class RecruitCrmClient {
5
+ #private;
6
+ constructor(config: AppConfig, transport?: HttpTransport);
7
+ searchCandidates(filters: SearchCandidatesInput): Promise<RecruitCrmSearchResponse>;
8
+ searchJobs(filters: SearchJobsInput): Promise<RecruitCrmJobSearchResponse>;
9
+ searchCompanies(filters: SearchCompaniesInput): Promise<RecruitCrmCompanySearchResponse>;
10
+ searchTasks(filters: SearchTasksInput): Promise<RecruitCrmTaskSearchResponse>;
11
+ searchMeetings(filters: SearchMeetingsInput): Promise<RecruitCrmMeetingSearchResponse>;
12
+ searchNotes(filters: SearchNotesInput): Promise<RecruitCrmNoteSearchResponse>;
13
+ searchCallLogs(filters: SearchCallLogsInput): Promise<RecruitCrmCallLogSearchResponse>;
14
+ getCandidateJobAssignmentHiringStageHistory(candidateSlug: string): Promise<RecruitCrmCandidateJobAssignmentHiringStageHistoryResponse>;
15
+ getCandidateDetails(candidateSlug: string): Promise<CandidateDetail>;
16
+ getJobDetails(jobSlug: string): Promise<JobDetail>;
17
+ getCandidateCustomFields(): Promise<RecruitCrmCandidateCustomField[]>;
18
+ }
19
+ export type GetRequestOptions = {
20
+ query?: URLSearchParams;
21
+ jsonBody?: {
22
+ custom_fields: SearchCandidatesCustomFieldsBody;
23
+ };
24
+ };
25
+ type SearchCandidatesCustomFieldsBody = Array<{
26
+ field_id: number;
27
+ filter_type: string;
28
+ filter_value?: string | number;
29
+ }>;
30
+ export declare function buildSearchCandidatesRequest(filters: SearchCandidatesInput): GetRequestOptions;
31
+ export declare function buildSearchJobsRequest(filters: SearchJobsInput): GetRequestOptions;
32
+ export declare function buildSearchCompaniesRequest(filters: SearchCompaniesInput): GetRequestOptions;
33
+ export declare function buildSearchTasksRequest(filters: SearchTasksInput): GetRequestOptions;
34
+ export declare function buildSearchMeetingsRequest(filters: SearchMeetingsInput): GetRequestOptions;
35
+ export declare function buildSearchNotesRequest(filters: SearchNotesInput): GetRequestOptions;
36
+ export declare function buildSearchCallLogsRequest(filters: SearchCallLogsInput): GetRequestOptions;
37
+ export {};