Model Context Protocol (MCP) server for Apollo.io API integration
Recruitcrm is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Recruit CRM MCP Server
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user recruitcrm-mcp '--' npx -y recruitcrm-mcp-server
# 2 — ask your agent for something these tools do
# search_candidates, list_candidates, create_candidate and 66 more
Recruitcrm costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Recruitcrm as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user recruitcrm-mcp '--' npx -y recruitcrm-mcp-serverReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
69 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Search Recruit CRM candidates and return compact summaries designed for large result sets. ${myRecordsOwnerFilterGuidance} Returns candidate slug values that can be used with get_candidate_details or to open Recruit CRM app links like https://app.recruitcrm.io/candidate/{slug}.
No parameter schema on file.
Lists all candidates in the account, most-recently updated first. Returns compact summaries with slug values for candidate detail lookup. Use search_candidates for filtered queries.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
Lists all jobs in the account, most-recently updated first. Returns compact summaries with slug, company_slug, contact_slug, and hiring_pipeline_id. Use search_jobs for filtered queries; use hiring_pipeline_id with list_candidate_hiring_stages for job-specific stage lookup.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
Lists all companies in the account, most-recently updated first. Returns compact summaries with slug and contact_slugs values. Use search_companies for filtered queries.
No parameter schema on file.
Creates one Recruit CRM company. Requires company_name, owner_id, and created_by. Checks duplicates by company_name unless allow_duplicate=true. Resolve user IDs with list_users and custom field IDs with list_custom_fields for entity_type=companies. Returns a compact summary with the company slug.
No parameter schema on file.
Updates one existing Recruit CRM company by company_slug. Requires company_slug and updated_by. Resolve user IDs with list_users and custom field IDs with list_custom_fields for entity_type=companies. Returns a compact summary with the company slug.
No parameter schema on file.
Search Recruit CRM contacts with filters and return compact summaries for large result sets. ${myRecordsOwnerFilterGuidance} At least one real filter is required; sort_by, sort_order, page, exact_search, and include_contact_info do not count independently.
No parameter schema on file.
Lists all contacts in the account, most-recently updated first. Returns compact summaries with slug values for contact detail lookup. Use search_contacts for filtered queries.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
Lists all Recruit CRM users and returns compact summaries of each user
No parameter schema on file.
Lists Recruit CRM teams with MCP-side pagination. By default returns team IDs, names, and user IDs. Pass expand=user to return user summaries; include_user_contact_info=true adds user email, contact_number, and avatar.
No parameter schema on file.
Lists Recruit CRM candidate questions with MCP-side pagination. Returns compact id and question rows for resolving candidate question IDs.
No parameter schema on file.
Lists Recruit CRM hiring pipelines with MCP-side pagination. Returns hiring_pipeline_id and name rows for selecting a job hiring pipeline or listing candidate hiring stages.
No parameter schema on file.
Lists Recruit CRM languages with MCP-side pagination and returns the standard proficiency IDs. Use language_id and proficiency_id for candidate language_skills.
No parameter schema on file.
Lists Recruit CRM currencies with MCP-side pagination. Returns currency_id, code, country, currency, and symbol rows for candidate and job currency_id fields.
No parameter schema on file.
Lists Recruit CRM qualifications with MCP-side pagination. Returns qualification_id and label rows for job qualification_id fields.
No parameter schema on file.
Lists Recruit CRM XML job boards for jobs. Returns default_xml_feeds and custom_xml_feeds rows with id and label for job xml_feeds.
No parameter schema on file.
Search Recruit CRM hotlists by related_to_type and optional name/shared filters. related_to_type is required. ${unsupportedOwnerFilterGuidance} Broad searches return compact hotlist summaries with related_count only. When name is provided, results also include related_slugs for follow-up workflows.
No parameter schema on file.
Creates one Recruit CRM hotlist. Requires name, related_to_type, shared (true for team-shared, false for private), and created_by user id. Resolve user IDs with list_users.
No parameter schema on file.
Adds up to 10 Recruit CRM record slugs to an existing hotlist. Duplicate input slugs are ignored. Returns partial-success details with added_slugs and an errors array for any failed additions.
No parameter schema on file.
Search Recruit CRM tasks and return compact summaries designed for large result sets. ${myRecordsOwnerFilterGuidance} Returns related_to and related_to_type values that can be used to open related entities in Recruit CRM app URLs like https://app.recruitcrm.io/{related_to_type}/{related_to}.
No parameter schema on file.
Lists Recruit CRM task types, returning compact id/label rows. Use task_type_id in create_task.
No parameter schema on file.
Creates one Recruit CRM task. Requires task_type_id, title, description, reminder, start_date, owner_id, and created_by. Resolve task type IDs with list_task_types and user IDs with list_users. Description supports basic HTML/rich text. Returns a compact task summary.
No parameter schema on file.
Updates one existing Recruit CRM task by task_id. Requires task_id, updated_by, and at least one field to update. Resolve task type IDs with list_task_types and user IDs with list_users. Description supports basic HTML/rich text. Returns a compact task summary.
No parameter schema on file.
Search Recruit CRM meetings and return compact summaries designed for large result sets. ${myRecordsOwnerFilterGuidance} Returns related_to and related_to_type values that can be used to open related entities in Recruit CRM app URLs like https://app.recruitcrm.io/{related_to_type}/{related_to}.
No parameter schema on file.
Lists Recruit CRM meeting types, returning compact id/label rows. Use meeting_type_id in create_meeting.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
Search Recruit CRM notes and return compact summaries designed for large result sets. ${unsupportedOwnerFilterGuidance} Returns related_to and related_to_type values that can be used to open related entities in Recruit CRM app URLs like https://app.recruitcrm.io/{related_to_type}/{related_to}.
No parameter schema on file.
Lists Recruit CRM note types, returning compact id/label rows. Use note_type_id in create_note.
No parameter schema on file.
Creates one Recruit CRM note. Requires note_type_id, description, related_to, related_to_type, and created_by user id. Resolve note type IDs with list_note_types and user IDs with list_users. Description supports basic HTML/rich text. Returns a compact note summary.
No parameter schema on file.
Updates one existing Recruit CRM note by note_id. Requires note_id, updated_by, and at least one field to update. Resolve note type IDs with list_note_types and user IDs with list_users. Description supports basic HTML/rich text. Returns a compact note summary.
No parameter schema on file.
Search Recruit CRM call logs and return compact summaries designed for large result sets. ${unsupportedOwnerFilterGuidance} Returns related_to and related_to_type values that can be used to open related entities in Recruit CRM app URLs like https://app.recruitcrm.io/{related_to_type}/{related_to}.
No parameter schema on file.
Lists Recruit CRM custom call types, returning compact id/label rows. Use custom_call_type_id in create_call_log.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
Fetches full details for up to 10 candidates in parallel by slug. Suitable for retrieving specific candidate records after slug resolution from search_candidates. Not intended for bulk database scans. Returns partial results: failures are reported in the errors array with status_code.
No parameter schema on file.
Fetches full details for up to 10 Recruit CRM jobs in parallel by slug. Suitable for retrieving specific job records after slug resolution from search_jobs. Returns full Recruit CRM job payloads with partial results: failures are reported in the errors array with status_code.
No parameter schema on file.
Fetches full details for up to 10 companies in parallel by slug. Suitable for retrieving specific company records after slug resolution from search_companies. Not intended for bulk database scans. Returns partial results: failures are reported in the errors array with status_code.
No parameter schema on file.
Fetches full details for up to 10 contacts in parallel by slug. Suitable for retrieving specific contact records after slug resolution from search_contacts. Not intended for bulk database scans. Returns partial results: failures are reported in the errors array with status_code.
No parameter schema on file.
Fetches assigned candidates for one Recruit CRM job and returns compact assignment summaries. Filter by status_id to narrow to a specific hiring stage; resolve stage IDs with list_candidate_hiring_stages (use the job
No parameter schema on file.
No parameter schema on file.
Lists Recruit CRM pitch pipeline stages with status_id and label values for resolving stage names used by update_candidate_pitch_stage.
No parameter schema on file.
Marks one Recruit CRM candidate as pitched to one contact. Requires candidate_slug, contact_slug, and created_by. Checks existing candidate/contact pitch records unless allow_duplicate=true. This records the pitch in Recruit CRM; the API does not send an email to the candidate or contact.
No parameter schema on file.
Updates the pitch stage for one candidate/contact pitch record. Requires candidate_slug, contact_slug, status_id, stage_date, and updated_by. Resolve status_id with list_pitch_stages. remark is optional text.
No parameter schema on file.
Fetches pitch history for one Recruit CRM candidate or contact by slug. Set entity_type to candidate for candidate pitch history, or contact for contact pitch history. Returns compact pitch entries without email, phone, resume, or profile image fields.
No parameter schema on file.
Fetches contacts where a candidate is pitched or candidates pitched to a contact. Set entity_type to candidate to return contacts for a candidate slug, or contact to return candidates for a contact slug. Returns compact records without email, phone, resume, or profile image fields.
No parameter schema on file.
No parameter schema on file.
Updates one candidate
No parameter schema on file.
Lists Recruit CRM job pipeline statuses (e.g. Open, Closed, On Hold, plus any custom statuses configured for the account). Returns compact rows with id and label for resolving a status name to the numeric job_status_id used in search_jobs.job_status.
No parameter schema on file.
Lists Recruit CRM contact pipeline stages (the sales pipeline). Returns compact rows with stage_id and label for resolving a stage name to the numeric stage_id used in create_contact and update_contact.
No parameter schema on file.
Lists Recruit CRM off-limit statuses configured for the account. Returns compact rows with id, label, sequence_no, and default for resolving status_id values used by the off-limit mark tools.
No parameter schema on file.
Marks up to 25 Recruit CRM candidates as off-limit. Requires candidate_slugs, status_id, and end_date in DD-MM-YYYY format; reason is optional. Returns the updated slug list, status_id, end_date, reason, and API remark.
No parameter schema on file.
Marks up to 25 Recruit CRM contacts as off-limit. Requires contact_slugs, status_id, and end_date in DD-MM-YYYY format; reason is optional. Returns the updated slug list, status_id, end_date, reason, and API remark.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
Fetch one candidate
No parameter schema on file.
List curated custom field metadata for a specific entity type (candidates, contacts, companies, jobs, deals).
No parameter schema on file.
Fetch curated details for one custom field by field_id and entity_type, including dropdown or multiselect option values.
No parameter schema on file.
Fetches parent-child dependency relationships for custom fields of a given entity type
No parameter schema on file.
No parameter schema on file.
Diagnoses a single Recruit CRM job
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source is public, though no licence is declared for it
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Recruitcrm or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| verification-discount | none | publisher verification (unlinked) — no provenance/repo link, but the shipped source was fully read | −2 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (69 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| search_candidates | no tags | |
| list_candidates | no tags | |
| create_candidate | untrusted-inputstate-write | untrusted-input: keyword "download"; state-write: declares readOnlyHint: false, destructiveHint: true |
| update_candidate | untrusted-inputstate-write | untrusted-input: keyword "download"; state-write: declares readOnlyHint: false, destructiveHint: true |
| search_jobs | no tags | |
| list_jobs | no tags | |
| create_job | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| update_job | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| search_companies | no tags | |
| list_companies | no tags | |
| create_company | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| update_company | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| search_contacts | no tags | |
| list_contacts | no tags | |
| create_contact | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| update_contact | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| list_users | no tags | |
| list_teams | no tags | |
| list_candidate_questions | no tags | |
| list_hiring_pipelines | no tags | |
| list_languages_and_proficiencies | no tags | |
| list_currencies | no tags | |
| list_qualifications | no tags | |
| list_xml_jobboards | no tags | |
| search_hotlists | no tags | |
| create_hotlist | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| add_records_to_hotlist | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| search_tasks | no tags | |
| list_task_types | no tags | |
| create_task | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| update_task | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| search_meetings | no tags | |
| list_meeting_types | no tags | |
| create_meeting | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| update_meeting | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| search_notes | no tags | |
| list_note_types | no tags | |
| create_note | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| update_note | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| search_call_logs | no tags | |
| list_call_types | no tags | |
| create_call_log | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| update_call_log | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| get_candidate_details | no tags | |
| get_job_details | no tags | |
| get_company_details | no tags | |
| get_contact_details | no tags | |
| get_job_assigned_candidates | no tags | |
| list_candidate_hiring_stages | no tags | |
| list_pitch_stages | no tags | |
| pitch_candidate_to_contact | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| update_candidate_pitch_stage | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| get_pitch_history | no tags | |
| get_pitched_records | no tags | |
| assign_candidate_to_job | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| update_candidate_hiring_stage | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| list_job_statuses | no tags | |
| list_contact_stages | no tags | |
| list_off_limit_statuses | no tags | |
| mark_candidate_off_limit | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| mark_contact_off_limit | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| mark_company_off_limit | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| mark_records_available | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| get_candidate_job_assignment_hiring_stage_history | untrusted-input | untrusted-input: keyword "fetch" |
| list_custom_fields | no tags | |
| get_custom_field_details | untrusted-input | untrusted-input: keyword "fetch" |
| get_custom_field_dependencies | no tags | |
| prepare_client_brief | no tags | |
| analyze_job_pipeline | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.8.1. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Recruitcrm can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.