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
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 165 |
| Latency | 1410 ms |
| Last checked (UTC) | 2026-10-23T23:20:18.909Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-23T23:20:18.909Z | Healthy | 1410 |
get_notifications_api_notifications_get | Get 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_post | Mark 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_patch | Mark Notification As Read Mark a notification as read. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json |
delete_notification_api_notifications__notification_id__delete | Delete Notification Delete a notification. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json |
get_ats_score_api_resume_ats_score_get | Get 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_post | Refresh 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_post | Resume 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_post | Mark 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_post | Generate 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_post | Apply 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_post | Get Yaml Suggestions Generate YAML-based improvement suggestions ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json |
generate_complete_resume_api_resume_generate_complete_post | Generate 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_post | Render 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_post | Save 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_post | Create 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_get | Get 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_get | Get 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_get | Test 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_get | Debug 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_get | Download 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_get | Public 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__get | Show 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_get | Get 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_post | Upload 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_put | Update 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_delete | Delete 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_put | Set 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_get | Get 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_post | Create 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_put | Update 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_delete | Delete 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_post | Start 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_get | Get 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_delete | Clear 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_post | Start 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_post | Start 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_get | Get 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__get | Check 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__get | Get 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_post | Start Conversation Start a new email conversation. ### Responses: **201**: Successful Response (Success Response) Content-Type: application/json |
get_conversations_api_email_conversations_get | Get 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__get | Get 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_post | Pause 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_post | Resume Conversation Resume a paused conversation. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json |
send_manual_message_api_email_conversations__conversation_id__message_post | Send 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_post | Resolve 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_get | Get 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_get | Get 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_post | Enable 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_post | Disable 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_put | Update 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_post | Trigger 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_get | Get 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__get | Get 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_get | Get 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__get | Get 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__post | Create 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__put | Update 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__delete | Delete 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_get | Get 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_post | Add 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_put | Update 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_delete | Delete 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_post | Apply 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_post | User Memory Ai Chat ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json |
get_available_senders_api_email_sender_pool_senders_get | Get 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_get | Get 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_get | Get 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_post | Send 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_get | Get 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_put | Update 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__get | Get 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__put | Update 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_get | Get 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_post | Generate 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__get | Get 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__put | Update 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__delete | Reset 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__get | Get 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__put | Update 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__delete | Reset 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__get | Get 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_get | Get Default Config Get default configuration values ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json |
get_all_user_configs_api_config_admin_users_get | Get 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_get | Get 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_get | Get 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_get | Get 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_get | Get 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_get | List 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_post | Add 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_patch | Update 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_get | List 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_get | Get 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__get | Get 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_patch | Update 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_post | Send 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_post | Generate 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_post | Bulk 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_post | Trigger 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_post | Apify 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 |