HopeHire

in.hopehire/mcp · v1.0.0 · sales-and-crm

HopeHire is healthy: it completed an MCP handshake in 1410 ms and exposes 165 tools.

Tailor resumes, score ATS fit, find hiring leads, and send cold outreach, from your agent.

Endpoint: https://hopehire.in/mcp (streamable-http)

No repository listed · JSON · Add to my inventory

Facts

Users (last 30 days)0
HandshakeHealthy
Auth neededNone
Tool count165
Latency1410 ms
Last checked (UTC)2026-10-23T23:20:18.909Z

Health history

Checked (UTC)StatusLatencyError
2026-10-23T23:20:18.909ZHealthy1410

Tools (100)

get_notifications_api_notifications_getGet Notifications Fetch notifications for the current user. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json [ {} ] ```
mark_all_notifications_as_read_api_notifications_read_all_postMark All Notifications As Read Mark every unread notification as read (not just the page the client loaded). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
mark_notification_as_read_api_notifications__notification_id__read_patchMark Notification As Read Mark a notification as read. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
delete_notification_api_notifications__notification_id__deleteDelete Notification Delete a notification. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_ats_score_api_resume_ats_score_getGet Ats Score Return the most recently calculated ATS score for the user's resume. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
refresh_ats_score_api_resume_ats_score_refresh_postRefresh Ats Score Recalculate the ATS score from the current resume and persist it. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
resume_ai_chat_api_resume_ai_chat_postResume Ai Chat Stream an AI response that helps the user interactively improve their resume. Body: user_id (str) — authenticated user's ID message (str) — latest user message conversation_history (list) — [{role: "user"|"assistant", content: str}] ### Respons
mark_improvement_suggestions_invalid_api_resume_improvement_suggestions_mark_invalid_postMark Improvement Suggestions Invalid Replace improvement suggestions with the provided valid_suggestions list. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
generate_yaml_version_api_resume_generate_yaml_postGenerate Yaml Version Generate YAML version and RenderCV PDF for existing resume ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
apply_suggestions_api_resume_apply_suggestions_postApply Suggestions Apply improvement suggestions to YAML and regenerate PDF ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_yaml_suggestions_api_resume_yaml_suggestions_postGet Yaml Suggestions Generate YAML-based improvement suggestions ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
generate_complete_resume_api_resume_generate_complete_postGenerate Complete Resume Generate a complete, enhanced resume with additional relevant content using AI. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
render_raw_yaml_api_resume_render_raw_yaml_postRender Raw Yaml Hot-reload: Generate PDF from raw YAML content ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
save_resume_yaml_api_resume_save_yaml_postSave Resume Yaml Save raw YAML content to the user's resume. YAML is treated as the source of truth: the structured resume fields (personalInfo, experience, education, projects, skills, certifications) are parsed from the YAML and written back to the database so that every other part of the applic
create_resume_from_linkedin_api_resume_from_linkedin_postCreate Resume From Linkedin Create a resume from LinkedIn profile URL using Apify API. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
get_rendercv_pdf_api_resume_rendercv_pdf_getGet Rendercv Pdf Get RenderCV PDF download URL for the user's resume. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_rendercv_pdf_download_api_resume_rendercv_pdf_download_getGet Rendercv Pdf Download Return a presigned URL with Content-Disposition: attachment so the browser downloads the resume PDF instead of opening it inline. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
test_pdf_generation_api_resume_test_pdf_generation_getTest Pdf Generation Test PDF generation to debug PDF issues. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
debug_pdf_api_resume_debug_pdf_getDebug Pdf Get debugging information about a PDF file. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
download_resume_api_resume_download_getDownload Resume Download the user's resume. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
public_resume_api_resume_public_getPublic Resume Resume link embedded in cold emails: no login, but only links we signed will open. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
show_resume_api_resume__resume_id__getShow Resume Show the resume via redirect to presigned S3 URL. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
get_resume_api_resume_getGet Resume Get the user's resume. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
upload_resume_api_resume_postUpload Resume Upload and process a resume file. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
update_resume_manual_api_resume_putUpdate Resume Manual Update a user's resume manually and trigger PDF generation. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
delete_resume_api_resume_deleteDelete Resume Delete the user's resume and cleanup associated resources. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
set_cold_email_resume_source_api_resume_cold_email_source_putSet Cold Email Resume Source Set which resume file cold outreach should use: the originally uploaded file ("uploaded", the default) or HopeHire's RenderCV-generated PDF ("generated"). A lightweight sibling to the full manual-edit PUT above — this only flips one field and doesn't trigger PDF/YAML re
get_preferences_api_job_preferences_getGet Preferences Get the user's job preferences Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
create_preferences_api_job_preferences_postCreate Preferences Create the user's job preferences Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
update_preferences_api_job_preferences_putUpdate Preferences Update the user's job preferences Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
delete_preferences_api_job_preferences_deleteDelete Preferences Delete the user's job preferences Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
start_job_matching_api_job_matches_start_postStart Job Matching Start an asynchronous job matching process Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_filtered_jobs_api_job_matches_getGet Filtered Jobs Get filtered job matches for a user Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
clear_job_matches_api_job_matches_deleteClear Job Matches Clear all job matches for a user Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
start_conversation_api_auto_apply_start_conversation_postStart Conversation Start a new conversation using the shared auto-apply service logic. ### Responses: **201**: Successful Response (Success Response) Content-Type: application/json
start_auto_apply_api_auto_apply_postStart auto-apply process Launches an automated job application process that finds contacts, generates personalized messages, and sends emails with resume attachments. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "
get_auto_apply_tasks_api_auto_apply_getGet all auto-apply tasks for a user Get all auto-apply tasks for a given user. Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_auto_apply_status_api_auto_apply__task_id__getCheck auto-apply status Retrieves the current status and results of an auto-apply task. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "task_id": "Task Id", "status": "AutoApplyStatus" } ```
get_auto_apply_status_by_task_id_api_auto_apply_status__task_id__getGet Auto Apply Status By Task Id Get status of an auto-apply task by task_id (conversationId). Requires authentication. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "task_id": "Task Id", "status": "AutoApplyStat
start_conversation_api_email_conversations_start_conversation_postStart Conversation Start a new email conversation. ### Responses: **201**: Successful Response (Success Response) Content-Type: application/json
get_conversations_api_email_conversations_getGet Conversations Get all conversations for the authenticated user. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json [ { "id": "Id", "contact_email": "Contact Email", "status": "ConversationStatus", "int
get_conversation_details_api_email_conversations__conversation_id__getGet Conversation Details Get details of a specific conversation. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "id": "Id", "contact_email": "Contact Email", "status": "ConversationStatus", "intent": "Conversa
pause_conversation_api_email_conversations__conversation_id__pause_postPause Conversation Pause an ongoing conversation to stop automatic follow-ups. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
resume_conversation_api_email_conversations__conversation_id__resume_postResume Conversation Resume a paused conversation. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
send_manual_message_api_email_conversations__conversation_id__message_postSend Manual Message Send a manual message in the conversation, overriding the AI. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
resolve_protocol_api_email_conversations__conversation_id__resolve_postResolve Protocol Resolve a human-intervention protocol by sending a manual reply and marking the associated notification as read. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_system_stats_api_multi_tenant_monitoring_stats_getGet System Stats Get overall system statistics ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "workers": [ {} ], "total_active_users": 1, "system_status": "System Status" } ```
get_active_users_api_multi_tenant_monitoring_users_active_getGet Active Users Get list of active users with email monitoring enabled ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json [ {} ] ```
enable_user_monitoring_api_multi_tenant_monitoring_users__user_id__enable_postEnable User Monitoring Enable email monitoring for a specific user ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
disable_user_monitoring_api_multi_tenant_monitoring_users__user_id__disable_postDisable User Monitoring Disable email monitoring for a specific user ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
update_user_monitoring_config_api_multi_tenant_monitoring_users__user_id__config_putUpdate User Monitoring Config Update email monitoring configuration for a user ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
trigger_user_discovery_api_multi_tenant_monitoring_discovery_trigger_postTrigger User Discovery Manually trigger user discovery process ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_user_monitoring_status_api_multi_tenant_monitoring_users__user_id__status_getGet User Monitoring Status Get monitoring status for a specific user ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_email_analytics_report_api_reports__user_id___duration__getGet Email Analytics Report Get email analytics report for a user over a specific duration. Duration options: - 7d: Last 7 days - 30d: Last 30 days - 90d: Last 90 days - 1y: Last year - all: All time ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_email_analytics_summary_api_reports__user_id__summary_getGet Email Analytics Summary Get a quick summary of email analytics for the last 30 days. This is a lightweight endpoint for dashboard widgets. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_user_memory_api_user_memory__user_id__getGet User Memory Get user memory by user ID ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
create_user_memory_api_user_memory__user_id__postCreate User Memory Create new user memory ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
update_user_memory_api_user_memory__user_id__putUpdate User Memory Update existing user memory ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
delete_user_memory_api_user_memory__user_id__deleteDelete User Memory Delete (deactivate) user memory ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
get_user_memory_history_api_user_memory__user_id__history_getGet User Memory History Get user memory history (all versions) ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true, "total": 1, "page": 1, "limit": 1 } ```
add_ai_interaction_context_api_user_memory__user_id__context_postAdd Ai Interaction Context Add AI interaction context to user memory ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
update_remembered_field_answer_api_user_memory__user_id__remembered_field_putUpdate Remembered Field Answer Edit one remembered application-field answer from the memory-bank UI. Same durable store the extension writes to (interaction_history, keyed by normalized label) - this just lets the user correct it directly instead of waiting to be asked the question again on some fu
delete_remembered_field_answer_api_user_memory__user_id__remembered_field_deleteDelete Remembered Field Answer Forgets one remembered application-field answer (memory-bank UI delete action). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
apply_memory_suggestion_api_user_memory_apply_suggestion_postApply Memory Suggestion Apply a specific memory update suggested by the AI. Body: { user_id, suggestion } ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
user_memory_ai_chat_api_user_memory_ai_chat_postUser Memory Ai Chat ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_available_senders_api_email_sender_pool_senders_getGet Available Senders Get all available email senders (admin only — exposes other senders' PII and quotas) ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
get_least_used_sender_api_email_sender_pool_least_used_sender_getGet Least Used Sender Get the least used email sender for load balancing, considering company contact history (admin only) ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
get_fallback_sender_api_email_sender_pool_fallback_sender_getGet Fallback Sender Get a fallback email sender, excluding the specified user (admin only) ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
send_email_via_pool_api_email_sender_pool_send_email_postSend Email Via Pool Send an email using the email sender pool (admin only) ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "success": true } ```
get_my_footer_api_email_footer_me_getGet My Footer Get the footer for the currently authenticated user. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
update_my_footer_api_email_footer_me_putUpdate My Footer Update the footer for the currently authenticated user. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_email_footer_api_email_footer__user_id__getGet Email Footer Get email footer for a user. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
update_email_footer_api_email_footer__user_id__putUpdate Email Footer Update email footer for a user. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_formatted_footer_api_email_footer__user_id__formatted_getGet Formatted Footer Get formatted footer string for a user. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
generate_footer_from_resume_api_email_footer__user_id__generate_from_resume_postGenerate Footer From Resume Generate email footer from user's resume data. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_user_config_api_config_user__user_id__getGet User Config Get configuration for a specific user ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
update_user_config_api_config_user__user_id__putUpdate User Config Update configuration for a specific user ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
reset_user_config_api_config_user__user_id__deleteReset User Config Reset user configuration to defaults ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_campaign_config_api_config_campaign__campaign_id__getGet Campaign Config Get configuration for a specific campaign ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
update_campaign_config_api_config_campaign__campaign_id__putUpdate Campaign Config Update configuration for a specific campaign ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
reset_campaign_config_api_config_campaign__campaign_id__deleteReset Campaign Config Reset campaign configuration to defaults ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_effective_config_api_config_effective__user_id__getGet Effective Config Get effective configuration combining user and campaign settings ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_default_config_api_config_defaults_getGet Default Config Get default configuration values ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_all_user_configs_api_config_admin_users_getGet All User Configs Get all user configurations (admin only) ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_all_campaign_configs_api_config_admin_campaigns_getGet All Campaign Configs Get all campaign configurations (admin only) ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_available_leads_api_linkedin_leads_getGet Available Leads Return leads for the authenticated user, filtered by outreach status. status=fresh — leads not yet contacted (default); AI-ranked status=queued — leads the user has queued for outreach status=contacted — leads the user has already emailed ### Responses: **200**: Suc
get_all_leads_admin_api_linkedin_leads_all_getGet All Leads Admin Admin view: return all leads regardless of outreach status. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_lead_stats_api_linkedin_leads_stats_getGet Lead Stats Return summary statistics for the lead database. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
list_accounts_api_linkedin_leads_accounts_getList Accounts List all LinkedIn scraper accounts in the pool (passwords masked). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
add_account_api_linkedin_leads_accounts_postAdd Account Add a LinkedIn scraper account to the pool. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
update_account_status_api_linkedin_leads_accounts__account_id__status_patchUpdate Account Status Update the status of a LinkedIn account (active / cooldown / banned). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
list_scrape_runs_api_linkedin_leads_scrape_runs_getList Scrape Runs List recent scrape run records for audit / dashboard (admin only: they hold platform-wide queries and volumes). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
get_lead_outreach_history_api_linkedin_leads__lead_id__history_getGet Lead Outreach History Return the outreach thread for this lead for the current user. Returns a chronological list of events: - type=sent — initial cold email - type=follow_up — follow-up email - type=reply — recruiter reply ### Responses: **200**: Successful Response (Success
get_lead_api_linkedin_leads__lead_id__getGet Lead Fetch a single lead by its ID. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
update_outreach_status_api_linkedin_leads__lead_id__outreach_patchUpdate Outreach Status Update the current user's outreach status for a given lead. Use this after sending a cold email so the lead is marked as contacted. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json
send_outreach_from_lead_api_linkedin_leads__lead_id__send_outreach_postSend Outreach From Lead Generate and send a cold outreach email directly from a LinkedIn lead. Flow: 1. Fetch the lead — must have an email address. 2. Load the authenticated user's resume/profile from MongoDB. 3. Call send_and_track_cold_email() to generate (or use custom_message) and
generate_linkedin_message_api_linkedin_leads__lead_id__generate_linkedin_message_postGenerate Linkedin Message Generate a short LinkedIn outreach message (≤280 chars) personalised to this lead. The frontend copies it to clipboard and opens the recruiter's LinkedIn profile so the user can paste-and-send in one step. ### Responses: **200**: Successful Response (Success Response) Co
bulk_send_outreach_api_linkedin_leads_bulk_outreach_postBulk Send Outreach Send outreach emails to multiple leads in one call. Each lead must have an email address. Leads without emails are skipped. Returns per-lead results so the frontend can show success/fail per contact. Rate-limited to 20 leads per request to protect Gmail sending quotas. ### Res
trigger_scrape_api_linkedin_leads_trigger_postTrigger Scrape Manually kick off a LinkedIn scrape run. Admin only: each run spends metered Apify credits and accepts arbitrary search queries. Strategy (tried in order): 1. Publish to the linkedin_scrape_queue via RabbitMQ (if running). 2. If RabbitMQ is unavailable or times out, run the scra
apify_webhook_api_linkedin_leads_webhook_apify_postApify Webhook Receives push notifications from Apify when a scraper run completes. No authentication required (Apify calls this endpoint). Apify includes a secret token in the URL for verification in production. ### Responses: **200**: Successful Response (Success Response) Content-Type: applicat