hires_batch_create_messages
Create up to 100 scheduled messages in one request; items are processed independently, one failure does not stop the others.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes |
Create up to 100 scheduled messages in one request; items are processed independently, one failure does not stop the others.
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes |
Changes observed during successful MCP inspections.
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"Input schema / additionalPropertiesRemoved value: -falseInput schema / properties / messages / descriptionRemoved value: -"Array of message payloads to create (max 100)."Input schema / properties / messages / items / additionalPropertiesRemoved value: -falseInput schema / properties / messages / items / properties / application_id / descriptionRemoved value: -"Optional application ID linked to this message."Input schema / properties / messages / items / properties / bcc / descriptionRemoved value: -"Blind carbon-copy recipient email addresses."Input schema / properties / messages / items / properties / body / descriptionPrevious value: -"Email body as HTML."New value: +"HTML"Input schema / properties / messages / items / properties / candidate_id / descriptionRemoved value: -"Target candidate ID for this message."Input schema / properties / messages / items / properties / cc / descriptionRemoved value: -"Carbon-copy recipient email addresses."Input schema / properties / messages / items / properties / from_account_id / descriptionPrevious value: -"Sending mail account ID. If omitted, the API key owner's default mail account is used."New value: +"Default: API key owner's default mail account"Input schema / properties / messages / items / properties / reply_to_email_id / descriptionPrevious value: -"Optional mailbox message ID to reply to."New value: +"Mailbox message id to reply to"Input schema / properties / messages / items / properties / scheduled_at / descriptionPrevious value: -"Unix timestamp (seconds). If omitted, defaults to created time plus 900 seconds."New value: +"Unix seconds; default now + 900"Input schema / properties / messages / items / properties / send_in_new_thread / descriptionPrevious value: -"Whether to send the message as a new thread instead of replying in an existing thread."New value: +"Start a new thread instead of replying"Input schema / properties / messages / items / properties / subject / descriptionRemoved value: -"Email subject line."Input schema / properties / messages / items / properties / to / descriptionPrevious value: -"Primary recipient email addresses."New value: +"Recipient emails"Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show this is a write without destructiveHint, but the description adds a non-structured behavioral trait: 'one failure does not stop the others' – that per-item failure isolation is genuinely useful and not inferable from the schema or annotations. It also communicates that messages are scheduled ('scheduled messages'), another behavior trait. It does not cover rate limits, permission prerequisites, or partial-failure response format, but the presence of annotations and these additions justify a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence of substantive content: action, scale, and fault behavior. No filler, no redundancy, and the key constraint (up to 100) is front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complex nested array schema and no output schema, the description covers the core purpose, item count, and fault model, but omits what the caller sees on failure (per-item results?), potential permissions, and any additional scheduling defaults. It is good baseline for a batch-write but such a thorough tool needs a bit more detail to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level, and the description does not explain any of the nested properties (cc, bcc, from_account_id, etc.). With low schema coverage, the description carries more responsibility to clarify the messages array, but it only gives 'scheduled messages' context and the up-to-100 limit; it does not add meaning to any specific parameter. The agent must infer the semantics of `to`, `subject`, `body` and optional fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Create ... scheduled messages'), the volume limit ('up to 100'), and the single-request scope, which clearly distinguishes it from single-send tools like hires_send_candidate_message. The title correctly completes the resource context, so no agent would confuse this with a non-batch or non-message tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when/when-not guidance or mention of alternatives. The 'in one request' and 'up to 100' imply a batch use case, but the description never names hires_send_candidate_message or any other tool, nor does it say when the agent should stop 'favor' this over a single-send or scheduled message update. These are excluded endpoints that transition outside key meanings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.