# hires_send_candidate_message

Schedule an email message to a candidate. If scheduled_at is omitted, the message is scheduled for 15 minutes after creation.

Agent View of the PolicyLayer registry record for `hires_send_candidate_message`. HTML page: https://policylayer.com/tools/com-100hires-100hires/hires-send-candidate-message

## Facts

- Tool: `hires_send_candidate_message`
- Server: 100Hires - AI ATS & Recruitment Software (`https://mcp.100hires.com/mcp`) — https://policylayer.com/tools/com-100hires-100hires.md
- Homepage: https://github.com/100Hires/mcp
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 11 (4 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `cc` | array | no | Carbon-copy recipient email addresses. |
| `id` | string | number | yes | Candidate ID (integer) or alias (string). |
| `to` | array | yes | Primary recipient email addresses. |
| `bcc` | array | no | Blind carbon-copy recipient email addresses. |
| `body` | string | yes | Email body as HTML. |
| `subject` | string | yes | Email subject line. |
| `scheduled_at` | number | null | no | Unix timestamp (seconds) for when to send. Defaults to 15 minutes after creation. |
| `application_id` | number | null | no | Optional application ID to link this message to. |
| `from_account_id` | number | null | no | Sending mail account ID. If omitted, uses the API key owner's default mail account. |
| `reply_to_email_id` | number | null | no | Optional mailbox message ID to reply to. |
| `send_in_new_thread` | boolean | no | Send as a new email thread instead of replying in an existing one. |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hires_send_candidate_message",
    "arguments": {
      "id": 0,
      "to": [],
      "body": "<body>",
      "subject": "<subject>"
    }
  }
}
```

## Why hires_send_candidate_message is rated Medium

This tool creates/schedules new communication artifacts (emails) in the system, which is a reversible write operation. While it sends outbound messages, the action itself is creating data records and scheduling them rather than executing arbitrary code or causing financial harm.

From the tool's own definition: "Tool creates and schedules email messages to candidates ('Schedule an email message to a candidate'). This is a write operation that modifies system state by creating new message records."

Risk signals: Accepts raw HTML/template content (body) · High parameter count (11 properties)

## Use case

AI agents use hires_send_candidate_message to create or update resources in 100Hires - AI ATS & Recruitment Software, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your 100Hires - AI ATS & Recruitment Software environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches 100Hires - AI ATS & Recruitment Software:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "hires_send_candidate_message": {
      "limits": [
        {
          "counter": "hires_send_candidate_message_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on 100Hires - AI ATS & Recruitment Software (132)

- `hires_batch_remove_from_boards` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-batch-remove-from-boards.md
- `hires_cancel_all_notification_messages` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-cancel-all-notification-messages.md
- `hires_delete_application` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-application.md
- `hires_delete_candidate` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-candidate.md
- `hires_delete_company` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-company.md
- `hires_delete_email_template` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-email-template.md
- `hires_delete_form` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-form.md
- `hires_delete_job` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-job.md
- `hires_delete_job_webhook` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-job-webhook.md
- `hires_delete_message` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-message.md
- `hires_delete_note` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-note.md
- `hires_delete_notification_message` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-notification-message.md
- `hires_delete_nurture_campaign` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-nurture-campaign.md
- `hires_delete_question` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-question.md
- `hires_delete_webhook` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-delete-webhook.md
- `hires_disqualify_candidate` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-disqualify-candidate.md
- `hires_remove_from_job_board` — Destructive — https://policylayer.com/tools/com-100hires-100hires/hires-remove-from-job-board.md
- `hires_batch_job_boards` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-batch-job-boards.md
- `hires_download_attachment` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-download-attachment.md
- `hires_get_ai_score` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-ai-score.md
- `hires_get_application` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-application.md
- `hires_get_billing` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-billing.md
- `hires_get_candidate` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-candidate.md
- `hires_get_candidate_resume` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-candidate-resume.md
- `hires_get_career_job` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-career-job.md
- `hires_get_company` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-company.md
- `hires_get_email_template` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-email-template.md
- `hires_get_evaluation` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-evaluation.md
- `hires_get_form` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-form.md
- `hires_get_interview` — Read — https://policylayer.com/tools/com-100hires-100hires/hires-get-interview.md
- …and 102 more: https://policylayer.com/tools/com-100hires-100hires.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-100hires-100hires · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-100hires-100hires
