Skip to main content
Glama

100Hires - AI ATS & Recruitment Software

Server Details

Official 100Hires MCP: AI ATS & Recruitment Software for candidates, jobs, applications, interviews.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 43 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
100Hires/mcp
GitHub Stars
0

TDQS

B3.3/5.0

Scored across 136 tools

Disambiguation4/5

Tools have clear descriptions and distinct purposes, but the sheer number creates overlapping concepts (e.g., single vs. batch operations, get vs. list functions) that could confuse an agent. Most tools are well-differentiated, but a few pairs like hires_get_workflow_stages and hires_list_workflow_stages may seem redundant.

Naming Consistency5/5

All tools follow a consistent 'hires_' prefix with snake_case verb_noun naming (e.g., create_job, list_candidates, batch_move_applications). The pattern is predictable across the entire set, making it easy to infer function from name.

Tool Count1/5

With 136 tools, the server is far beyond the typical scope and overwhelms agents with too many choices. Even for a comprehensive ATS, this is extreme and will likely cause selection errors and increased latency in tool picking.

Completeness5/5

The tool surface is extremely comprehensive, covering CRUD operations for candidates, jobs, applications, companies, forms, questions, webhooks, nurture campaigns, interviews, and messages, along with batch operations, AI scoring, and career site management. No obvious gaps in the domain.

Available Tools

136 tools
hires_add_candidate_tagsCInspect

Add tags to a candidate.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
tagsYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a non-read-only, non-destructive mutation, but the description adds no behavioral detail beyond that. It doesn't say whether tags are appended, deduplicated, or if non-existent tags are auto-created, nor does it mention error or idempotency behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, fluff-free sentence that gets to the point. It is short and clear, though so brief it adds little beyond the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With siblings hires_batch_add_tags and hires_remove_candidate_tag, the description should specify when to use this single-candidate tool vs. alternativesGu. It also omits whether tags are appended or replaced, and what side effects occur. No output schema or additional context compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents the 'id' parameter, and the 'tags' parameter is described as an array of strings without further semantics. The tool description clarifies the verb 'add' but doesn't explain tag uniqueness, case sensitivity, or whether unknown tags are created — leaving the agent to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific operation ('Add tags to a candidate') that matches the tool name. However, it does not differentiate this from the sibling hires_batch_add_tags, so an agent comparing tools would not know the scope/single-target intent without extra reasoning.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus hires_batch_add_tags, hires_remove_candidate_tag, or other tag-related tools. The description provides no context about bulk vs. single-candidate operation, or what should happen if a tag already exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_add_hiring_team_memberCInspect

Add a company user to the job's hiring team.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
user_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, indicating a mutation that is not destructive. The description adds no behavioral context beyond restating the action, such as side effects, permission requirements, or idempotency. With annotations covering safety, the description contributes little extra value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise and easy to parse. However, it is so minimal that it borders on under-specification, providing almost no informative content beyond the tool name. It's not verbose, but it lacks substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description should explain what the expected outcome is, whether it's idempotent, and any relevant return values. None of this is mentioned. Given the tool's simplicity, the description is incomplete for an agent to confidently invoke it without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: 'id' is described as 'Job id or alias', but 'user_id' has no description. The description vaguely maps 'company user' to user_id and 'job' to id, but doesn't clarify what user_id represents (e.g., a company user ID) or provide any additional semantics. It fails to compensate for the missing schema description of user_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Add), the resource (a company user), and the target (the job's hiring team). This is a specific verb+resource combination that distinguishes it from other add tools like hires_add_candidate_tags, though it doesn't explicitly name an alternative. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as hires_list_hiring_team for viewing the current team or other add tools. It doesn't mention prerequisites, expected use cases, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_advance_applicationAdvance application to next stageA
Destructive
Inspect

Advance an application to the next stage in workflow order; no stage_id needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: candidate, cv.text, job. Pass candidate,job so the widget can link to the candidate and job pages

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, covering the mutating nature. The description adds that the stage is determined by workflow order and that stage_id is unnecessary, providing behavioral context beyond the annotations, though it omits side effects like notifications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the action verb front-loaded and the critical detail (no stage_id) included without extra words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation tool with annotations covering safety, the description is adequate for the core operation. However, it doesn't mention return values, side effects, or how to choose this over related tools, leaving some gaps for a fully informed call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% (include is described, id is not). The tool description does not mention either parameter, failing to compensate. An agent must rely on the schema for include's meaning and has no guidance for id beyond it being required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the verb 'Advance' and resource 'application', plus specific behavior 'to the next stage in workflow order' and clarifies no stage_id is needed. This clearly distinguishes it from sibling tools like move_application and transfer_application without needing to inspect their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a precise action and the key constraint that stage_id is not required, which is useful. However, it does not explicitly say when to use this tool versus alternatives such as move_application or transfer_application, leaving the decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_batch_add_tagsAInspect

Add tags to up to 100 candidates; returns per-item results.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesCandidate ids
tagsYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, non-destructive operation. The description adds valuable behavioral detail: the per-item results (implying partial success reporting) and the 100-candidate cap. This goes beyond the annotations and gives agents insight into failure granularity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states the action, scope, and key return behavior with zero filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple batch operation, the description covers the core aspects: adding tags to candidates, the limit, and per-item results. However, it does not mention potential tag limits, duplicate handling, or error scenarios beyond per-item results, leaving some gaps for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% – only 'ids' has a description, while 'tags' lacks any description. The description does not compensate by explaining the format or semantics of the tags parameter, despite the moderate coverage gap. The parameter names are self-explanatory, but the description adds nothing beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Add tags'), the target resource ('candidates'), and a scope ('up to 100'), which distinguishes it from the singular hires_add_candidate_tags via the 'batch' implication. However, it does not explicitly name a sibling or clarify when the batch version should be preferred over the singular one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies batch usage with the 'up to 100 candidates' limit, giving context for when this tool is appropriate. Yet it offers no explicit exclusions (e.g., for fewer than 100 candidates, use the singular tool) and does not mention alternative tools like hires_batch_remove_tags.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_batch_create_messagesAInspect

Create up to 100 scheduled messages in one request; items are processed independently, one failure does not stop the others.

ParametersJSON Schema
NameRequiredDescriptionDefault
messagesYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

hires_batch_job_boardsA
Read-only
Inspect

Get board publication states for several jobs at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobsYesJob ids

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the batch behavior (multiple jobs at once) but doesn't disclose what 'board publication states' includes (e.g., which boards, what statuses) or whether partial failures occur for invalid job IDs. With annotations covering safety, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the verb and resource, and includes the key batch qualifier. Zero wasted words; every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only batch tool with one fully documented parameter and safety annotations, the description is mostly sufficient. However, it doesn't clarify what 'board publication states' means (e.g., which boards, what statuses are returned), and there is no output schema to fill that gap. An agent might not know what to expect in the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter 'jobs' is described as 'Job ids' with a number array type. The description adds the semantic that these are used to fetch board publication states, but doesn't add detail beyond the schema. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('board publication states'), and scope ('for several jobs at once'), which clearly distinguishes it from single-job variants like hires_get_job or hires_publish_to_job_board. It doesn't explicitly name a sibling alternative, but the batch scope is clear enough to differentiate it from related board tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: when you need board publication states for multiple jobs in one call. It doesn't explicitly state when not to use it or name alternatives like hires_list_job_boards or hires_get_job, but the batch phrasing provides adequate context for an agent to select it over single-job tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_batch_move_applicationsA
Destructive
Inspect

Move up to 100 applications to a stage in one request; per-item results, partial success allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesMax 100
stage_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as destructive, so safety is covered. The description adds valuable behavior beyond annotations: per-item results, partial success allowed, and a 100-item ceiling. It does not detail failure behavior or reversibility, but the annotation covers the core warning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence front-loads the batch size and core action, then appends result semantics. There is no filler or redundant restating of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter batch operation, the description covers the inputs, the batch limit, and the key outcome behavior. It is slightly incomplete because there is no output schema and the exact per-item result format is not described, but this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, leaving stage_id undocumented. The description maps 'applications' to ids and 'stage' to stage_id, providing some semantic grounding. Still, it does not explicitly confirm that ids are application IDs or describe what kind of stage_id is expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Move up to 100 applications to a stage in one request.' It also distinguishes itself from the single-application sibling by emphasizing 'batch' and capacity limits. The scope is immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: moving multiple applications in one request. However, it never names the single-item alternative (hires_move_application) or states when not to use this tool, so the agent must infer the routing from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_batch_publish_to_boardsBInspect

Queue several jobs for publication on the given boards.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobsYesJob ids
boardsNoe.g. indeed, linkedin

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description isn't responsible for conveying that this is a write operation. The description adds the 'queue' semantic, implying asynchronous enqueueing, and the batch scope, which is valuable. However, it does not disclose side effects, whether operation is asynchronous, authentication needs, or rate limits. With annotations covering the safety profile, the description adds moderate context, earning a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. It front-loads the core action and objects, making it easy to parse. While the batch operation might benefit from a bit more detail, conciseness itself is well-executed, so it earns a 4 rather than 5 due to slight under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch mutation tool with two parameters and no output schema, the description is sparse. It does not explain what 'publication' entails, whether the operation is asynchronous, how results are returned, or any constraints (e.g., boards must exist, jobs must be active). The 'queue' hint adds some context, but the description leaves many operational details unaddressed, making it incomplete for an agent to anticipate outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the 'jobs' parameter is described as 'Job ids' and 'boards' as 'e.g. indeed, linkedin'. The description adds no additional meaning beyond the schema, which is sufficient given the baseline for high coverage. No further elaboration is necessary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Queue') and identifies the resource ('several jobs') and target ('given boards'). It clearly conveys a batch operation, which distinguishes it from single-publish tools. However, it does not explicitly reference sibling tools like hires_publish_to_job_board or hires_batch_job_boards, leaving some potential for confusion, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as hires_publish_to_job_board or hires_batch_job_boards. It does not mention prerequisites, conditions, exclusions, or any context where one should prefer a different tool. The agent is left to infer the usage scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_batch_reject_applicationsA
Destructive
Inspect

Reject up to 100 applications in one request, optionally with a reason; per-item results, partial success allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesMax 100
rejection_reason_idNoFrom hires_list_rejection_reasons

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint as true Secret. The description adds important behavioral details: batching limit (100), per-item results, and partial success. However, it does not disclose the exact nature of per-item errors or how 'partial success' is reported (e.g., response structure, which item failed). Since no output schema exists, these details are left to the agent's inference, creating a significant gap for a destructive batch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded with the core purpose and limits. It covers key points but could be slightly more structured to separate behavior from alternatives individually, though it is appropriately short.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a batch destructive operation with no output schemaonics, so the description must fully explain the invocation context. It covers the batch size, optional reason, and partial success, but lacks details on error handling for per-item failures, which is critical for an agent to correctly interpret responses. Given the 'openWorldHint' and destructive nature, more completeness would be expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema describes the parameters (ids array with max 100, rejection_reason_id). The description adds the semantic that 'rejection_reason_id' is optional ('optionally with a reason') and clarifies the batch size limit, which helps beyond the schema. The lack of enum/description for rejection_reason_id's format is minor given the reference to 'hires_list_rejection_reasons' in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (reject), the resource (applications), and the batch scope (up to 100). It distinguishes itself from the single-reject sibling (hires_reject_application) by the batch aspect, so it is easily identifiable among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the batch use case (rejecting multiple applications) and mentions 'per-item results' and 'partial success allowed', which conveys behavior but does not explicitly contrast with the single reject alternative (hires_reject_application) or state when to choose one over the other. With the sibling named 'hires_reject_application', a more explicit routing would be helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_batch_remove_from_boardsA
Destructive
Inspect

Deactivate publication of several jobs on the given boards.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobsYesJob ids
boardsNoe.g. indeed, linkedin

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal destructive and open-world behavior, and the description adds useful context by clarifying that the destructive action is specifically deactivating publication visibility on boards, not deleting jobs. Scoping the effect to 'given boards' is meaningful additional behavioral information beyond the raw destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short front-loaded sentence with no filler: it states the action, the target resources, and the scope. Every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the basic operation and the schema is well documented, but there is a notable gap: 'boards' is optional in the schema while the description implies specific boards are always given. It does not explain what happens when boards is omitted, and there is no output schema or side-effect note to fill that vacuum.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptions and an example (e.g. indeed, linkedin), so the description does not need to re-explain them. It adds no extra detail about parameter behavior, such as what an omitted boards value means, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('deactivate publication') on a specific resource ('several jobs on the given boards'), and the batch wording clearly separates it from singular siblings like hires_remove_from_job_board and the opposite operation hires_batch_publish_to_boards. It is unambiguous and immediately actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'several jobs' implies this is the batch variant, and sibling names reinforce that, but the description does not explicitly state when to choose this tool over hires_remove_from_job_board or hires_batch_publish_to_boards. There are no exclusions, prerequisites, or alternative routing cues beyond the implied batch context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_batch_remove_tagsA
Destructive
Inspect

Remove tags from up to 100 candidates; returns per-item results.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesCandidate ids
tagsYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the destructive nature (destructiveHint=true, readOnlyHint=false). The description adds useful context about the 100-candidate cap and per-item result behavior, but it does not disclose permanence, idempotency, or how nonexistent tags are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence that front-loads the action and scope, with no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive batch operation with no output schema, the agent knows the action, capacity, and a high-level return shape. Missing details include the format of tags, how partial versus total failures are communicated, and whether the 100 limit is strictly enforced per request.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: ids are documented but tags are not. The description clarifies that tags are being removed from candidates and implies the ids limit, but it does not explain what tag values should look like or any constraints on the tags array, so it only partially compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Remove tags') on a specific resource ('candidates'), includes the batch scope ('up to 100'), and announces per-item results. This clearly differentiates it from the singular sibling hires_remove_candidate_tag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The batch limit of 100 candidates implies usage for multi-candidate tag removal, and the sibling set includes hires_remove_candidate_tag as the singular alternative. However, the description never explicitly states when to choose this tool over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_cancel_all_notification_messagesA
Destructive
Inspect

Cancel all scheduled notification emails of a candidate; sent ones are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
candidate_idYesCandidate id or alias

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although annotations already declare destructiveHint=true, the description adds critical nuance: it clearly states that sent notifications are unaffected, which is a key behavioral detail that prevents misinterpretation of destructive scope. This goes beyond the simple 'cancel scheduled notifications' title and provides valuable context about what is preserved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the core action (cancel scheduled emails), the scope (all scheduled for a candidate), and a key exception (sent ones unaffected). No filler or repetition; every part earns its place, and the important nuance is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter and no output schema, the description sufficiently covers the action and its behavioral scope. It is complete enough for an agent to understand the tool's effectyahoo without additional context. However, it could briefly mention that only scheduled, not sent, notifications are affected, which it does. The lack of alternative tool guidance slightly reduces completeness, but for a simple cancel operation, it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full coverage (100%) for the single parameter `candidate_id` with its description 'Candidate id or alias'. The tool description adds no additional semantic meaning about the parameter, such as how the alias is resolved or any constraints. Since the schema carries the burden, a baseline of 3 would be expected, but the description fails to add even marginal context, so a score of 2 is warranted for lack of added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool cancels all scheduled notification emails for a candidate, and explicitly notes that sent ones are unaffected, distinguishing its scope from related operations like deleting or updating individual notification messages. However, it does not explicitly differentiate from the sibling `hires_delete_notification_message`, though the description implies a bulk cancellation versus a single delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (to cancel scheduled notifications for a candidate) but does not provide explicit guidance on when not to use it or alternatives. Given the sibling `hires_delete_notification_message`, the tool could benefit from noting that this is a bulk operation for all scheduled messages, not a per-message delete. The description is clear about the effect but lacks exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_applicationBInspect

Link an existing candidate to a job, creating an application.

ParametersJSON Schema
NameRequiredDescriptionDefault
cvNo
job_idYes
includeNoEmbed: candidate, cv.text, job
stage_idNoDefaults to the first stage
candidate_idYesCandidate id or alias

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, so this is a non-destructive write operation. The description adds no further behavioral details such as stage defaulting or side effects, which are partially covered by stage_id's schema description. It is consistent with annotations but contributes no new context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero fluff, leading with the action. It is efficiently structured and immediately conveys the core operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does not mention return values, side effects, or prerequisites beyond 'existing candidate'. The presence of siblings like hires_submit_career_application suggests a need for differentiation, which the description lacks. The nested cv object and optional include parameter are not contextualized.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description provides no parameter guidance; it relies on the schema. With 60% schema coverage, several parameters like job_id lack descriptions, and the description does not compensate for the missing semantics, such as the optional nature of cv or how include affects the response.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'Link' and the resource 'existing candidate to a job', creating an application. It is clear that this is for internal linking, not public applications, but it does not explicitly name a sibling to differentiate from hires_submit_career_application.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when an existing candidate needs to be associated with a job. It does not provide explicit context about when to choose this over alternatives like hires_submit_career_application or hires_update_application, so usage is inferred but not definitive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_candidateBInspect

Create a candidate, optionally with an application (job_id, stage_id) and resume text. Parse an attached resume yourself and pass the text via resume_text; never inline binary data.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoAlso used to resolve timezone
emailNoUsed for deduplication
phoneNo
stateNo
job_idNoCreates an application for this job
countryNoName or ISO code
profileNoProfile answers keyed by question text or question_id
stage_idNoInitial stage; requires job_id
timezoneNoIANA, e.g. America/Los_Angeles; resolved from city and country if omitted
last_nameNo
company_idNo
first_nameNo
resume_textNoPlain text extracted from the resume; stored as a text/plain attachment. No binary or base64.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false and destructiveHint=false, the description carries the burden of behavioral disclosure. It does say the tool creates a candidate and may also create an application, and it sets an expectation that binary data must not be sent, but it does not describe what happens on duplicate email, required identity fields, or likely side effects beyond those already inferable from 'create'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the core purpose and followed by the key resume-handling constraint. There is no filler or redundant overhead.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 13-parameter create operation with no output schema, the description is acceptable but not complete. It does not clarify whether candidate identity fields are mandatory, how duplicate candidates are handled, what IDs are returned, or how an application with job_id/stage_id behaves alongside the candidate creation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to job_id/stage_id by calling them an optional application group and explains that resume_text must be extracted plain text, never binary. However, with 13 parameters and 62% schema coverage, it leaves several important parameters such as company_id, last_name, phone, and state to the schema alone without additional context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action and resource clearly: create a candidate, optionally with an application and resume text. It is specific enough to separate from most sibling tools, but it does not explicitly differentiate itself from hires_create_application, since both can be tied to a job/application.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an operative instruction about passing resume_text plain text, but it provides no guidance on when to use this tool versus hires_create_application, hires_update_candidate, or other candidate-related flows. No exclusions, prerequisites, or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_companyAInspect

Create a client company; provisions its public career site (slug) and public branding (name, logo).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoCompany profile URL
logoNo
nameYes
websiteNo
company_owner_nameYes
is_staffing_agencyNo
company_owner_emailYes
company_owner_phoneNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate write activity (readOnlyHint=false) and non-destructive intent (destructiveHint=false). The description adds value by revealing specific side effects: provisioning of a public career site (slug) and public branding (name, logo). This goes beyond the generic annotations and informs the agent of the scope of effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence (16 words) that front-loads the primary action, then adds a concise elaboration on side effects. No redundancy or filler; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters (including a nested logo object), no output schema, and openWorldHint=true indicating external side effects, the description is insufficient. It does not explain parameter inputs, constraints, or outcomes beyond branding and career site, leaving significant gaps for an agent to correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 13% (few parameters have descriptions), yet the tool description only mentions 'name' and 'logo' in the context of branding. It does not clarify the required fields company_owner_email and company_owner_name, nor optional ones like website, is_staffing_agency, or the logo object's structure. The minimal hint about name/logo does not compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create a client company' with a specific resource, and distinguishes it from other create tools (e.g., hires_create_job, hires_create_candidate) by focusing on company creation. It also specifies that it provisions a career site and branding, adding operational clarity beyond a generic create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives, such as hiring_update_company for modifications or hiring_restore_company for restoration. The name and description imply it is the correct tool for creating a company, but there is no direct comparison or exclusion of alternatives, leaving the agent to infer usage from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_email_templateAInspect

Create an email template. Subject and body accept placeholders such as {{first_name}}; get the exact tags from hires_list_template_placeholders and hires_prepare_template_placeholders.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesHTML; placeholders allowed
nameYes
subjectYesPlaceholders allowed
company_idNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate this is a write operation (readOnlyHint: false) and not destructive (destructiveHint: false). The description adds value by noting that subject and body accept placeholders and points to where to get exact tags, which is a behavioral nuance beyond bare creation. However, it does not disclose side effects, required permissions, or the return value after creation, leaving some transparency gaps given the minimal annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long with no fluff. It front-loads the core purpose ('Create an email template') and then delivers the placeholder guidance in a secondary clause. Every sentence contributes information, and the structure is efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with four parameters and no output schema, the description is adequate but not complete. It explains the placeholder mechanism and directs to helper tools for exact tags, but omits any explanation of the 'name' and 'company_id' fields. It also does not mention what happens on success (e.g., return object or confirmation). Given the tool's simplicity, the gaps are moderate but could cause an agent to guess parameter semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 50% (subject and body have descriptions, name and company_id do not), the description compensates partially by clarifying that subject and body support placeholders. It does not, however, address the meaning or purpose of the 'name' and 'company_id' parameters. While subject and body are enriched, the remaining parameters are left to inference, so the description adds some but not full compensatory value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Create an email template.' The verb 'create' distinguishes it from sibling tools like hires_update_email_template and hires_delete_email_template. It also specifies the resource (email template) and hints at the placeholder feature, leaving no ambiguity about what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when creating an email template) and provides guidance on handling placeholders by referencing hires_list_template_placeholders and hires_prepare_template_placeholders. However, it does not explicitly compare with alternatives like updating or deleting templates, nor does it state any prerequisites or exclusions. The usage context is implied rather than explicitly articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_formAInspect

Create an application form, optionally attaching existing questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
questionsNoQuestion ids to attach
company_idNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a non-read-only (write) and non-destructive operation. The description adds the behavior of optionally attaching existing questions, which is useful, but it does not disclose other behavioral aspects like return value, side effects, or required permissions. Given the annotations cover the basic write nature, a score of 3 reflects the moderate additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence that front-loads the primary action and the optional attachment behavior. There is no redundant or filler text, and it is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create operation with three parameters and no output schema, the description covers the core purpose and the optional attachment but omits details about 'name' and 'company_id'. It also does not hint at the response or any creation constraints, making it only partially complete for an agent to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only the 'questions' parameter has a description). The description clarifies that 'questions' refers to existing question IDs to attach, but it does not explain 'name' or 'company_id'. Since the schema leaves these undocumented, the description fails to compensate, leaving the agent to guess their meaning or purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Create') and resource ('application form'), clearly distinguishing it from sibling tools like hires_create_application or hires_create_question. It also mentions the optional action of attaching existing questions, which adds specificity without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (creating a form, optionally with questions) but does not explicitly state when to use this tool over alternatives like hires_create_application or when not to use it. There is no mention of prerequisites or context where another tool would be preferred, leaving the agent to infer from the name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_interviewAInspect

Schedule an interview for an application. The location is matched to an existing record or created.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: candidate, application, job
end_timeYesUnix seconds, after start_time
locationNoFree text
start_timeYesUnix seconds
interviewer_idsYesInterviewer user ids

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only say the tool is not read-only and not destructive; the description adds a meaningful behavioral detail by disclosing that the location is matched to an existing record or created. That is a side effect an agent would not infer from the schema. It could still mention other effects or preconditions, but it goes beyond the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core action is front-loaded, and the non-obvious location behavior is appended in a single concise sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter mutation tool with no output schema, the description covers the core purpose and the most non-obvious behavior. It falls slightly short of complete because it does not explicitly identify `id` as the application identifier or state prerequisites like a valid existing application.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high at 83%, so most parameters are already described. The description adds real value to the location parameter, explaining that the free-text location is normalized by matching it to an existing record or creating one. It does not add much for the other parameters, but the schema already covers their meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific verb and resource: 'schedule an interview for an application.' It clearly conveys what the tool does and distinguishes it from unrelated create siblings, though it does not explicitly differentiate itself from other interview-related endpoints such as hires_get_interview or hires_list_interviews.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use this tool when an application needs an interview scheduled. However, it provides no explicit when-to-use/when-not-to-use guidance, no prerequisites such as 'the application must already exist,' and no mention of alternatives, so the guidance is thin.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_jobCInspect

Create a job. Required: status, title, description, location_country; location_city unless is_remote is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
statusYesFrom hires_list_statuses, e.g. Draft, Public
form_idNoOmitted = new form named after the job
includeNoEmbed: workflow, hiring_team, pipeline_stages
languageNoJob page locale, e.g. de-DE; null = follow the career site language. Values: hires_list_languages
is_remoteNoRemote job; with empty city, state and postal code Indeed posts it nationwide
company_idNo
salary_maxNo
salary_minNo
category_idNoFrom hires_list_categories
descriptionYesHTML allowed
workflow_idNoOmitted = new workflow named after the job
department_idNoFrom hires_list_departments
location_cityNoRequired unless is_remote; empty = nationwide remote posting on Indeed
parent_job_idNoParent job; makes this a satellite job
salary_periodNo
internal_titleNoHiring team only
location_stateNo
internal_job_idNoExternal reference id
salary_currencyNoISO code, e.g. USD
location_countryYes
education_level_idNoFrom hires_list_education_levels
employment_type_idNoFrom hires_list_employment_types
knockout_questionsNoYes/No screening questions added to the application form
ai_scoring_criteriaNoAI scoring criteria for ranking applicants
experience_level_idNoFrom hires_list_experience_levels
resume_field_statusNo
location_postal_codeNo
location_full_addressNo
location_street_addressNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false) and non-destructive behavior (destructiveHint=false). The description adds no behavioral context beyond 'Create a job,' such as side effects (auto-created form/workflow), response behavior, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero filler; the core action is front-loaded and the only additional content is a compact list of required or conditional fields. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a 30-parameter creation tool with no output schema and limited behavioral guidance. The description only covers mandatory input basics, leaving the agent without context on return values, optional-field dependencies, default side effects, or when to supply related object IDs from list_* endpoints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description restates required fields that are already in the schema's 'required' array and repeats the location_city/is_remote condition already present in the schema. With 63% schema coverage, it does not meaningfully document the remaining 11 undocumented parameters or add new semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

'Create a job' clearly states the verb and resource, and the required-field list adds a concrete scope. It is distinguishable from sibling create_* tools, though the phrasing largely restates the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as hires_update_job or hires_create_application. It does not mention exclusions, prerequisites, or scenarios where a sibling would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_job_webhookAInspect

Register an HTTPS webhook for this job's events. Returns signing_secret once; use it to verify the x-hires-signature-v2 header.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
urlYesHTTPS URL on a public host (no localhost, private or link-local IPs)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with annotations present, the description adds meaningful behavior not captured there: the signing_secret is returned only once and must be used to verify the x-hires-signature-v2 header. This is important operational information for the agent. No contradictions with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences containing only high-value information: the action, the scope, and the critical one-time secret behavior. It is front-loaded and has no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately explains the key return value (`signing_secret`), that it is returned once, and how it should be used. For a two-parameter create tool with complete schema coverage, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers both parameters at 100%, including the HTTPS-public-host restriction on `url`. The description adds no additional parameter semantics, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Register an HTTPS webhook', names the resource (a job webhook), and specifies its event scope ('this job's events'). This clearly distinguishes it from generic webhook tools like hires_create_webhook and from read/list webhook tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear contextual scoping: it is for registering a webhook for a specific job's events. It does not explicitly name `hires_create_webhook` as the alternative for non-job webhooks, but the 'for this job's events' framing is clear enough for an agent to decide when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_noteCreate noteAInspect

Create a discussion note for a candidate, with optional visibility (all or private) and @mentions that email the mentioned users.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesHTML allowed
includeNoEmbed: user (author), candidate. Pass candidate so the widget can link to the candidate profile
user_idNoAuthor; defaults to the authenticated user
visibilityNoall (default) or private
candidate_idYesCandidate id or alias
mention_user_idsNoMentioned users get an email

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a key side effect: @mentions email the mentioned users, which goes beyond the raw annotations (readOnlyHint=false, destructiveHint=false). It also mentions visibility options. While it doesn't address auth requirements or reversibility, the annotations already indicate a write operation, and the description adds the email notification behavior, which is valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the primary action first, then the optional features. It contains no filler or redundant phrasing, and every clause contributes to understanding the tool's behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with 100% schema coverage, the description covers the essential purpose and side effects. It doesn't mention required parameters (candidate_id, body) explicitly, but those are in the schema. There's no output schema to explain, and the behavior is simple. It lacks details like whether the note appears in a candidate timeline, but that's implicit from the tool's purpose. Overall, it's adequate for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a description (e.g., body allows HTML, candidate_id accepts id or alias, visibility defaults to all). The tool description summarizes these features but adds no new meaning beyond the schema. It does not explain interactions between parameters or provide context beyond what's already documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Create'), resource ('discussion note'), and target ('for a candidate'), and lists optional features (visibility, @mentions). It clearly distinguishes from sibling tools like hires_update_note and hires_delete_note by indicating this tool creates, not modifies or removes, a note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (add a note to a candidate) but provides no explicit guidance on when to choose this over alternatives like hires_update_note or hires_delete_note. It also doesn't mention any conditions or prerequisites, such as the candidate needing to exist or user permissions. The context is clear from the name, but the description itself offers no direct routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_nurture_campaignAInspect

Create a nurture campaign with ordered steps (email, sms, voicemail, move_to_next_stage, assign_tag, assign_task), optionally triggered by a workflow stage.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesExecuted in order. Each field names the step types that use it and whether it is required there.
titleYes
stage_idNoStage that triggers the campaign
timezoneNoIANA timezone, e.g. America/New_York
company_idNo
delay_timeNoDelay before the first step, seconds (max 86400); wins over relative_days + relative_time if both are sent
send_to_allNoSend to all candidates in the stage, not only new ones (default false)
workflow_idNoWorkflow the campaign is bound to
relative_daysNoDays after the trigger for the first step; use with relative_time
relative_timeNoTime of day for the first step, seconds from midnight
response_move_to_stage_idNoStage to move a candidate to when they reply

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is not read-only (readOnlyHint: false) and not destructive (destructiveHint: false), so the description doesn't need to repeat that. It adds minimal behavioral context beyond the annotation, mentioning the ordered nature of steps and the optional trigger, but does not disclose side effects, prerequisites, or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that immediately identifies the action and key characteristics. Every word earns its place, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (nested steps array, 11 parameters, no output schema), the description is relatively thin. It conveys the core concept but does not explain return values, prerequisites, or the interplay of scheduling parameters. The comprehensive schema mitigates this, but for a creation tool of this complexity, more context would help an agent avoid missteps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (82%), so the baseline is 3. The description adds value by stating that steps are 'ordered' and listing the step types, which clarifies the array semantics beyond the schema's individual field descriptions. However, it does not explain the many optional top-level parameters (timezone, delay_time, etc.) or the required fields, relying on the schema to carry that load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a nurture campaign and enumerates the specific step types it supports, which distinguishes it from sibling tools like update, delete, and list. It also mentions the optional workflow-stage trigger, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the creation variant by using 'Create' and listing step types, which is clear enough for an agent to select it over update/delete/list. However, it does not explicitly state when not to use it or name alternatives, leaving the usage guidance to be inferred from the tool name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_questionCInspect

Create a reusable question; options apply to select/multiselect types.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
typeYesFrom hires_list_question_types
optionsNoAnswer options for select/multiselect types
company_idNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a useful behavioral constraint (options only apply to select/multiselect types) beyond the annotations. However, it does not disclose other behaviors like idempotency, permission requirements, or what happens on duplicate creation. Annotations already indicate a non-read-only operation, so the description adds some value but not extensive transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the main action and constraint. It is appropriately concise with no wasted words, though it could include more context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with no output schema, the description omits return behavior or success indicators. It does not mention company_id requirements or any caveats beyond the options constraint. Given the tool has four parameters and two are undocumented, the description is incomplete for a fully informed call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents options with the same note, so the description adds little for that parameter. It does not compensate for the undocumented parameters text and company_id (50% schema coverage). The type parameter's guidance to list_question_types is not repeated in the description, and no additional semantics are provided for the remaining params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create a reusable question') and adds a clarifying constraint about options. It is clear but does not explicitly differentiate from other create_* tools like create_form or create_application, though the resource name makes it unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as update_question or list_questions. There is no mention of exclusions, prerequisites, or scenarios where another tool is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_create_webhookAInspect

Create a company-scoped webhook. signing_secret is returned once; use it to verify the x-hires-signature-v2 header on deliveries.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompany id
urlYesHTTPS URL on a public host (no localhost, private or link-local IPs)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only (readOnlyHint=false) and non-destructive (destructiveHint=false), so the mutation nature is known. The description adds one useful behavior: the signing_secret is returned once and must be used for verification. It does not disclose that the webhook is company-scoped is already in description, but it does not mention what happens on duplicates, permissions, or whether the secret is in output (no output schema). It adds slight value beyond annotations but not rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero redundancy. The main purpose is stated first, then a critical security note. Every word is functional. Perfectly sized for a 2-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with low complexity, and the annotations cover safety (non-destructive mutation). The description covers the creation purpose and the secret behavior. However, it does not specify the return format (no output schema) beyond the secret, and does not mention error cases (e.g., duplicate URL) or permissions. Given the low complexity, it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: both id and url have descriptions. The description adds a constraint that the URL must be HTTPS on a public host (already in schema for url) and that the signing_secret is returned once. The description ties the id to the company scope, which is not in the schema's id description. This adds meaningful context for the id parameter beyond the bare 'Company id'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it creates a company-scoped webhook)Skip over the clear verb 'Create' and the resource 'company-scoped webhook.' It distinguishes from create_job_webhook (which is job-scoped) but does not explicitly name that sibling; the distinction is implied by the scope. It is clear enough for an agent to identify it among the many create_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context: when creating a company-scoped webhook, but it does not explicitly state when to choose this over create_job_webhook or list/delete/rotate webhooks. It states the purpose, but there is no explicit 'use this when...' or comparison. It provides practical guidance (signing_secret) for post-creation, but not usage alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_applicationB
Destructive
Inspect

Permanently delete an application.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly says 'Permanently delete', which reinforces the destructiveHint=true annotation and adds the nuance of irreversibility. This is meaningful context beyond the bare annotation, but there's no mention of side effects (e.g., associated data) or permission requirements. The bar is lower with annotations present, and this clears it but doesn't go further.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three words, front-loaded with the verb and irreversibility. Zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The operation is destructive and permanent, and the description communicates that, but it omits any context about side effects (e.g., whether related records are cascaded, whether this is irreversible after a grace period, or what the response is). A one-line description of a destructive tool leaves the agent without guidance on preconditions or consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema exposes only 'id' with no description flags, and the description does not elaborate beyond the obvious implication that the id targets an application. With schema description coverage at 0%, the description should compensate but does not – it never tells the agent what id refers to, how to obtain it, or any validation constraints. The single parameter is barely self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Permanently delete') and identifies the resource ('an application'), making it clear what the tool does. It distinguishes itself from sibling delete tools by specifying the target resource, though it doesn't clarify whether 'application' refers to a job application or an applicant record.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus related siblings like hires_advance_application, hires_batch_reject_applications, or hires_update_application. An agent must infer that deletion is for removing an application entirely, with no mention of prerequisites or consequences.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_candidateA
Destructive
Inspect

Permanently delete a candidate.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, so the description's mention of 'Permanently delete' reinforces the destructive nature. It adds a slight nuance by saying 'permanently', indicating irreversibility, but it doesn't disclose other behavioral aspects like cascading effects on related data (e.g., applications, notes) or whether authentication is required. Since annotations cover the core hint, the description's value is limited but not redundant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff. It front-loads the core action and permanence, making it immediately clear. Every word earns its place, and there is no unnecessary content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has only one parameter, a clear schema, and a straightforward purpose, the description is adequate. It doesn't include return value details, but there is no output schema, and for a delete operation, the return is likely a simple success response. The description covers the essential intent and destructive nature, which is comprehensive enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage for the single parameter, id, with a clear 'Candidate id or alias' description. The description of the tool adds minimal value to the parameter, but the schema already provides sufficient meaning. The baseline for high coverage is 3, and the description's 'candidate' context aligns with the parameter description, earning a slight boost to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Permanently delete a candidate' clearly states the action (delete), the resource (candidate), and the permanence aspect, which distinguishes it from other operations. It is specific and unambiguous, and sibling tools that also delete (e.g., hires_delete_application) are distinguishable by the resource name in the title and description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that the tool is for deleting a candidate permanently, which is a clear use case. However, it does not provide explicit guidance on when to use this tool versus alternatives, such as disqualify_candidate or remove_candidate_tag, which might be less destructive. It also doesn't mention any prerequisites, but the directness of the purpose helps. This is a basic but not comprehensive guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_companyA
Destructive
Inspect

Soft-delete a company; its public career site goes offline.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true and readOnlyHint=false, but the description adds valuable nuance: it's a soft-delete (implying reversibility) and explicitly notes the public career site goes offline. This goes beyond the annotation flags and clarifies the nature of the destructive action. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action ('Soft-delete a company') and adds a relevant consequence. There is no wasted wording, and it is immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with no output schema, the description covers the core behavior and a key side effect. It implies reversibility via 'soft-delete' but doesn't explicitly mention that restore is possible or what happens to associated data (jobs, candidates). Given the minimal complexity, this is largely sufficient, though a note on the permanent/restorable nature would make it more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'id' with zero description coverage. The description does not mention the parameter at all, leaving its meaning (the company's identifier) to be inferred from the tool name. With 0% schema coverage, the description should compensate, but it fails to explain what 'id' refers to or any constraints (e.g., must be an existing company).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('soft-delete') and resource ('company'), and adds a concrete consequence ('its public career site goes offline'). This clearly distinguishes it from other delete tools targeting different resources, and the 'soft-delete' nuance differentiates it from a hard delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (delete a company) but doesn't explicitly state when to use this versus alternatives, nor any prerequisites or exclusions. It doesn't mention that a hard delete or permanent removal might be handled elsewhere, nor does it reference the restore_company sibling. The context is inferred from the name and 'soft-delete' but not explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_email_templateA
Destructive
Inspect

Soft-delete an email template; automations that used it cannot pick it for new actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is covered. The description adds value by specifying 'soft-delete' and the automation consequence, which goes beyond the annotations and clarifies the exact side effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero wasted words. It states the primary action and a key consequence efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation with one parameter and no output schema, the description covers the essential behavior and a notable side effect. It lacks details on return value or error conditions, but these are not critical for a soft-delete tool and are partially covered by annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single 'id' parameter, so the description carries the burden of explaining what id refers to. It does not mention id at all, leaving the agent to infer it is the email template id from context. This is a minimal gap given the obvious parameter name, but it still fails to compensate for the lack of schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (soft-delete) and resource (email template), and adds a distinguishing behavior: automations that used it cannot pick it for new actions. This makes it unambiguous compared to other delete tools like hires_delete_form or hires_delete_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is given. It does not mention alternatives (e.g., using update_email_template to disable instead of delete) or any prerequisites. The usage context is only implicit from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_formB
Destructive
Inspect

Delete an application form.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already flag this as destructive, so the description adds no behavioral detail beyond that. It does not mention whether deletion is permanent, whether it cascades to related data, or whether any confirmation or special permissions are required. With destructive operations, such context would be valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence that is immediately understandable and front-loaded with the action and object. There is zero redundant wording or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive operation, the description plus annotations cover the essential action and risk. However, there is no mention of return behavior, irreversibility, or any effects on related application data, which would improve completeness for an agent deciding whether to call this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required id parameter with no description, and the description names the resource but not the field. However, with only a single numeric id parameter, meaning is inferable: the id identifies the application form to delete. The description provides minimal added value beyond the schema, but the low parameter count limits the need for elaborate explanations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete an application form' clearly states the action and the resource being acted onhol. It distinguishes this from the many sibling tools by specifying the resource (application form) and the destructive action. It is more specific than the bare tool name, though it does not elaborate on what 'form' refers to beyond the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives like update_form or get_formhol. The description is just a single phrase with no context, prerequisites, or caution about when deletion is appropriate. In a large sibling list, this is a notable gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_jobC
Destructive
Inspect

Delete a job.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true. The description merely repeats 'Delete a job' and adds no extra behavioral context such as irreversibility, cascade effects, permission requirements, or whether deletion can be undone. It does not contradict the annotations but contributes no additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence with no wasted words and the action is front-loaded. It is appropriately terse for a single-parameter delete tool, though it sacrifices informative detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no output schema, the description is minimally acceptable but lacks details about deletion semantics such as permanence, side effects, or success response. The annotations and complete parameter schema make the tool callable, but the description alone leaves some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the id parameter is already documented as 'Job id or alias.' The tool description adds no additional parameter semantics beyond targeting a job by id. With high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action verb and resource: 'Delete a job.' This distinguishes it from sibling delete_* tools because the resource is named. However, it essentially restates the tool name and title without adding any scope or nuance, so it does not reach a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to delete a job versus alternatives like updating it, closing it, setting its status, or other lifecycle operations. No conditions, exclusions, or sibling comparisons are provided. The agent must infer usage solely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_job_webhookC
Destructive
Inspect

Delete a job webhook.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
webhook_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond what annotations already provide. Annotations include destructiveHint=true, and the description says 'Delete', which aligns but adds nothing new. It does not mention permanence, side effects, or prerequisites. With annotations covering the destructive nature, a score of 2 reflects the lack of additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence and is extremely concise. It is front-loaded and easy to parse. However, it is so terse that it sacrifices valuable information that could fit without bloat, so it is not perfect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool, the description is insufficient. It lacks usage guidance, parameter semantics, and behavioral context beyond the action. An agent would not know the relationship between 'id' and 'webhook_id' or any consequences of deletion. The absence of an output schema and the minimal description leave important gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 50%, with only 'id' documented as 'Job id or alias' and 'webhook_id' having no description. The tool description does not explain either parameter, so it fails to compensate for the missing webhook_id semantics. The name hints at webhook_id being a webhook identifier, but that is implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete a job webhook' clearly states the action (delete) and the resource (job webhook). It is specific enough to distinguish from general webhook tools like hires_delete_webhook, though it doesn't explicitly call out that distinction. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention that this is for job-specific webhooks, nor does it reference sibling tools like hires_delete_webhook or hires_rotate_job_webhook_secret. An agent would have to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_messageB
Destructive
Inspect

Cancel a scheduled message before it is sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=trueabb. The description adds that it targets scheduled messages and must occur before sending, providing useful behavior context. No details on idempotency or error behaviors beyond the annotation safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One clear sentence, front-loaded with the verb and subject. No filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter destructive operation, the description plus annotations are mostly sufficient. The 'before it is sent' constraint clarifies the primary edge case that gates the operation. Missing details about failure when the message is already sent, but the phrasing implies the limitation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has one parameter (`id: integer`) with zero description coverage (0%). The description never mentions the parameter, so an agent must infer that `id` refers to the scheduled message ID. Minimal compensation for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('Cancel') and resource ('a scheduled message'), distinguishing it from sibling delete tools like hires_delete_notification_message. The qualifier 'before it is sent' adds scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (only for scheduled messages that haven't been sent), but it doesn't explicitly contrast it with alternatives like hires_delete_message vs hires_delete_notification_message. It provides context but no explicit exclusion or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_noteB
Destructive
Inspect

Delete a note.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations clearly indicate destructiveHint=true, so the description does not need to re-state that it's destructive. The description adds no further behavioral context beyond that, such as irreversibility or side effects on related data. Given the annotation coverage, this is acceptable but could be improved by noting that deletion is permanent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one short sentence), which is appropriate for a simple delete operation. It front-loads the action and resource. No fluff, but also no additional valuable context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with one parameter accruing to a well-known resource (note), the description is arguably sufficient. However, it lacks any mention of what a 'note' is or how it is identified, and with no output schema, the agent has no info on success/failure response. Given the sibling list includes many other delete tools, a small clarification could help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the parameter 'id', and the description does not explain what 'id' refers to (probably the note's ID). The agent must infer that 'id' is the primary key of the note to delete. With no param info in the description, and schema lacking descriptions, this is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete') and a resource ('a note'), which clearly matches the tool's name and distinguishes it from the many sibling tools that operate on different resources (e.g., delete_application, delete_candidate). However, the description is minimal and doesn't provide additional context about what a 'note' is, but the name alone is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks any guidance on when to use this tool versus others. There is no mention of prerequisites (e.g., note must exist) or whether it can be deleted only under certain conditions. No alternatives are mentioned, but given the destructive nature, the user might need to confirm intent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_notification_messageA
Destructive
Inspect

Cancel a scheduled notification email; sent messages cannot be canceled.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive Hint=true and readOnlyHint=false. The description adds the non-obvious boundary that only scheduled messages are cancelable, which is material behavior not present in structured fields. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise, front-loaded sentence with no filler. The core action and the critical constraint are both included without redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive tool, the description covers the essential context: scheduled emails can be canceled, sent ones cannot. There is no output schema, and the example-like omission is minor; it does not need to explain return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and no parameter documentation, the description provides little direct meaning for the `id` parameter. It is implicitly the identifier of the scheduled notification, but the description never explicitly states that the parameter represents the notification to cancel.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('cancel') on a specific resource ('scheduled notification email'), and the follow-up clause clarifies that sent messages are out of scope. This distinguishes it from general deletion tools like hires_delete_message and from batch cancellation like hires_cancel_all_notification_messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly identifies the target case (scheduled notification emails) and an explicit exclusion (sent messages cannot be canceled). Though it does not name alternative sibling tools, the when-to-use condition is explicit enough for an agent to select it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_nurture_campaignC
Destructive
Inspect

Soft-delete a nurture campaign; running executions stop.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true and readOnlyHint=false, indicating a write operation. The description adds useful behavioral context: 'soft-delete' implies recoverability Secretly may not be true, and 'running executions stop' discloses the immediate side effect. These are beyond the annotations. However, it does not clarify whether the deletion is reversible, what happens to associated data, or if any cascading effects occur. A 3 is appropriate because the soft-delete distinction adds value but not enough detail about the full behavioral impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, highly concise and front-loaded with the primary action. The behavioral effect is included immediately after the action. There is no wasted wording; every word adds clarity. It is appropriately sized for a simple tool with one parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a delete operation with one parameter and no output schema, the description is minimal. It does not mention return behavior (likely success/failure), error conditions (e.g., invalid id), or irreversible consequences. It also does not specify whether the operation is idempotent or what happens to ongoing executions in detail. The annotations cover destructiveness, but the description is too sparse to be considered fully complete for an agent to use without additional assumptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. The only parameter is 'id' (number), but the description does not explain what 'id' refers to (likely the campaign ID) or whether it is required (though schema says required). The description does not add any detail about the parameter beyond what is in the schema, leaving an agent to guess the id's purpose. Since coverage is 0%, the description fails to provide the minimal clarification that 'id' is the nurture campaign identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('soft-delete') and the resource ('nurture campaign'), and it is distinguished from the many other delete tools by specifying the exact resource type. It also notes a side effect ('running executions stop'). However, the term 'soft-delete' is specific and adds clarity, though it does not explicitly distinguish from the other delete tools beyond the resource type, which is sufficient given the naming convention.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when you need to soft-delete a nurture campaign) but provides no guidance on when not to use it or alternatives. For instance, it does not mention whether there is a hard delete option or if there are prerequisites (e.g., campaign must be paused). The 'soft-delete' implies reversibility but does not explain how to undo it, which could mislead an agent into thinking deletion is permanent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_questionB
Destructive
Inspect

Delete a reusable question from the catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true. The description adds 'reusable question' and 'catalog' context, but does not disclose consequences of deletion (e.g., irreversible removal, impact on job postings using the question). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler; front-loaded action verb and clear object. Efficient and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive action, the description plus annotations is minimally sufficient. However, it lacks details about deletion semantics (permanence, cascading, access requirements) and does not identify how to obtain the id, leaving a moderate gap in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% – the description does not explain the 'id' parameter, how to obtain it, or any constraints (e.g., cannot delete in-use questions). The parameter is self-explanatory but the description does not compensate for missing schema parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Delete a reusable question from the catalog.' It clearly identifies the action and object, distinguishing it from related get/update/list tools. However, it doesn't explicitly contrast with other delete-family tools, though the question-specific scope is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as update_question or delete_form. The context is implicit for a delete operation, but there is no mention of prerequisites, effects on dependent data, or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_delete_webhookB
Destructive
Inspect

Delete a company-scoped webhook.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompany id
webhook_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the description's 'Delete' aligns with that. However, the description adds no context about irreversible effects, required permissions, or what happens to associated data. It merely restates the destructive nature already captured by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no filler. It states the essential action and scope, making it appropriately concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation, the description is adequate but minimal. It does not mention how to obtain the webhook_id (e.g., via list_webhooks), any prerequisites, or explicitly differentiate from the job-webhook deletion tool beyond the scope word. Given the tool's simplicity and the annotations covering destructive intent, this is a borderline acceptable level of completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only 'id' has a description). The description adds no parameter information at all; it does not explain that 'webhook_id' identifies the webhook to delete or clarify the relationship between the two parameters. The description fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete') and a clearly scoped resource ('company-scoped webhook'). This distinguishes it from sibling hires_delete_job_webhook, which targets job-scoped webhooks, so the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like hires_delete_job_webhook or when not to use it. The only hint is the phrase 'company-scoped', which implies the scope but does not explicitly route the agent away from job-scoped webhooks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_disqualify_candidateB
Destructive
Inspect

Reject all active applications of a candidate; returns the affected application ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
reasonsNoRejection reason ids from hires_list_rejection_reasons

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint: true)Skip. The description adds that it affects all active applications and returns affected ids, which clarifies side effects, but it doesn't mention reversibility, permissions, or impact on related entities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence: action first, object second, return value third. No redundant phrasing or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with a direct description, the essential semantics are clear: what it doesaint, what it operates on, and what it returns. It lacks explicit edge-case guidance (e.g., what if candidate has no active applications) but this is minor given the simple interface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description doesn't need to repeat parameter meanings. It does add the scope clarification ('all active applications') and return value, which go slightly beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (reject), the resource (active applications of a candidate), and the scope (all active). It distinguishes this from individual rejection tools like hires_reject_application, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as hires_reject_application or hires_batch_reject_applications. The intended use case must be inferred from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_download_attachmentA
Read-only
Inspect

Download an attachment (resume, candidate or application file, mail attachment, call recording) by the url another tool returned. Returns file_name, mime_type, size and base64 data; files over 25 MB are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute url from another tool's response; must be on the 100Hires API host

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark it read-only and non-destructive, so the safety profile is known. The description adds useful behavioral context beyond the annotations: the 25 MB rejection limit, the returned fields (file_name, mime_type, size, base64 data), and the set of accepted attachment types. No potential contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two succinct sentences with the core action and source first, followed by the return value and limit. No fluff or redundant explanation; every clause contributes either to what you get or what breaks the call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single parameter and no output schema, the description is fairly complete: it states the URL source, the allowed content types, the return fields, and the file size constraint. The only minor gap is that the host restriction is left to the schema, but since the schema is structured and present, the description closes most of what an honest tool would need to be called correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already gives 100% coverage by describing the url parameter as an absolute URL from another tool's response, restricted to the 100Hires API host. The description's phrase 'by the url another tool returned' simply repeats that without adding extra detail, so it does not bring value over the structured schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action—download an attachment—and clearly identifies the resource: attachments like resumes, candidate/application files, mail attachments, or call recordings. It also distinguishes itself from getters and uploads by pointing out it consumes a URL returned by another tool, which makes its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells exactly when to use it: when you have a URL from another tool that you want to download as file data. It does not name a sibling alternative or state when not to use it, but the input condition is specific enough to make the call context clear, so only the exclusion/alternative mention is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_ai_scoreA
Read-only
Inspect

Get the AI score of an application with per-criterion scores, justifications and follow-up questions; null score until scored.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral context beyond annotations by noting that the score is 'null until scored', and describes the return structure (per-criterion scores, justifications, follow-up questions). This goes beyond the annotations, so a 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and states return contents and null behavior. There is no waste; every clause contributes essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter tool, annotations for read-only safety, and no output schema, the description is nearly complete. It covers the purpose, return contents, and null-score state. It does not explicitly mention error handling for an invalid ID, but that is standard for a getter and not required. The description sufficiently equips an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only a single 'id' field with no description (0% coverage), so the description must clarify its meaning. While it does not explicitly state 'id is the application ID', the phrasing 'Get the AI score of an application' makes it clear that the single parameter refers to the application. This adds meaning beyond the bare schema, justifying a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb ('Get') and resource ('AI score of an application'), and enumerates the return contents ('per-criterion scores, justifications and follow-up questions'). It effectively distinguishes from the sibling 'hires_get_evaluation' by narrowing to the AI score specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when you need the AI score) but does not explicitly mention alternatives or exclusions. No guidance is given on when not to use it (e.g., if you need a human evaluation, use hires_get_evaluation instead). The usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_applicationA
Read-only
Inspect

Get an application with its stage, status and rejection context.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: candidate, cv.text, job

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the specific fields returned (stage, status, rejection context), which is useful but not rich behavioral context like pagination or side effects. It does not contradict annotations, and the read-only nature is adequately communicated by both.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the verb and resource, with no unnecessary words. It efficiently conveys the purpose and key output without wasting tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no output schema, the description covers the primary purpose and the fields returned. However, it does not clarify whether the full application object is returned or only the mentioned fields, and it omits any mention of the 'include' parameter behavior. An agent might have minor ambiguity about the exact response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: the 'include' parameter is described in the schema, while 'id' is not. The tool description does not add any parameter information beyond what the schema provides. Since the description does not compensate for the missing 'id' description, but 'id' is self-explanatory, a score of 3 is appropriate as the baseline for medium coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource ('Get an application') and specifies the key fields returned (stage, status, rejection context), making the tool's purpose unambiguous. It is distinct from other get_* siblings because it targets applications specifically, and the listed fields differentiate it from generic application retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (retrieve a single application by ID) but does not explicitly mention when to use it versus alternatives like hires_list_applications or hires_get_candidate. There is no explicit exclusions or named sibling for comparison, so guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_billingA
Read-only
Inspect

Get billing and feature flags of the current company.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds the specific resource (billing and feature flags) but does not disclose any additional behavioral traits such as response format, errors, or rate limits. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the action and object. There is no wasted wording, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (no params, no output schema, read-only annotations), the description is adequate. It clarifies the scope ('current company') and what is returned. It could mention what feature flags are or typical response fields, but for a minimal getter, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema covers everything. Baseline for zero params is 4. The description does not need to add param info, and it correctly implies that no arguments are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb 'Get' and the resource 'billing and feature flags of the current company'. This is clear, unambiguous, and distinguishes it from sibling getters like hires_get_company or hires_get_career_site_settings by focusing on billing and feature flags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: to retrieve billing and feature flags. However, it provides no explicit guidance on when to use it versus alternatives, nor does it mention any context or prerequisites. It is not misleading but lacks explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_candidateGet candidateA
Read-only
Inspect

Get a candidate with application summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true and destructiveHint=false, indicating a safe read operation, which is consistent with the description. The description adds the detail about application summaries, which is useful but does not disclose other behaviors like pagination or full data scope. Since annotations cover the basic safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that effectively communicates the tool's purpose without any fluff. It gets straight to the point, and every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with one parameter and clear annotations, the description is largely sufficient. The mention of application summaries gives useful context about what the response will include, though it does not detail other fields. Given the simplicity, a 4 is justified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the 'id' parameter fully with data type and description, so schema coverage is 100%. The description does not add additional parameter semantics beyond what the schema provides; thus, it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get a candidate with application summaries' clearly states the verb and resource and adds some detail (application summaries). It distinguishes it from siblings like hires_get_candidate_resume, but it does not explicitly clarify its scope compared to hires_list_candidates. Hence 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It is clear from the description that this tool is for fetching a single candidate's information, implying use when you need a specific candidate's details. However, it does not explicitly state when not to use it or name alternatives like hires_get_candidate_resume or hires_list_candidates, so guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_candidate_resumeA
Read-only
Inspect

Get a candidate's primary resume: uuid, download url, file metadata, type. include=text_content adds the parsed plain text.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
includeNotext_content: add the parsed plain text

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds the specific return fields and the optional include parameter, which is useful context. However, it doesn't elaborate on behavior like pagination, file size limits, or error conditions. Given the annotation coverage, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that leads with the resource and action, then lists the return fields and optional extension. No filler or redundancy. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with annotations confirming safety and no output schema, the description explains what is returned (including the download URL and optional text content), which is sufficient for an agent to invoke and interpret the result. It does not mention edge cases like missing resumes, but those are unlikely to be critical given the tool's scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage: both id ('Candidate id or alias') and include ('text_content: add the parsed plain text') are described in the schema. The description reiterates the include effect without adding new meaning. Thus it meets the baseline for full schema coverage but does not go beyond.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('candidate's primary resume'), and lists the exact fields returned (uuid, download url, file metadata, type). It is clearly distinct from generic file tools like hires_list_candidate_files or hires_download_attachment, so an agent knows exactly what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use it – to fetch a candidate's primary resume. It does not explicitly mention alternatives or when not to use it, but the context is strong enough that an agent can infer it is for resume retrieval specifically, not general attachments. No exclusions are stated, but the narrow purpose makes it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_career_jobA
Read-only
Inspect

Get a public job with salary, education and experience levels; 404 for draft, archived or internal jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
company_slugYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds valuable context: it returns 404 for draft, archived, or internal jobs, and specifies the fields included. This goes beyond what annotations provide, though it does not describe other behaviors like response structure or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence that leads with the core action and immediately conveys the key differentiator (public) and the edge-case behavior (404). There is zero redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get tool with two clear parameter names, the description captures the main behavioral nuance (404 for non-public) and the included fields. However, the lack of any parameter guidance and no mention of the response shape leaves a notable gap, even though the tool is simple and the annotations cover safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not mention either parameter (company_slug or id) at all. Since the description is the only source of guidance for parameters, its complete omission is a significant gap. The schema only gives types, so the agent has to infer the meaning from the names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and a resource ('public job'), and explicitly names the returned fields (salary, education, experience levels). It also distinguishes itself from sibling hires_get_job by adding the 'public' qualifier and the 404 behavior for non-public jobs, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is for public jobs but does not explicitly say when to use it versus alternatives like hires_get_job or hires_list_career_jobs. It lacks a clear 'when not to use' or a pointer to sibling tools, so the agent must infer the distinction from the term 'public'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_career_site_settingsA
Read-only
Inspect

Get career site settings: language is the locale the public site renders in (null = en-US); a job may override it with its own language field.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idNoOmit for the API key's own company

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is set. The description adds valuable behavioral semantics: null defaults to en-US and a job may override this language. This helps the agent understand what the returned 'language' means and that it is not always the effective language for a given job, which is useful beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is an idea of length: one opening statement and one clarifying clause about the language field. No filler words, fully front-loaded. It says the data is trimmed exactly to what matters, making it an especially lean definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with one optional parameter and no output schema, the description covers the primary purpose and the only critical nuance (language default and override). An agent could invoke this correctly and understand the returned data's semantics without needing to see additional documentation. It is comprehensive for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the sole parameter company_id already has a clear description: 'Omit for the API key's own company.' The field description adds no new information about this parameter. The description's value is about the return value, not the input, so it does not elevate the parameter scoring.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get career site settings'. It then clarifies the meaning of the language field ('the locale the public site renders in') which is distinct from other get tools like hires_get_career_job or hires_list_career_jobs. The null=en-US detail makes it unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context that the language is the default for career sites and that individual jobs may override it, which tells the agent when this tool alone is sufficient versus needing job-specific language. However, it does not explicitly name alternatives like hires_update_career_site_settings or list jobs, so it falls short of the highest bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_companyA
Read-only
Inspect

Get a company profile with owner details.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the response includes owner details, which is useful, but it does not disclose response shape, error behavior, or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or repetition. Every part contributes information about the operation or its result.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter read operation with safety annotations, the description is nearly sufficient. It tells the agent what it will receive, and the only meaningful gap is the lack of usage guidance already scored separately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the burden of explaining the 'id' parameter, but it does not. The parameter's meaning is recoverable from the tool name and required id, but the description adds no explicit clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get a company profile', and adds the meaningful scope 'with owner details'. It is clearly distinguishable from sibling get tools and from list/create/update/delete company operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool versus alternatives, nor does it provide any exclusion or alternative guidance. The intended use is only implied by the tool name and generic wording.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_email_templateB
Read-only
Inspect

Get an email template with its subject and body.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations providing readOnlyHint=true and destructiveHint=false, the description only needs to add extra behavioral context. It mentions the return includes subject and body, which is useful. However, it doesn't add details like error behavior for non-existent IDs, or any special fields. Given annotations cover safety, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It states the core action and the key output (subject and body) efficiently. It is appropriately concise for a simple getter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no output schema), and annotations cover read-only nature. The description is sufficient for basic invocation. However, it could have mentioned that the returned template might have other fields beyond subject and body, or noted common use cases. Sibling tools like 'hires_prepare_template_placeholders' suggest templates have placeholders, but this isn't mentioned. Still, for a basic getter, it's reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has one parameter 'id' at 0% description coverage. The description doesn't explain what 'id' refers to (template ID) or that it is required. Since there is only one parameter, the name 'id' is somewhat self-explanatory, but the description could have clarified it is the email template ID. Baseline 3 is fair.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'email template', and specifies it returns subject and body. It distinguishes from siblings like 'hires_list_email_templates' (which lists templates) and 'hires_create_email_template' (which creates). However, it doesn't explicitly mention that it's a single-template retrieval by ID, which is obvious from the name but not fully articulated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It doesn't mention that for a list of templates you should use 'hires_list_email_templates', or for creating a template use 'hires_create_email_template'. The description assumes the agent knows to use this for getting a single template by ID, but does not state that explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_evaluationB
Read-only
Inspect

Get a filled evaluation form: evaluator, summary score and text, answers.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about what the response contains (evaluator, summary score/text, answers) but says nothing about auth, errors, or missing-evaluation behavior. The added content detail justifies a moderate score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact, front-loaded sentence with no filler. The main payload fields are listed efficiently after the colon, making the description easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple get-by-id tool with annotations covering the safety profile, and the description usefully outlines the return contents. However, with no output schema, it omits any explanation of what 'id' refers to, how to obtain it, or the exact response shape, leaving a few gaps for an agent invoking it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the undocumented 'id' parameter, but it never clarifies that 'id' refers to the evaluation ID or how to obtain it. The parameter is inferable from the resource name, but the description adds no semantic value beyond the schema's bare field name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get'), a clear resource ('filled evaluation form'), and enumerates the returned contents (evaluator, summary score and text, answers). It is clearly a read operation, though it does not explicitly distinguish itself from the sibling list_application_evaluations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the singular/listing alternatives such as hires_list_application_evaluations or hires_submit_feedback. The singular phrasing implies retrieving one evaluation, but no conditions, alternatives, or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_formB
Read-only
Inspect

Get a form with its questions and their statuses.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the return includes questions and statuses, which is useful, but it does not disclose any other behaviors such as error cases or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler. It front-loads the core purpose and is highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of return expectations. It states that questions and statuses are included, but leaves the exact structure and semantics of 'statuses' undefined. For a simple get operation, this is adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the single 'id' parameter, and the description does not explicitly explain that 'id' refers to the form identifier. The phrasing 'a form' implies it, but the description does not compensate for the schema's lack of detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get) and resource (a form), and adds that it includes questions and their statuses. This distinguishes it from list_forms (plural) and get_question (single question), though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus siblings like list_forms or get_question. It implies a single-form fetch but does not state conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_interviewB
Read-only
Inspect

Get an interview by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: candidate, application, job

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description's 'Get' operation is consistent with these hints and adds nothing contradicting or beyond them, so a baseline score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of a single six-word sentence that leads with the core action and object. There is no filler, redundant wording, or episodic content, achieving maximum informational density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward get-by-id tool with annotations covering the read-only safety profile, the description is minimally sufficient to allow invocation. However, it does not elaborate on the expected response shape, possible error conditions, or the behavior of the 'include' parameter, which leaves the agent partially reliant on external knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 50%, the description compensates somewhat by clarifying that 'id' is the identifier used to fetch the interview. The 'include' parameter already has a schema description ('Embed: candidate, application, job'), so the description provides minimal but sufficient added meaning for the undocumented id field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action ('Get') and the resource ('interview'), plus the selection mechanism ('by id'). It is not a tautology and provides a clear, specific purpose, though it does not explicitly distinguish itself from sibling tools like hires_list_interviews or hires_list_candidate_interviews beyond the implied single-item vs. list difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, when to prefer listing interviews instead, or any contextual hint beyond the basic 'Get by id' operation, leaving the agent to infer usage on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_jobGet jobB
Read-only
Inspect

Get a job by id or alias.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
includeNoEmbed: workflow, hiring_team, pipeline_stages

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, and the description 'Get a job by id or alias' is consistent with these, showing no contradiction. However, the description adds no extra behavioral context beyond the annotations (e.g., whether includes expand the response or if authorization is needed), so the burden is satisfied but only at a baseline level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence 'Get a job by id or alias.' with zero redundancy. It is front-loaded with the core action and the lookup key. There is no filler or ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple GET tool with annotations already covering read-only safety and a fully documented schema, the description is sufficiently complete. The omission of explicit return-value details is minor, but the tool information is complete enough for an agent to invoke it correctly, though it could mention that the response is the job object or that the 'include' param controls embedded data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameters are already fully described by the schema ('id: Job id or alias'; 'include: Embed: workflow, hiring_team, pipeline_stages'). The description adds no extra parameter semantics, but because the schema carries the full load, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb 'Get' and resource 'job' with lookup identifier 'id or alias'. It is clear and unambiguous, but does not explicitly differentiate from similar siblings like hires_get_career_job or hires_list_jobs, so it loses some points for lack of sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It does not mention 'use list_jobs to find multiple jobs' or name a specific alternate, and there is no mention of exclusions or preconditions. The use case is merely implied by the phrase 'by id or alias'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_messageA
Read-only
Inspect

Get a scheduled message with sender account, schedule timestamps and cancelability.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat safety. It adds value by disclosing that the response includes sender account, schedule timestamps, and cancelability, which gives context about the return data. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is concise, front-loaded with the action, and includes the key return fields. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get operation with one parameter and no output schema, the description covers the return content but omits any explanation of the input parameter ('id'). It also does not mention potential error cases or the meaning of cancelability, though these are not critical. The missing parameter description is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate, but it does not mention the 'id' parameter at all. It does not explain that the tool retrieves a message by ID, leaving the agent without semantic context for the single required input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('scheduled message'), and it differentiates from siblings like hires_get_notification_message by specifying 'scheduled' and listing the return fields (sender account, schedule timestamps, cancelability). This is clear and distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for fetching a single scheduled message, contrasting with list tools, but it does not explicitly say when to use it instead of other get tools (e.g., hires_get_notification_message) or provide any exclusion conditions. Guidance is implicit rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_noteB
Read-only
Inspect

Get a note with its author and visibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: user (author), candidate

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds modest value by indicating the note has author and visibility fields, but it does not explain conditional embedding via the include parameter, error behavior, or what happens when include is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler or repetition. Every word contributes to the meaning, and the core operation is immediately clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with annotations covering safety, the definition is minimally adequate. However, with no output schema, the description gives only a partial picture of the return value, and it does not explain how include affects the response or how this tool relates to hires_list_notes. These are clear but not severe gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, and the description adds no parameter-specific meaning. The id parameter is undocumented in both the schema and the description, and the include parameter's semantics are already fully covered by the schema description, so the description does not compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a clear verb and resource ('Get a note') and names the main returned aspects ('author and visibility'). It is easily distinguishable from the sibling list tool by its singular focus, though it does not explicitly say 'single note by ID' or contrast with hires_list_notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool instead of hires_list_notes or how to obtain the required note id. There are no contextual conditions, exclusions, or mention of prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_notification_messageA
Read-only
Inspect

Get a notification email (e.g. a rejection email): subject, body, sender, recipient, schedule. Ids come from hires_list_candidate_messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds value by listing the returned fields (subject, body, sender, recipient, schedule), which goes beyond what annotations provide. It doesn't describe any side effects, but for a read-only operation with no output schema, this is adequate and does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that immediately states the tool's purpose, lists the returned fields, and provides the ID source. There is zero redundancy or fluff; every clause contributes useful information. It is efficiently structured for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one integer parameter, no output schema) and the annotations covering read-only behavior, the description provides the essential context: what is returned and where to obtain the ID. It does not mention response format or pagination, but those are not necessary for a single-object retrieval. The description is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a single integer parameter 'id' with no description, and schema coverage is 0%. The description compensates by indicating that IDs come from hires_list_candidate_messages, which gives the agent a source for the value. However, it does not explicitly explain that the ID represents a notification message identifier or its format. The guidance is helpful but not fully complete, so a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves a notification email and enumerates the specific fields returned (subject, body, sender, recipient, schedule). It also explicitly references the source of IDs (hires_list_candidate_messages), which distinguishes this tool from other 'get' tools like hires_get_message or hires_get_application. The verb 'Get' plus the resource 'notification email' and the detail make the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage signal by stating that IDs come from hires_list_candidate_messages, which tells the agent exactly where to obtain the required input. While it doesn't explicitly mention alternatives or when not to use this tool, the reference to the list function implies the proper workflow. This is sufficient guidance for a simple retrieval tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_nurture_campaignA
Read-only
Inspect

Get a nurture campaign with all steps and schedule settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds a useful behavioral detail by saying the result includes 'all steps and schedule settings,' but it does not go further into response shape, pagination, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It front-loads the action and resource, then adds the most important detail about what is returned, which makes it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool, the description covers the essential information: which resource is fetched and what is included. There is no output schema, but the phrase 'all steps and schedule settings' partially describes the return content. It leaves out error/not-found behavior, but that is a minor gap for a context of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required 'id' parameter has no schema description, and the description doesn't explicitly document it. The tool name and the phrase 'a nurture campaign' make it inferable that id identifies the campaign, but the description itself adds little direct parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Get a nurture campaign' with the specific resource, and even narrows the return content to 'all steps and schedule settings.' It distinguishes itself from the list sibling (hires_list_nurture_campaigns) by emphasizing a single campaign with full detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is for fetching one specific nurture campaign by id, which is reasonably clear from the singular 'a nurture campaign.' However, it never explicitly names an alternative like hires_list_nurture_campaigns for listing many campaigns, nor does it state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_questionB
Read-only
Inspect

Get a question with its type and options.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds the output context of 'type and options', which is mildly useful, but it does not disclose behavioral details such as error handling, required permissions, or response structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single eight-word sentence with no filler. It front-loads the action and resource, and every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with one required parameter, the description is mostly adequate, and the mention of 'type and options' helps without an output schema. However, it leaves usage guidance and parameter semantics to inference, and says nothing about the response shape beyond those two fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explicitly explain the 'id' parameter. The meaning is inferable from the tool name and resource, but the description does not compensate for the schema gap by clarifying what id refers to, its format, or how to obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Get a question' also names two key fields returned ('type and options'). It does not explicitly differentiate from sibling tools like hires_list_questions or hires_get_form, but the singular phrasing and resource name make the primary purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as hires_list_questions or hires_update_question. The intended use is strongly implied by the name and description, but there are no explicit conditions, exclusions, or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_userA
Read-only
Inspect

Get a user by id. Its default_mail_account_id can serve as from_account_id when sending emails.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a useful domain detail about the user object's default_mail_account_id, but it does not disclose other behavioral traits such as exact return shape, error behavior, or whether non-default fields are populated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, purposeful sentences. The core action is front-loaded, and the second sentence earns its place by adding a practical downstream use that is not present in the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only getter, the description is largely complete: it names the target resource and highlights a relevant field for downstream email operations. It does not spell out the full return object, but 'Get a user' plus the specific field mention makes the expected output reasonably inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description needed to compensate for the id parameter, but 'by id' only restates what the schema already signals. It adds no format, constraints, or clarification beyond the obvious meaning of the required number id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a verb and resource: 'Get a user by id.' It is immediately distinguishable from the sibling list tool (hires_list_users) because it targets a single user and adds the unique default_mail_account_id detail that no other getter mentions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete use case: the returned user's default_mail_account_id can serve as from_account_id when sending emails. This gives the agent clear contextual guidance for why or when to call this tool, though it does not explicitly mention exclusions or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_get_workflow_stagesC
Read-only
Inspect

Get the stages of one workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow id
company_idNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds no behavioral context beyond the basic 'get' operation—no mention of ordering, return format, workflow-to-job scope, or any edge conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, immediately readable sentence with no filler or repetition. It front-loads the verb and object, and every word contributes to the core meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter, the description is minimally adequate: annotations cover the safety profile and the schema documents the required id. However, it leaves company_id unexplained and does not clarify how this differs from the workflow-stage listing sibling, so there are identifiable gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: 'id' is described as 'Workflow id', but 'company_id' has no description. The tool description does not compensate by explaining either parameter or the role of company_id, so an agent receives no additional semantic clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get') and resource ('stages of one workflow'), and the singular 'one workflow' helps distinguish it from sibling tools like hires_list_workflow_stages. It is not as explicit as naming the alternative, but the scope is understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to use this tool versus alternatives. The singular phrasing implies a single-workflow use case, but the description does not mention the more comprehensive list_workflow_stages or explain when one should be preferred over the other.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_hire_applicationA
Destructive
Inspect

Mark an application as hired: status becomes hired and hired_at is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: candidate, cv.text, job

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the concrete state change (status becomes hired, hired_at is set), which is consistent with the destructiveHint annotation. It adds detail beyond the annotation about what gets modified, and no contradiction exists. It does not mention potential side effects like notifications, but the destructiveHint already signals mutation, so the added specificity is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core action and effect without extra words. It is appropriately sized and avoids redundancy, making it efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple mutation with two parameters and no output schema. The description covers the primary effect but omits context such as whether any preconditions exist (e.g., application stage), what the response contains, or how it differs from similar actions like advance_application. Given the destructive nature and sibling variety, a bit more context would help, but it is not severely lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only 'include' is described). The description does not clarify the 'id' parameter, which is required but undocumented in the schema. It adds no parameter semantics, failing to compensate for the gap, though the tool name suggests id is an application identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: marking an application as hired, and specifies the effect (status becomes hired, hired_at is set). It distinguishes this from siblings like reject_application or advance_application by naming the exact state change. The verb 'mark' and resource 'application' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as update_application, advance_application, or reject_application. It does not state prerequisites or when hiring is appropriate, leaving the agent to infer usage from the name and effect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_application_attachmentsB
Read-only
Inspect

List an application's attachments with file metadata and download URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds that it returns file metadata and download URLs, which is useful context beyond the annotations. However, it does not mention pagination, error behavior, or any edge cases, so it adds moderate value relative to the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It efficiently communicates the verb, resource, and output contents, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description is mostly complete: it states what is returned (metadata and download URLs). However, it omits details like whether the list is paginated or if all attachments are returned at once. Given the annotations cover safety, this is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the 'id' parameter. It only implies that 'id' is the application identifier through the phrase 'an application's attachments', but does not explicitly state that the 'id' is the application ID, nor does it give any additional format or constraints. This is insufficient to fully compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'an application's attachments', and specific output content ('with file metadata and download URLs'). This distinguishes it from other list tools like 'hires_list_candidate_files' which focus on candidate files rather than application attachments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as 'hires_download_attachment' or 'hires_upload_application_attachment'. No mention of prerequisites, exclusions, or contextual conditions. The description is purely functional with no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_application_evaluationsA
Read-only
Inspect

List filled evaluation forms of an application with evaluator, summary score (strong-yes to strong-no) and summary text.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
viewNosummary replaces summary_text with a 200-char summary_text_previewsummary

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark read-only, non-destructive. The description adds that only filled forms are returned and mentions the score scale and text, but doesn't cover pagination, ordering, empty results, or authorization scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One clear sentence starting with the action verb and object; includes the key output fields concisely without clutter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers core purpose and output fields but omits the effect of the view parameter, possible empty results, and doesn't distinguish from related single-evaluation retrieval.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema exposes `id` and `view` but the description does not explain what values `view` can take or how they change output; it only implies id refers to an application. The description adds almost no meaning beyond the schema for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('filled evaluation forms of an application'), and names the returned contents: evaluator, summary score range, and summary text. It clearly distinguishes this listing operation from a generic app-level list or a single-evaluation getter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: list filled evaluations for a particular application. It doesn't explicitly mention when to use an alternative (e.g., get_evaluation), but the application-scoped focus makes the intended use reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_applicationsList applications (pipeline view)A
Read-only
Inspect

List applications across accessible jobs with filters by candidate, job, stage, status, AI score and dates. Each item embeds its current stage, so a pipeline view needs no extra job call.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo
sortNoDefault -created_at
job_idNo
statusNo
includeNoEmbed: candidate, cv.text. Pass candidate for pipeline rendering (names instead of ids)
stage_idNoBest combined with job_id
company_idNo
ai_score_maxNo
ai_score_minNo
candidate_idNo
created_afterNoUnix seconds or ISO-8601
updated_afterNoUnix seconds or ISO-8601; for incremental sync

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds behavioral context beyond annotations: it notes that items embed the current stage (so no extra job call is needed) and that the scope is 'across accessible jobs', implying permission boundaries. This is meaningful extra detail, though it does not cover pagination or other behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. The primary purpose is front-loaded in the first phrase, and the pipeline-view note is a compact, valuable addition. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 13 parameters and no output schema, the description is somewhat thin. It covers the main filter categories and the embedded-stage behavior, but it does not explain pagination, sorting, or the include parameter (though the schema provides some descriptions). Given the tool's complexity and the lack of output schema, more guidance would be expected, but it is adequate for a basic pipeline listing use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at only 38%, the description should compensate for undocumented parameters. It mentions filters by candidate, job, stage, status, AI score, and dates, which maps to several parameters (candidate_id, job_id, stage_id, status, ai_score_min/max, created_after/updated_after). However, it omits pagination (page, size), sorting (sort), include, and company_id. The description adds high-level meaning but does not fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List applications across accessible jobs', with a clear scope of accessible jobs. It also distinguishes the tool's value by noting the embedded stage for pipeline views, which differentiates it from other list tools. This is a precise, non-tautological statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by mentioning 'pipeline view needs no extra job call', which tells an agent when this tool is beneficial. It does not explicitly name alternatives or exclusions, but the purpose is clear enough that an agent can infer it is the go-to for listing applications, not for single-record retrieval. Slight deduction for lacking explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_application_stage_historyA
Read-only
Inspect

Chronological stage transitions of an application, including the initial assignment: from/to stage, moved_at, moved_by_type (system, user, automation), moved_by_user_id and source. Prefer it over candidate activities for stage reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable context by enumerating the returned fields (from/to stage, moved_at, moved_by_type, etc.), which informs the agent about the data shape. It doesn't contradict annotations and goes beyond the minimal read-only hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core purpose and then provides field details. It's efficient and free of fluff, though the field list could be more structured, but overall it's concise and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-parameter list tool, the description covers the essential return fields and the selection context. It lacks explicit mention of pagination or sorting, but the field list and the directive are sufficient for an agent to make the call. The lack of an output schema is compensated by the described fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The description says 'of an application', implying the 'id' parameter is the application ID, but it never explicitly states that. While it's inferable, it would be better to directly map the parameter to its meaning. This is a minor gap given the single obvious parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: it lists the chronological stage transitions of an application, including specific fields. It also explicitly differentiates from the sibling tool 'hires_list_candidate_activities' by saying to prefer this one for stage reports, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit usage directive: 'Prefer it over candidate activities for stage reports.' This tells the agent exactly when to use this tool instead of a close alternative, providing clear selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_boardsA
Read-only
Inspect

List job boards available for publishing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description does not add further behavioral context such as return format or pagination, but given the annotation coverage, a 3 is appropriate – it does not contradict annotations but adds minimal beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that conveys the essential purpose with no wasted words. It is front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with no parameters, the description is sufficient to invoke the tool correctly. It does not specify the exact return fields, but that gap is minor given the simplicity; a 4 reflects it is complete for practical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema has nothing to describe. Per the rubric, 0 params sets a baseline of 4; the description does not need to add parameter information, and it doesn't.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'job boards', and clarifies they are available for publishing, which distinguishes it from other list tools like hires_list_jobs or hires_list_candidates. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: when the agent needs to know which job boards can be published to. It does not explicitly mention alternatives or exclusions, but the name and context make the intent clear among many sibling list tools, so it earns a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_candidate_activitiesA
Read-only
Inspect

List a candidate's timeline events. Prefer size <= 10. event_type values: comment, copilot_response, stage_moved, automation_action_triggered, assign_job, enrichment, call, validate_emails, profile_mutation, qualification, assign_tags, assign_sources, candidate_rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
pageNo
sizeNoDefault 20, max 100
viewNosummary replaces copilot text, call transcription and comment body with 200-char *_preview fieldssummary
sinceNoInclusive; Unix seconds or ISO-8601
untilNoInclusive; Unix seconds or ISO-8601
event_typeNoComma-separated; values listed in the tool description

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations correctly declare readOnlyHint=true and destructiveHint=false, so the description need not repeat that. The description adds value by explaining the effect of the 'view' parameter (summary replaces certain fields with previews) and the inclusive semantics of since/until, which are not in the schema. It could also mention pagination behavior, but that is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the key purpose stated firstable and the crucial event_type guidance secondable. Every sentence adds distinct value: the first defines the tool's action and resource, the second gives performance and filtering advice. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (7 params), high schema coverage, and clear annotations, the description covers the essential knowledge: what it returns, how to filter, performance tips, and the meaning of the summary view. There is no output schema to worry about, and the description fills the gaps that the schema doesn't, so it is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite high schema coverage (86%), the description enriches parameter semantics by clarifying event_type values that are listed in the description but not documented in the schema. It also hints at size guidance. For the 'view' parameter, it adds context on what summary does. This goes beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool lists a candidate's timeline events, which is specific and clear. However, it does not explicitly differentiate it from related tools like list_application_stage_history or list_candidate_messages, relying mainly on the name and the prefixed 'a candidate's timeline events' to convey scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete usage guidance: it recommends using size <= 10 for better performance and enumerates valid event_type values, which helps the agent filter appropriately. It does not, however, explicitly state when this tool should be used over alternatives, but the clear event-type guidance makes the intended use case evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_candidate_filesA
Read-only
Inspect

List a candidate's files (resume and other documents): uuid, download url, file metadata, type.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful context beyond annotations by disclosing the return fields (uuid, download url, file metadata, type), which is especially valuable because no output schema exists. It also clarifies that resumes are included in the list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact, front-loaded sentence communicates the resource, scope, and key return fields without any filler or repetition. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter read-only tool, the description is nearly complete. The field list partially compensates for the missing output schema, though it leaves some ambiguity around 'file metadata' and download URL behavior such as expiration or authentication requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully documented in the schema ('Candidate id or alias'), so schema coverage is 100%. The description does not add any additional parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('a candidate's files'), and further scopes it to 'resume and other documents'. This clearly separates it from sibling tools like hires_get_candidate_resume and hires_list_application_attachments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when to use this tool versus closely related siblings such as hires_get_candidate_resume, hires_download_attachment, or hires_list_application_attachments. The description implies a general listing use case but provides no exclusions or selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_candidate_interviewsB
Read-only
Inspect

List a candidate's interviews across all applications.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
pageNo
sizeNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the cross-application scope but says nothing about pagination behavior, response shape, or other behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every word adds meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Core invocation is clear for a simple read-only list call, and annotations cover safety. However, with no output schema and page/size parameters, the description omits pagination and response expectations, making it serviceable but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%: 'id' is described, but 'page' and 'size' only have types with no explanation. The description fails to compensate for these undocumented parameters or clarify pagination semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('List') and resource ('a candidate's interviews') with an added scope qualifier ('across all applications'). It doesn't explicitly name a sibling alternative, but the candidate qualifier makes its target obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is for retrieving a specific candidate's interviews, but it gives no explicit when-to-use or when-not-to-use guidance. It doesn't contrast with similar tools like hires_list_interviews or hires_get_interview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_candidate_messagesA
Read-only
Inspect

List a candidate's email history; is_scheduled=1 returns only pending scheduled messages. Prefer size <= 10.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
pageNo
sizeNo
viewNosummary omits the HTML body and attachment metadatasummary
is_scheduledNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral context: the is_scheduled filter behavior and the size recommendation. It does not contradict annotations. It could add more (e.g., default ordering, return format), but it transparently describes the key usage nuances.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded with the core purpose ('List a candidate's email history'), followed by two actionable usage notes. Every sentence adds value with no fluff or repetition. It is an model of brevity without sacrificing essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters, one enum, and no output schema, the description is relatively sparse. It does not mention pagination defaults (other than the size preference), ordering, or what the response contains. While the annotations cover safety, an agent might still be uncertain about expected return structure or pagination behavior. It is adequate for a simple list operation but not fully complete, hence a 3.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40%, with id and view described in the schema. The description adds meaning for is_scheduled (filter for pending scheduled messages) and size (prefer <=10), which is helpful. However, it does not explain the 'page' parameter or further clarify any of the other parameters beyond what the schema provides. The description partially compensates for the low coverage but not fully, warranting a 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('List') and resource ('candidate's email history'), which unambiguously distinguishes this from sibling tools like hires_list_messages (which is not candidate-scoped) and hires_list_candidate_activities (which covers activities, not just email). The purpose is immediately obvious and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it names the candidate-specific scope and gives a conditional for is_scheduled ('returns only pending scheduled messages'), which tells an agent what filtering to apply. It also offers a pagination preference ('Prefer size <= 10'). However, it doesn't explicitly mention when not to use it or name alternatives, but the implicit contrast with sibling tools (like hires_list_messages) is sufficient for a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_candidatesSearch candidatesB
Read-only
Inspect

List candidates filtered by job, stage, email, name, LinkedIn or dates. Prefer size <= 10.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoPartial match on name or email
pageNo
sizeNo
viewNosummary omits the profile answers arraysummary
emailNoExact match
job_idNo
includeNoEmbed: applications (job titles and stages)
linkedinNoLinkedIn profile URL or alias
stage_idNoPipeline stage id; combine with job_id
full_nameNo
company_idNo
created_afterNoUnix seconds or ISO-8601
updated_afterNoUnix seconds or ISO-8601; for incremental sync

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'Prefer size <= 10' behavioral hint, which is useful for performance expectations. However, it doesn't disclose other behavioral traits such as default pagination, result ordering, or whether filters are ANDed/ORed. With annotations covering safety, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence plus a short pagination hint, which is efficient and front-loaded with the core action and filter dimensions. It earns its place without redundancy. It could be slightly more structured by separating the pagination hint, but it is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with 13 optional parameters and no output schema, the description is adequate but not complete. It doesn't explain the default view behavior, how filters combine, or what the response contains. The annotations cover safety, and the schema covers parameters, but an agent might still be uncertain about pagination defaults and filter semantics. Given the tool's complexity, a 3 is fair.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 62%, so the schema documents many parameters (q, email, view, include, linkedin, stage_id, created_after, updated_after). The description adds a high-level summary of filter dimensions but doesn't add meaning beyond the schema for most parameters. The 'Prefer size <= 10' is a useful hint for the size parameter. Baseline 3 is appropriate since the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('List') and resource ('candidates') and enumerates the filter dimensions (job, stage, email, name, LinkedIn, dates). It distinguishes itself from sibling list tools by focusing on candidate search/filtering, though it doesn't explicitly name a sibling alternative. The title 'Search candidates' reinforces the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context: it is a search/list operation with multiple optional filters, and the 'Prefer size <= 10' gives a pagination hint. However, it does not explicitly state when to use this tool versus alternatives like hires_list_applications or hires_get_candidate, nor does it mention any exclusions or prerequisites. The guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_candidate_tagsA
Read-only
Inspect

List a candidate's tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds only the scoping to 'a candidate's tags', which is already implied by the tool name and title. It does not describe return format, pagination, ordering, or any rate limits. Since annotations handle the key safety traits and the operation is simple read, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is efficiently structured and front-loaded, stating the action and object directly. There is no verbosity or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter read operation with no output schema. The description does not mention return values, pagination, or any edge cases, relying on the tool name and common conventions. While adequate for a straightforward list, it could be more complete by indicating, for example, that it returns an array of tag objects. However, given the low complexity, this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'id' documented as 'Candidate id or alias'. The description adds no additional meaning about the parameter beyond that. With full schema coverage, the baseline of 3 applies, as the schema already carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List) and a resource (a candidate's tags), making it clear this tool retrieves tags for one candidate. It distinguishes itself from siblings like hires_list_tags (which lists all tags) and hires_add_candidate_tags (which adds tags), so an agent can select it correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (list tags for a candidate) but does not explicitly state when to use this tool versus alternatives. For example, it doesn't mention that hires_list_tags lists all tags or that hires_add_candidate_tags modifies tags. No exclusions or alternative conditions are provided, so guidance is minimal but not misleading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_career_jobsB
Read-only
Inspect

List public jobs of a company career site, filterable by department, employment type, city and country.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoExact match
pageNo
sizeNo
countryNoExact match
company_slugYes
department_idNo
employment_type_idNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the jobs are 'public', which is useful context, but it does not disclose other behavioral traits like pagination defaults, ordering, or whether only published jobs are returned. Given the annotations, the description adds some value but not rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core action and resource, then lists filters. Every word earns its place; there is no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a list operation with moderate complexity (7 parameters, no output schema). The description covers the core purpose and filters but does not mention pagination behavior (page/size), the fact that only public jobs are returned (implicit but not explicit), or any defaults or limits. Given the annotations cover safety, the description is adequate but leaves some operational details up to assumption.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has low coverage (29%), only describing 'city' and 'country' as 'Exact match'. The description mentions filters: department, employment type, city, and country, which maps to department_id, employment_type_id, city, and country. However, it does not explain the types or formats of these parameters (e.g., that department_id and employment_type_id are IDs) nor does it clarify page and size parameters, which are left undocumented. The description adds minimal semantic value beyond what the parameter names already imply, failing to compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (list) and resource (public jobs of a company career site), and specifically lists filter dimensions. It is distinct from siblings like hires_list_jobs (which likely covers internal jobs) and hires_get_career_job (single job) because it explicitly says 'public jobs of a company career site', though it does not name those siblings. The title from annotations reinforces this, so an agent can infer the tool's unique scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for public career-site jobs, which suggests it should be used when the user wants external-facing job listings, but it does not explicitly contrast with alternatives like hires_list_jobs or hires_get_career_job. There is no 'use this when' or 'use X instead' guidance, leaving the choice to inference rather than explicit direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_categoriesA
Read-only
Inspect

List global job categories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'global' scope detail, which is useful, but it does not reveal any other behavior such as response format, ordering, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler. It immediately states the action and subject, making it maximally concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only list operation with annotations covering its safety profile, the description is largely sufficient. It tells the agent exactly what the tool lists, though additional detail about the return format would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to explain. Per the baseline for parameterless tools, a score of 4 is appropriate since no parameter documentation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('List') and specific resource ('global job categories'), making the operation obvious. However, it does not explicitly distinguish itself from the many other list_* sibling tools, though the resource name is unique enough that confusion is unlikely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving global job categories, but it provides no explicit guidance on when to choose it over other list tools. There are no alternatives named and no exclusion criteria, leaving usage to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_companiesA
Read-only
Inspect

List companies accessible to the partner API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'accessible to the partner API key' qualifier, which is useful context about data scope, but it does not disclose pagination behavior, return format, or ordering, which are relevant for a list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no redundancy. It is appropriately concise for a simple list operation, though it might benefit from a bit more operational detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (only 2 params, no output schema) and that annotations cover safety, the description is minimally adequate. However, it omits pagination semantics and any mention of the response structure, which could leave agents uncertain about how to use the pagination parameters effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has two parameters (page, size) with no descriptions (coverage 0%). The description does not mention either parameter, so it fails to compensate for the missing schema documentation. Agents have no guidance on whether they are optional, their range, or their effect on results.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'companies', and adds the scope 'accessible to the partner API key', which distinguishes it from other list tools and clarifies accessibility constraints. This is specific and unambiguous, and it differentiates from get_company or other list endpoints by resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for enumerating companies but does not explicitly contrast with alternatives like get_company or list_jobs. No exclusions or when-not-to-use guidance is provided, leaving the agent to infer from the resource name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_company_id_mail_accountsB
Read-only
Inspect

List mail accounts of all users in a given company (own or client).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
pageNo
sizeNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only nature is covered. The description adds that it returns accounts for 'all users' in the company, which is a scoping detail. No further behavioral details (pagination, ordering, auth requirements) are disclosed, but the annotation coverage keeps this at a moderate score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler. It front-loads the core action and scope, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should clarify what is returned. It doesn't mention pagination behavior for page/size, nor does it explain the 'own or client' distinction in terms of permissions or access. The tool is a list operation, so an agent would benefit from knowing the response structure, but that is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implicitly explains the required 'id' parameter as the company identifier, but it does not mention the 'page' or 'size' parameters at all. Since only one of three parameters is addressed, the description adds limited value over the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'List mail accounts of all users in a given company'. It specifies scope (own or client) and the company dimension. However, it does not differentiate from the similarly named sibling 'hires_list_company_mail_accounts', which could cause ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives like hires_list_user_mail_accounts or hires_list_company_mail_accounts. The description simply states what it does without any selection criteria or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_company_mail_accountsA
Read-only
Inspect

List mail accounts of all users in the current company; use to resolve from_account_id for messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false Mendelsso. The description adds that it returns mail accounts for all users in the current company, which is useful scope beyond the title. However, it does not mention pagination behavior, response shape, or ordering despite page/size parameters existing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence that front-loads the action and resource, then adds a purpose clause. No fluff, no repetition of the tool name or title. Excellent clarity per word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main use case (resolving from_account_id for messages) and the scope ('all users in the current company'). However, with no output schema and only pagination params, the absence of any note about max page size, defaults, or response fields leaves some ambiguity for an agent planning an exact call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no parameter guidance. 'page' and 'size' are conventional, but the tool text does not explain defaults, limits, or how they interact with the 'all users' scope, leaving the agent to guess at expected values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair: 'List mail accounts of all users in the current company'. This clearly distinguishes it from siblings like hires_list_user_mail_accounts and hires_list_company_id_mail_accounts by specifying scope (current company, all users) without needing to open either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'use to resolve from_account_id for messages' gives a concrete use case for selection. It doesn't explicitly name alternatives or exclusion criteria, but the disclosed scope ('all users in the current company') lets an agent infer when this tool is the appropriate choice versus user-specific or company-ID-specific listers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_departmentsA
Read-only
Inspect

List departments of the company.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and non-destructive behavior. The description adds the company scoping context but no additional behavioral details such as pagination, ordering, or authorization requirements. This is acceptable for a simple read operation, so a mid-range score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that conveys the core purpose without any filler or redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list endpoint with one parameter and no output schema, the description covers the essential meaning. It could mention pagination or whether company_id is required, but the tool is simple enough that the definition is largely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter, company_id, with no description, so schema coverage is 0%. The description implies company scoping via 'of the company', adding some meaning, but it does not clarify whether company_id is required, optional, or how it is used beyond the vague reference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the specific resource ('departments'), scoped by 'of the company'. It is unambiguous and distinguishes this tool from the many other list_* siblings by its unique resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives, nor any exclusions or prerequisites. The agent must infer usage solely from the description and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_education_levelsA
Read-only
Inspect

List education level values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read nature is covered. The description adds nothing beyond 'list' which is already in the name and annotations. It does not disclose whether the list is static, ordered, paginated, or returns a specific set, but for a simple list tool with no parameters, the annotations provide sufficient behavioral baseline. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words: 'List education level values.' It is appropriately sized for a tool with no parameters and a straightforward function. The information is front-loaded and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params, no output schema, annotations cover read-only behavior), the description is nearly complete. An agent needs to know only that it returns a list of education levels, which is stated. A minor gap is the lack of any mention of return format or whether the list is enumerable, but this is not critical for a no-parameter enumeration tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema coverage is 100% (effectively empty). With no parameters, the description does not need to add parameter details. The baseline for tools with no parameters is 4, and the description appropriately does not attempt to explain non-existent parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List education level values' clearly states the verb (list) and resource (education level values), distinguishing it from sibling list tools that target other entities (e.g., hires_list_experience_levels, hires_list_employment_types). It is concise and unambiguous, though it does not explicitly contrast with siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. While the name and description imply it is for fetching education levels, there is no mention of context, such as when combining with candidate or job operations, or any alternative tools to consider. The sibling list of similar list tools (experience_levels, employment_types) creates potential confusion without explicit usage notes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_email_templatesC
Read-only
Inspect

List email templates of a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo
viewNosummary omits the HTML bodysummary
company_idNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true and destructiveHint=false, which indicate a safe read operation)Skip. The description adds little beyond the annotations, but it does mention the resource type. It does not disclose pagination behavior, default page/size, or whether the list is sorted. With annotations covering the primary safety traits, this is acceptable but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundancy. It is concise and gets to the point. However, it could be more structured with a bit more context without adding bulk.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with a read-only annotation, the description covers the basic action and resource. It lacks information about pagination defaults (e.g., page=1, size=20), whether company_id is required to filter, and what the response structure looks like (though no output schema exists). Given the high number of sibling tools)Skip and the potential for confusion with other list operations, the description does not provide enough context to ensure correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, meaning the 'view' parameter is described in the schema. The description does not add any parameter semantic details for page, size, or company_id, which are left to the agent's guessing. Since coverage is low, the description should compensate but doesn't. However, 'company_id' is easily inferred from 'of a company', and 'page'/'size' are standard pagination, so partial compensation exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'List' and the resource 'email templates of a company', making the purpose clear. However, it does not differentiate from similar list tools like 'hires_list_messages' or 'hires_get_email_template', and the phrase 'of a company' is generic without specifying that company_id is needed. It is adequate but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. For example, it does not mention that this lists templates while 'hires_get_email_template' retrieves a single template, or how it differs from other list tools. There are no prerequisites or context clues, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_employment_typesA
Read-only
Inspect

List employment types (full-time, part-time, contract, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds no further behavioral context beyond the basic 'list' action, which is consistent with the annotations. It does not mention return format or any side effects, but for a read-only list tool, the annotations carry the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that leads with the verb and resource, and includes illustrative examples. There is no wasted text; it is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (no parameters, no output schema, and read-only annotations), the description is adequate. It does not explicitly state the return format, but that is not critical for a list tool where the output is self-evident. The description covers the essential purpose without gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description does not need to explain parameters, and the schema is empty, so there is nothing missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'employment types', with examples of the types (full-time, part-time, contract). This precisely identifies what the tool does and distinguishes it from the many sibling list tools by naming a unique resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to use this tool versus alternatives. Since it is a simple enumeration tool, the usage is implied from the name and description, but there is no mention of when not to use it or how it fits with other list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_experience_levelsA
Read-only
Inspect

List experience level values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description 'List' is consistent with being read-only but adds no additional behavioral context such as return format or pagination. With annotations present, a neutral score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It conveys the essential purpose efficiently and is appropriately sized for a simple enumeration tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description is largely sufficient. It tells the agent the tool returns experience level values, though it does not specify the exact format (e.g., list of strings). Given the trivial nature, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to clarify about parameters. The baseline for 0 params is 4, and the description does not detract from that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the specific resource 'experience level values', making the tool's purpose unambiguous. It is distinct from sibling list tools like hires_list_education_levels or hires_list_employment_types because the resource is uniquely identified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. While the tool context implies it may be used to fetch valid experience level values for filtering or display, the description itself gives no such hints or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_formsC
Read-only
Inspect

List application forms of a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo
viewNosummary omits the questions arraysummary
company_idNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false, and the description adds no behavioral details beyond that. It does not disclose pagination behavior, defaults for page/size, whether company_id is required despite being listed as optional, or what fields are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no filler or redundant wording. It is front-loaded and easily parsed, though it could earn a higher score by adding more useful context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters, only 25% schema coverage, and no output schema, the description leaves significant gaps. An agent cannot tell whether company_id is effectively required, what pagination defaults apply, or what the response structure looks like, making the description minimally viable but incomplete for confident invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, with only the view parameter documented. The description's phrase 'of a company' hints at company_id, but it does not explain page, size, or the implications of choosing summary versus full view, so it fails to compensate for the schema's sparse parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: listing application forms for a company. It is clear enough to distinguish from sibling tools like hires_get_form (single form retrieval) and hires_list_questions (listing questions), though it does not explicitly mention those differentiators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as hires_get_form or hires_list_applications. There is no mention of prerequisites, such as needing a company_id, or scenarios where this list is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_hiring_teamB
Read-only
Inspect

List users on the job's hiring team.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, and the description only restates the basic behavior. It adds no extra behavioral detail such as what is returned, pagination, ordering, or any special conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded, concise sentence with no filler or redundant wording. It conveys the essential purpose immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool, the description plus schema and annotations are minimally sufficient. However, it does not clarify what fields are returned, whether it differs from related tools, or any context about hiring team membership.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage for the single parameter is complete (id described as 'Job id or alias'), so the baseline value is already covered. The description itself adds no additional meaning about the parameter beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and resource: 'List users on the job's hiring team'. It is unambiguous and easily understood. It does not explicitly differentiate itself from sibling tools like hires_add_hiring_team_member or hires_get_job, but the verb+object combination is specific enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when this tool should be used versus alternatives, no mention of requiring a job id, and no exclusions or context about read-only access. The agent gets the what but not the when or why.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_interviewsList interviews (agenda)B
Read-only
Inspect

List interviews filtered by job, application, candidate, interviewer, date or timestamps. Pass include=candidate so the agenda widget can link cards to candidate profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD, UTC
pageNo
sizeNo
job_idNo
includeNoEmbed: candidate, application, job
company_idNo
candidate_idNo
created_afterNoUnix seconds or ISO-8601
updated_afterNoUnix seconds or ISO-8601; for incremental sync
application_idNo
interviewer_user_idNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so there is no contradiction. The description adds some context around candidate embedding but doesn't disclose pagination behavior, return format, or timestamp semantics beyond the schema's `updated_after` hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the core operation front-loaded. The `include=candidate` example adds practical value without wasting words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This tool has 11 optional parameters and no output schema, so the description needs to cover pagination and return shape to be safely callable. It addresses filters and one include use case but leaves the agent guessing about paging, company scoping, and how to distinguish this from the candidate-specific sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 36%, so the description partially compensates by mapping filter dimensions like job, application, candidate, interviewer, date, and timestamps to likely parameters, and by explaining `include=candidate`. However, `page`, `size`, and `company_id` remain unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation ('List') and resource ('interviews'), and enumerates the filter dimensions. However, it doesn't explicitly differentiate this from the sibling `hires_list_candidate_interviews`, so it falls one step short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete agenda-widget use case and implies this is the tool for filtered interview listing. But it doesn't state when not to use it or point to alternatives like `hires_list_candidate_interviews`, so usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_job_boardsA
Read-only
Inspect

List job boards the job is published to, with their state.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds only that the output includes 'state,' which is minor and doesn't disclose pagination, auth, or other behaviors. Given the annotations, the bar is lower, but the description adds little beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It conveys the core function immediately and is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one parameter and no output schema, the description is largely complete. It clearly indicates the scope (per job) and that state is included. It could clarify what 'state' means, but that is a minor gap given the simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of the 'id' parameter as 'Job id or alias.' The tool description adds no additional parameter semantics beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb (list) and resource (job boards) scoped to a given job, including the extra detail of state. It distinguishes itself from sibling tools like hires_list_boards (which lists all boards) and publish/remove board tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it is used when you need the boards a specific job is published to, and the name distinguishes it from alternatives. However, it doesn't explicitly state when not to use it or mention alternatives, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_jobsList jobsB
Read-only
Inspect

List jobs filtered by status, creation/update time, department or search query.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch title or internal title
pageNo
sizeNo
viewNosummary
statusNoFrom hires_list_statuses, e.g. Public, Draft, Archived
includeNoEmbed: workflow, hiring_team, pipeline_stages
company_idNo
department_idNoFrom hires_list_departments
updated_afterNoUnix seconds or ISO-8601; for incremental sync
created_at_endNoUnix seconds or ISO-8601
created_at_startNoUnix seconds or ISO-8601

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations show read-only/no destructive effects)Skip? Actually description doesn't contradict; it simply doesn't add much beyond filters. With readOnlyHint in annotations, the bar is lower)Skip. no contradiction. Maybe 3: It doesn't mention pagination or output shape, but annotations cover safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single clear sentence, front-loaded with the verb and core filters. No filler or redundant restatement of schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a read-only list operation, but with 11 parameters, no output schema, and no mention of pagination or included subresources, an agent may not know the return shape or how to page through results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description maps to q, status, department_id, and time-window params (created_at_start/end, updated_after), which helps. But it omits page/size, view, include, and company_id, and schema coverage is only 64%, so the description doesn't fully compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists jobs and names the main filter dimensions (status, time, department, search). It does not explicitly distinguish itself from siblings like get_job or get_career_job, but the verb 'list' plus the filter scope make the core purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this over alternatives (e.g., get_job, get_career_job) or what prerequisites apply. The agent must infer usage from the name and filters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_job_webhooksA
Read-only
Inspect

List webhooks subscribed to this job's events.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare `<readOnlyHint>true</readOnlyHint>` and `<destructiveHint>false</destructiveHint>`, covering the safety profile. The description adds the job-scoping context, which is useful, but provides no extra behavioral details such as authentication, pagination, or whether incomplete/removed webhooks are included. Modest, non-conradictory improvement over annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single, concise sentence with no waste. It is front-loaded and immediately communicates the verb, resource, and scope. No fluff or redundant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one required, 100% schema-documented parameter and no output schema, this description plus annotations provide enough to call the tool. The core scope is clear, and the read-only behavior is standard. It could mention the global vs job-scoped contrast, but that is more of a usage guideline; in isolation little critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully details the only parameter (`id`: 'Job id or alias'), giving 100% coverage. The description simply echoes the relation to the job and clarifies that the webhooks are scoped to the job's events. It adds a bit of semantic flavor but does not substantially expand what the schema already communicates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List') and resource ('webhooks') scoped to 'this job's events'. This clearly defines the purpose and differentiates it from the global `hires_list_webhooks` or webhook mutation tools, as the job-scoping is immediately obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use vs. the global `hires_list_webhooks` or any other alternative. It neither names a sibling, explains the use case boundary, nor mentions when to avoid using it. The sentence implies job-scoped use, but the agent is left to infer the selection entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_languagesA
Read-only
Inspect

List career site locales (e.g. de-DE) accepted by language parameters; is_default marks the one used when none is picked.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is carried by structured data. The description adds real value beyond that by explaining the semantics of the is_default flag (marks the locale used when none is picked), which enriches the agent's understanding of the returned data. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the core purpose, then appends the one piece of behavioral detail (is_default) that matters. Zero filler words; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of explaining the return shape, and it does: it defines locales and the is_default field's meaning. For a 0-parameter read-only list tool this is complete; only a slightly richer return-format description would push it higher.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline of 4 applies per the rubric. Nothing is needed here; the description instead focuses attention on the meaningful part of the call: interpreting the returned locale objects and the is_default field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb (List) plus a precise resource (career site locales) with examples, and clarifies the domain use (accepted by language parameters). It naturally distinguishes from siblings like hires_get_career_site_settings and hires_list_career_jobs by naming exactly what is enumerated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'accepted by language parameters' makes the use case clear: call this to obtain valid locale values for language parameters elsewhere. It doesn't explicitly name alternatives or state when-not-to-use, but the context is unambiguous and no sibling serves the identical purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_messagesB
Read-only
Inspect

List outbound messages (sent and scheduled) of one mail account; received mail is not included.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNoDefault 20
viewNosummary
statusNoDefault: all
date_toNoUnix seconds
date_fromNoUnix seconds; filters on scheduled/sent time
from_account_idYesMail account id from hires_list_company_mail_accounts or hires_list_user_mail_accounts

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds that received mail is not included, which is useful behavioral context. However, it doesn't mention pagination limits (size max 100) or the view modes, which are in the schema but not behavioral traits beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the key purpose and exclusion. It captures the essential scope without fluff, earning a high score for efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a read-only list with a clear scope and schema covering most parameters, the description is adequate but not exhaustive. It doesn't explain the meaning of the status filter or the view difference, but those are inferable from the enum names. Overall, it meets the minimum viable standard for calling the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 71%, so most parameters have descriptions from the schema. The description adds little beyond the schema—it confirms the account filter. Some parameters like date_to and date_from lack full semantic explanation, but the schema provides enough for basic use. The description doesn't compensate for the gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('outbound messages'), and explicitly excludes received mail, which helps distinguish from a generic message list. It doesn't name sibling alternatives, but the scope is clear enough for an agent to infer its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is for listing messages for a specific account (requires from_account_id) and filters to outbound onlyvoice. It doesn't explicitly say when to use this over sibling tools like hires_list_candidate_messages or hires_send_candidate_message, but the exclusion of received mail provides some context. No explicit alternatives or when-not-to-use guidance is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_notesC
Read-only
Inspect

List discussion notes of a candidate.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo
viewNosummary replaces the body with a 200-char body_previewsummary
includeNoEmbed: user (author), candidate
candidate_idYesCandidate id or alias

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to reiterate safety. However, it adds no additional behavioral context such as pagination, default view behavior, or response format. Since there is no output schema, the description could disclose expected behavior, but it remains silent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler or redundancy. It is immediately readable and front-loads the core operation. This is appropriately sized for a simple read operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters (including enums and embedding options) and no output schema, the description is insufficient. It does not mention pagination, the 'view' parameter's effect on response body preview, or the 'include' parameter for embedding related objects. An agent would not know how to tailor the call for desired granularity or embedded data, making the tool incomplete for practical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%, meaning parameters like page and size lack descriptions. The tool description does not compensate for these gaps—it doesn't explain pagination or the meaning of 'view' or 'include'. An agent relying on the description alone would have no insight into these parameters, and the description adds no value beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'List discussion notes of a candidate.' It distinguishes this tool from siblings like hires_get_note (singular) and hires_list_candidate_messages (different content type). However, it does not elaborate on the scope or any filtering specifics, so it's clear but not as detailed as the calibration high example.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or conditions that would lead an agent to choose this over other list operations. The single sentence provides no context for decision-making beyond the basic action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_nurture_campaignsC
Read-only
Inspect

List nurture campaigns with their steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo
company_idNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds only the 'with their steps' detail. No other behavioral context such as pagination limits or whether the response includes all companies or a single company.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the core purpose. It is appropriately sized for a simple list operation, though it could include more detail without sacrificing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a description of only eight words, the tool is severely under-specified. There is no mention of what a 'nurture campaign' entails, what 'steps' means, pagination behavior, or any return value expectations, leaving agent decision-making largely unsupported.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention any of the three parameters (page, size, company_id). The agent gets no clue about what these parameters mean or how to use them, making parameter semantics almost completely absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'List nurture campaigns' and adds the detail that steps are included. This distinguishes it from get/create/update/delete counterparts in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, such as when to use get_nurture_campaign for a single campaign or how to handle pagination. No mention of required context or filtering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_originsA
Read-only
Inspect

List candidate origin values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a read-only, non-destructive operation slash readOnlyHint true destructiveHint false. The description does not add behavioral details beyond 'List', such as whether values are localized, ordered, or filtered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence: 'List candidate origin values.' It contains no filler and immediately conveys the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only enumeration tool, the description is nearly complete. It does not state the return shape, but no output schema is provided and the intent is clear enough for an agent to call it. Slight ambiguity remains about what 'origin values' includes, but the risk is low.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters kuning. Since the schema is empty, there are no parameter semantics to clarify, so the baseline of 4 is appropriate; the description fully covers what the agent needs to invoke it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('List') and a specific resource ('candidate origin values'), so an agent can infer the tool's basic purpose. However, it does not explicitly differentiate this from the many other list_* sibling tools, leaving the agent to infer that 'origins' is a distinct enum domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when to use this tool versus alternatives like hires_list_sources or hires_list_statuses. The description implies a simple lookup but provides no context for selecting it over similar list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_questionsC
Read-only
Inspect

List the reusable question catalog of the company.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo
company_idNo

TDQS

C2.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the 'reusable' qualifier, suggesting that this list may contain only questions that are reusable across job postings, which is useful context beyond the annotations. However, it does not explain pagination behavior or that the list might be large. Since the annotations cover the safety profile, this is a reasonable score, but the description could have added more behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the key action and resource. It is efficient and not verbose. The sentence is easy to read and has no unnecessary words. While it could have included more information, the conciseness itself is well-executed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has 3 parameters (all optional) and no output schema, the description needs to explain the purpose and scope of those parameters. It fails to do so. It also does not clarify what a 'question catalog' means in this context or whether company_id is required to filter by company. For a list operation that could be paginated, the lack of parameter semantics is a major gap. The description is too minimal to ensure correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, meaning the description provides no information about the three parameters: page, size, and company_id. The description does not even hint at pagination (page and size) or the requirement for company_id to scope the catalog. Given that there are 3 parameters with no documentation in either the schema or the description, the description fails to compensate for the low coverage. This is a significant gap that could lead to incorrect calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List the reusable question catalog of the company' clearly identifies the verb (list) and resource (reusable question catalog), but it does not distinguish from the related tools like hires_list_question_types or hires_get_question. The term 'catalog' is somewhat ambiguous; it could refer to a list of question objects or a collection of question types, and it doesn't explicitly clarify whether it lists all questions or just the reusable ones. There is no mention of pagination or filtering options that would differentiate it from other list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as hires_get_question (to fetch a specific question) or hires_list_question_types (to list available question types). It does not specify that this tool is for listing a catalog of questions, which is distinct from the type enumeration. There is no mention of when not to use it or any prerequisites. The intended use case is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_question_typesA
Read-only
Inspect

List supported question types.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the verb 'List' is consistent with a no-side-effect operation. The description adds no further behavioral context such as return format, exhaustiveness, or auth requirements, but for a zero-parameter read-only tool this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states exactly what the tool returns. There is no filler, no repetition of structured fields, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with no nested objects, the description is nearly complete: it identifies the operation and the returned information. The only minor gap is that it does not explicitly describe the response shape, though 'List supported question types' makes an array of type values the obvious expectation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty input schema, so the baseline for this dimension is 4. There are no parameter meanings the description would need to explain, and the empty schema leaves no ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a clear resource ('supported question types'). It distinguishes itself from siblings like hires_list_questions, which lists question records, and the CRUD question tools, by focusing on the enumerated types rather than individual question objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use—retrieving valid values for the question-type field before creating or updating questions—is only implied by the word 'supported' and the tool name. There is no explicit when-to-use, when-not-to-use, or mention of an alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_rejection_reasonsA
Read-only
Inspect

List rejection reasons configured for the company.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'configured for the company' scoping, which clarifies that it returns company-level settings. However, it does not disclose whether the company_id parameter is required or what happens if omitted, and there is no mention of pagination or ordering. With annotations covering safety, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It front-loads the action and resource, and the company scoping is included efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description is mostly adequate. However, it does not clarify whether company_id is required, what the response shape looks like, or whether the list is paginated. Given the tool's simplicity and the annotations covering safety, this is a minor gap but still leaves some ambiguity for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The description mentions 'configured for the company', which implies the company_id parameter's purpose, but it does not explain whether company_id is required, optional, or how it filters results. The parameter is a simple number with no schema description, so the description adds only minimal meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List rejection reasons configured for the company' clearly states the verb (list) and resource (rejection reasons), and the company scoping is explicit. It is distinguishable from sibling list tools by the specific resource, though it doesn't explicitly contrast with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: call this when you need the company's configured rejection reasons. It does not state when not to use it or mention alternatives, but the context of a list operation is clear. No explicit exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_sourcesB
Read-only
Inspect

List candidate sources of the company.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds scoping context ('of the company'), implying the company_id parameter filters results. However, it doesn't disclose any other behavior such as pagination, sorting, or the structure of the response. Since annotations carry the main behavioral burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no redundancy. It front-loads the action and resource, making it immediately scannable. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list with one parameter and no output schema, the description is adequate but minimal. It lacks definition of what constitutes a 'candidate source' and doesn't mention any filtering or return details. However, given the low complexity and annotation coverage, it meets the minimum viable threshold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explicitly explain the company_id parameter. The phrase 'of the company' hints at its role but doesn't clarify requiredness or formatting. For a single-parameter tool, the description should more explicitly state how the parameter is used; this gap lowers the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and resource 'candidate sources,' clearly indicating a read operation. It distinguishes itself from other list tools by targeting a unique resource type, though it doesn't explicitly differentiate from siblings like hires_list_candidates or hires_list_origins. The meaning is clear enough for an agent to identify the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus other list tools. With over a hundred sibling tools, an agent would need to infer that this is for retrieving candidate sources specifically, but there is no explicit context or exclusion of alternatives. The description offers no situational advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_statusesA
Read-only
Inspect

List job status labels (draft, published, on_hold, closed, archived).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by enumerating the actual status label values and setting the scope as job status labels, which goes beyond the annotation title's generic 'List application statuses'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence states the operation, the resource, and the concrete label values with zero filler or repetition. Every word contributes to the agent's understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless, read-only enumeration tool with no output schema, the description is fully sufficient. It tells the agent exactly what is returned: job status labels with their known values. The annotations cover side effects, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema description coverage is 100%, so the schema is trivially complete. The description's enumerated status values provide a little extra contextual meaning, but with no parameters there is little semantic work for the description to do, matching the baseline for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'List job status labels' and enumerates the exact statuses: draft, published, on_hold, closed, archived. This is immediately distinguishable from the many sibling list_* tools because it specifies precisely what is being listed and the value domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when this tool should be used versus alternatives. With over 130 sibling tools, including several list_* tools like hires_list_jobs, hires_list_workflow_stages, and hires_list_rejection_reasons, the description offers no exclusions or decision criteria, so the agent must infer applicability from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_tagsC
Read-only
Inspect

List all tags of the company.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idNo

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds no extra behavioral context—it does not mention pagination, sorting, or any side effects. Since annotations carry the main burden, a score of 3 is appropriate; the description adds minimal value beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise, but it lacks critical information. It is under-specified rather than efficiently concise; the sentence does not earn its place because it omits parameter semantics and usage context. Front-loading the action is fine, but the content is too sparse to be useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter, no output schema, and minimal annotations, the description must provide enough context for an agent to call it correctly. It fails to explain how to identify the company (via company_id), what the output looks like (a list of tags), or any constraints. The description is inadequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only source of parameter meaning. Yet it fails to explain the company_id parameter at all—it does not state that a company ID is needed to identify which company's tags to list, nor why it is optional (required parameters: 0). The description's phrase 'of the company' vaguely implies a company context but does not clarify how to specify it, leaving the parameter semantically unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource ('all tags of the company'), making the primary purpose unambiguous. However, it does not differentiate from sibling tools like hires_list_candidate_tags, which also lists tags but for a different entity. The phrase 'of the company' provides some distinction but not explicit enough to prevent confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the many sibling list tools (e.g., hires_list_candidate_tags, hires_list_boards). There is no mention of context, prerequisites, or alternatives. An agent would have to infer usage solely from the name and description, which is insufficient given the large sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_template_placeholdersA
Read-only
Inspect

List email template placeholders; pass the chosen one to hires_prepare_template_placeholders to get its HTML tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoLabel substring, case-insensitive
pageNo
sizeNo
typeNo
company_idNo
is_notificationNo1 includes notification-only system placeholders (default 0)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a useful behavioral note that the output placeholder values are intended as input to another tool, but it does not disclose pagination, filtering behavior, or return shape beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no filler. The main action is front-loaded, and the sibling-tool relationship is conveyed in the second half without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool, the description gives enough workflow context: list, then pass to prepare to get the HTML tag. It falls slightly short on parameter semantics and return-value detail, but annotations cover the read-only nature and the schema provides enum and default information for some parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, and the description does nothing to compensate. It does not mention q, page, size, type, company_id, or is_notification, so agents must rely on the schema alone, which leaves several parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a precise resource ('email template placeholders'), making the tool's function immediately clear. It also names the closely related sibling tool, hires_prepare_template_placeholders, which helps an agent distinguish the listing step from the subsequent transformation step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear workflow context: an agent should call this tool to list placeholders, then pass the chosen one to hires_prepare_template_placeholders to obtain its HTML tag. It does not explicitly state when not to use this tool or compare it against other list tools, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_user_mail_accountsA
Read-only
Inspect

List a user's connected mail accounts; use one as from_account_id when sending messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUser id
pageNo
sizeNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds the behavioral note that the returned accounts are connected and usable as a from_account_id. It does not describe return format, pagination, or rate limits, so it adds only marginal extra context beyond those annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with the core action in the first clause and a brief, non-repetitive usage note in the second. Every word adds value and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple list with no output schema, and the description gives enough to know the end use, but it does not mention pagination (page/size) or describe the shape of the returned accounts. For a tool that could return several connected accounts, this is a moderate gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only 'id' is described), and the tool description does not mention the 'page' or 'size' parameters at all. The description adds the term 'connected mail accounts' but that largely reiterates the purpose rather than explaining the meaning of each input, so it does not compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the verb 'List' and resource 'a user's connected mail accounts', and it distinguishes this from the sibling hire list for company mail accounts by specifying the user scope. The title and context signals also reinforce the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context by stating the accounts can be used as a 'from_account_id' when sending messages. However it does not name alternatives or list when not to use this tool, though the user scope in the description implies the separation from company-level lists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_usersC
Read-only
Inspect

List company users with their roles.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo
company_idNo

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the detail that roles are included in the response, which is helpful context beyond the read-only and non-destructive annotations. However, it does not disclose behavior such as default pagination, the effect of omitting company_id, or whether it returns all users across companies. Given the annotations already declare safety, this is acceptable but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, which could be seen as concise, but it omits essential information. It does not meet the standard of being 'appropriately sized' because it lacks the detail needed for an agent to use the tool correctly. Two or three sentences would be more appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 optional params, no output schema) and the large number of sibling list tools, the description is inadequate. It does not differentiate this list from others (e.g., hires_list_companies) or explain how the parameters filter results. It provides no context about the expected response shape or behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, and the description does not mention any of the parameters (page, size, company_id). It fails to explain what these parameters control, how they interact, or which are required. Since the description is the only source of parameter semantics, this is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (company users), and adds a detail about roles. It is more specific than a tautology and conveys the core purpose. However, it does not explicitly contrast with the sibling hires_get_user, which would clarify the difference between listing and retrieving a single user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it is for retrieving multiple users as opposed to a single user, nor does it explain any conditions or prerequisites. Users are left to infer usage from the name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_webhooksA
Read-only
Inspect

List company-scoped webhook subscriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompany id

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is known to be safe. The description adds no additional behavioral disclosure such as pagination, auth requirements, or side effects. It only repeats the scope, which is more of a purpose detail than behavioral context. Thus, it adds no value beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence with zero waste. The action and scope are front-loaded, and every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list read with one parameter and no output schema, the description is mostly complete. Annotations cover the read-only nature, and the schema covers the required parameter. However, it does not mention response format or pagination, but given the simplicity, this is a minor gap. It also doesn't explicitly note the need to provide a company id, though that is in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'id' is fully documented in the schema (description: 'Company id') with 100% coverage. The description does not add any extra meaning about the parameter, so the baseline of 3 applies since the schema already handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (List), resource (webhook subscriptions), and scope (company-scoped). It distinguishes itself from the sibling hires_list_job_webhooks by specifying the company scope, which allows an agent to tell them apart without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by indicating the tool is for company-scoped webhooks, which implies use when company webhooks are needed. However, it does not explicitly name alternatives or state when not to use it (e.g., 'use hires_list_job_webhooks for job webhooks'). The scope is clear but exclusions/alternatives are left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_workflowsB
Read-only
Inspect

List workflows of the company with their stages.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a small behavior detail by stating the result includes stages, which goes beyond a bare 'list workflows.' It does not cover pagination, sorting, authorization, or other behavior, but given annotations cover safety, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that states the operation and the key output detail (the stages). It is front-loaded and contains no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter and no output schema. The description tells the agent what the tool returns (workflows with their stages) but does not clarify the meaning of 'workflow' against the sibling tools, nor does it specify pagination or default data. For a simple list tool this is acceptable but leaves an important ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single parameter company_id. The description 'of the company' hints at company_id's role but does not explain its format, optionality, or behavior when omitted. This is minimal compensation for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (list), the resource (workflows), and explicitly notes that stages are included. However, it does not distinguish this from the sibling tools hires_list_workflow_stages and hires_get_workflow_stages, so an agent may be uncertain which tool to select when stage information is needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus its siblings. There is no mention of alternatives, allowed use cases, or conditions that would make one tool preferable over another.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_list_workflow_stagesA
Read-only
Inspect

List pipeline stages, filtered by workflow or job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNoStages of the job's assigned workflow
company_idNo
workflow_idNoWorkflow id from hires_list_workflows

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the filter-by-workflow-or-job behavior, which is useful, but it does not disclose what happens when no filters are supplied or whether the result is exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence delivers the action, object, and filtering dimension with no filler. Every word contributes to the agent's understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with optional filters, the description plus annotations are mostly sufficient. The main missing pieces are the return shape (no output schema) and explicit behavior when neither filter is provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, with job_id and workflow_id documented; the description reinforces that job_id corresponds to a job and workflow_id to a workflow. However, company_id is entirely undocumented in both the schema and the description, leaving a real semantic gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List pipeline stages' and adds a clear scoping dimension ('filtered by workflow or job'). It is understandable on its own, though it does not explicitly differentiate this from the similarly named sibling hires_get_workflow_stages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you need pipeline stages and want to filter by workflow or job. It provides no explicit guidance about alternatives, exclusions, or what to do when no filter is provided, so usage context is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_move_applicationA
Destructive
Inspect

Move an application to a specific pipeline stage; stage ids come from the job's pipeline_stages.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: candidate, cv.text, job
stage_idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint: true and readOnlyHint: false, which covers the safety profile. The description adds the constraint that stage ids come from the job's pipeline_stages, a useful behavioral note about input provenance. It does not describe side effects beyond moving the stage, which is acceptable given the annotation already signals destructive behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence that front-loads the action and includes a crucial constraint. It has no filler and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with two required parameters, the description provides essential guidance: where stage ids come from and what the action does. The omitted application id clarification is minor and inferable from the phrasing. The optional include field is covered by schema, and no output schema exists to document.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, so the description must compensate. It directly explains stage_id semantics by pointing to job pipeline_stages. The tool name and wording imply that id refers to the application, but that is not explicitly stated in the description. The optional include parameter is not described in the description, though it is already documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Move an application to a specific pipeline stage.' It also adds the key constraint that stage ids come from the job's pipeline_stages. It does not explicitly name and contrast the sibling tool hires_advance_application, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: move an application when you have a specific stage_id from the job's pipeline_stages. It does not explicitly mention alternative tools like hires_advance_application or when NOT to use this tool, but the 'specific stage' wording gives some applicable direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_patch_messageA
Destructive
Inspect

Partially update a scheduled message before it is sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
idYes
toNoRecipient emails
bccNo
bodyNoHTML
subjectNo
scheduled_atNoUnix seconds
from_account_idNoDefault: API key owner's default mail account
reply_to_email_idNoMailbox message id to reply to
send_in_new_threadNoSend as a new thread

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the constraint that updates happen before sending, which is useful behavioral context. Annotations already declare readOnlyHint=false and destructiveHint=true, so the description need not restate that; however, it does not disclose whether only provided fields are updated or what happens if the message is already sent. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the verb and resource. It is concise, with no wasted words, and is easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 10 parameters and no output schema, the description is extremely brief. It does not explain what 'partially update' means, which fields are typically changed, or any limitations or prerequisites. While annotations provide some safety context, the description leaves significant gaps for an agent to correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%, and the description provides no parameter details. Several parameters (id, cc, bcc, subject) lack schema descriptions, and the tool description does not compensate. It adds no meaning beyond what the schema already provides, so it fails to clarify the less-documented fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('update'), resource ('scheduled message'), and the qualifier 'partially', which distinguishes it from full-update tools like hires_update_message. It also adds a temporal constraint ('before it is sent') that clarifies scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for partial updates on scheduled messages, but it does not explicitly state when to prefer this over alternatives or when not to use it (e.g., after the message is sent). It offers no exclusions or comparisons, leaving guidance to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_prepare_template_placeholdersA
Read-only
Inspect

Convert a placeholder reference into the HTML tag to insert into an email template body.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYessystem, candidate_column, job_variable, questionnaire_link or scheduling_link
identifierNo
job_variable_idNo
form_question_idNo
system_column_titleNo
qas_profile_question_idNoProfile question id

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat that it is a safe read operation. It adds that the output is an HTML tag for insertion, which is useful behavioral context. However, it does not disclose potential errors, dependencies on specific parameters, or how the tool handles invalid input, but given the annotations cover the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundant words. The core purpose is front-loaded and immediately understandable. There is no fluff, and the sentence length is appropriate for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters and no output schema, the description is minimal. It does not explain how the type parameter interacts with the other parameters or what identifiers are needed for each placeholder type. The absence of an output schema means the description should describe the return format, but it only mentions 'HTML tag' without specifics. An agent may not know which parameters to supply for a given type, making the tool difficult to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (type and qas_profile_question_id have descriptions). The tool description does not explain any parameters, leaving identifier, job_variable_id, form_question_id, system_column_title, and qas_profile_question_id ambiguous. With such low coverage, the description should compensate by clarifying parameter semantics, but it does not, making parameter usage difficult for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (convert a placeholder reference) and the output (HTML tag for an email template). This distinguishes it from sibling tools like hires_list_template_placeholders, which lists placeholders, and email template creation/update tools. The verb 'convert' and resource 'placeholder reference' make the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when preparing email templates, but it does not explicitly mention when to use it versus alternatives, nor does it state any exclusions or conditions. There is no reference to sibling tools or guidance on when not to use it, leaving the decision to the agent based on context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_publish_to_job_boardAInspect

Queue the job for publication on the given boards.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
boardsNoe.g. indeed, linkedin

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=false and readOnlyHint=false, so the description's 'queue' hints at a non-blocking, side-effectful operation without destruction. The description adds the nuance of queuing (not immediate publishing), which is valuable behavioral context. However, it does not clarify what happens on failure or whether publication is asynchronous, which could matter to an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It front-loads the primary action ('Queue the job') and the target ('given boards'). Given the tool's simplicity, this is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with 2 params and no output schema. The description covers the core action and parameters but misses some context: it does not mention that the boards parameter is optional (schema shows it's not required, but required fields list only 'id'), nor does it explain what 'queue' implies (e.g., processing time, confirmation). It also doesn't state whether the tool requires the job to be in a certain status (e.g., published) for the operation to succeed. For an agent, this is adequate but leaves room for misinterpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with 'id' described as 'Job id or alias' and 'boards' as an example list. The description adds minimal semantics: it implies the 'id' refers to a job and 'boards' are the targets. It does not explain how boards are specified (e.g., exact strings, availability) beyond the schema, so the description does not significantly augment the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Queue the job for publication on the given boards' clearly states the action (queue for publication) and resource (job boards). It distinguishes itself from similar tools like hires_batch_publish_to_boards (batch variant) and hires_remove_from_job_board (opposite action), though it does not explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a specific scenario: publishing a single job to specified boards. It does not explicitly state when to use this versus the batch variant (hires_batch_publish_to_boards) or how it differs from other board-related tools (e.g., hires_batch_job_boards). The context of 'queue' suggests asynchronous behavior, but no guidance is provided on prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_reject_applicationA
Destructive
Inspect

Reject an application, optionally with a reason and without the rejection email.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: candidate, cv.text, job
rejection_reason_idNoFrom hires_list_rejection_reasons
suppress_notificationNoSkip the rejection email to the candidate

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true, so the description does not need to restate that; it adds the optional 'suppress_notification' to skip the rejection emailaging the behavior. However, it does not disclose what happens on rejection: whether the application is permanently deleted, could be restored, or if any other side effects occur. The 'suppress_notification' is mentioned but its default behavior (notification sent by default) is not clarified, which might be important for an agent deciding whether to set it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the primary action and two key options. It is efficient with wordshare no fluff. It could arguably be improved by splitting for clarity but is appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 params, no output schema), the description is sufficient to understand the primary action and parameters. However, it lacks detail on potential consequences beyond the email suppression, such as whether the rejection is permanent or reversible (though 'unreject_application' sibling implies reversibility). It also doesn't state the return value structure, which might be needed for an agent to process the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, meaning 3 out of 4 parameters have descriptions in the schema. The description does not add meaning beyond the schema for 'id' and 'include'; it mentions 'rejection_reason_id' as 'optionally with a reason' and 'suppress_notification' as 'without the rejection email', which aligns with schema descriptions. No additional parameter semantics are provided beyond what schema already offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Reject', the resource 'application', and the optional modifiers ('with a reason' and 'without the rejection email'). It distinguishes this from siblings like hires_advance_application and hires_unreject_application by its clear action of rejection, and the presence of 'suppress_notification' differentiates it from batch reject tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when rejecting an application) but does not explicitly state when not to use it, such as when rejecting in bulk (use hires_batch_reject_applications) or when undoing a rejection (use hires_unreject_application). It gives no explicit comparison to siblings or conditions for choosing alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_remove_candidate_tagC
Destructive
Inspect

Remove one tag from a candidate.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
tagYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations include destructiveHint=trueaine, indicating a destructive operationcars, but the description does not add behavioral context such as whether the removal is irreversible, whether it affects other entities, or whether it checks for tag existence. The description simply states the action without transparently disclosing the consequences beyond what the hint implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, a single sentence that conveys the core action. It is front-loaded and has no extraneous information. However, its brevity contributes to the lack of detail in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema), the description is minimal but misses key context: no clarification of what a 'tag' is, no mention of required permissions, and no guidance on error handling if the tag does not exist. The annotation provides the destructive hint, but the description alone does not make it fully self-contained for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: 'id' is described as 'Candidate id or alias' but 'tag' has no description. The description does not compensate by explaining the tag parameter's format or how it should be specified (e.g., tag name vs ID). The description says 'Remove one tag' but does not connect that to the tag parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Remove one tag from a candidate') with a specific resource (candidate) and object (tag). It is not explicitly differentiated from siblings like hires_batch_remove_tags or hires_add_candidate_tags, but it is clear enough to distinguish the singular removal operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. For instance, it does not mention that this removes a single tag as opposed to multiple (hires_batch_remove_tags), nor does it clarify if this is the preferred tool for a candidate-specific tag removal. The description lacks any context about prerequisites (e.g., candidate must exist, tag must be attached).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_remove_from_job_boardB
Destructive
Inspect

Deactivate the job's publication on the given boards.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
boardsNoe.g. indeed, linkedin

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with the annotations (destructiveHint: true), and the term 'deactivate' aligns with the destructive nature. However, it adds little beyond the annotations; it does not clarify reversibility, impact on applications, or what happens if the 'boards' parameter is omitted. With annotations already covering the safety profile, this is adequate but not enriching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that front-loads the action and scope. There is no redundant wording or filler. It is instantly parseable and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only two parameters and no output schema. However, the description does not clarify the behavior when 'boards' is not provided (is it required for removal, or does it default to all boards?). This ambiguity is a gap in completeness, though the scope is otherwise clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (id and boards). The description's phrase 'given boards' loosely ties to the 'boards' parameter but adds no new semantic detail beyond the schema. Since the schema fully documents the parameters, the baseline of 3 applies, and the description does not compensate further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Deactivate the job's publication') and the resource ('on the given boards'). It is specific and understandable. However, it does not explicitly differentiate from the sibling 'hires_batch_remove_from_boards', which performs a similar action for multiple jobs, so it lacks explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the batch alternative or the publishing tool. The description does not mention any conditions, prerequisites, or exclusions. An agent might not know whether to use this single-job tool or the batch version based on the description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_restore_companyA
Destructive
Inspect

Restore a soft-deleted company; its public career site comes back online.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by mentioning the observable effect of restoring a company: the public career site comes back online. It does not reveal extended side effects, auth requirements, or edge cases, but the existing annotations (readOnlyHint, destructiveHint, openWorldHint) already cover the overall safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one front-loaded, informative sentence with no filler or repetition. It renders the essential purpose and an observable consequence with minimal packing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple restore operation with a single parameter, the description covers the main purpose and effect but it does not explicitly describe the parameter semantics, expected return, or potential error conditions. It is adequate for a low-complexity tool but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has only a numeric `id` with no descriptions, and the description does not explicitly state that `id` is the company ID. Since schema description coverage is 0%, the description should compensate, but it does not do so, leaving the agent to rely on the tool name and the phrase 'company' for inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a very specific action, 'Restore a soft-deleted company', and adds an outside consequence (career site comes back online). This clearly distinguishes it from adjacent tools like hires_create_company, hires_delete_company, and hires_update_company.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implicitly clear: to use when a company has been soft-deleted and needs to be brought back. However, there is no explicit guidance about when not to use it or alternatives to consider, which leaves the agent to infer the appropriate condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_rotate_job_webhook_secretB
Destructive
Inspect

Rotate the signing secret; the new one is returned once, the old stays valid for a grace window.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
webhook_idYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true and readOnlyHint=false, but the description adds useful behavioral context: the new secret is returned exactly once and the old secret remains valid during a grace window. This tells the agent that the secret is only visible at rotation time and that invalidation is deferred, which is valuable beyond the annotations. No contradictions with the structured hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, no filler. It front-loads the action ('Rotate the signing secret') and packs the essential behavioral details (return-once, grace period) into one concise clause. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter, destructive, no-output-schema tool, the description covers the most critical behavior: the secret's one-time return and the grace period, which directly affect how the returned value must be handled. What is missing is any detail about how the parameters map to the target webhook and what the response format is, but the core operational behavior is well captured.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: 'id' has a description ('Job id or alias'), but 'webhook_id' is bare. The tool description does not mention either parameter or clarify what 'webhook_id' identifies (beyond the name webhook). It does not compensate for the missing schema description, leaving webhook_id's role and format ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (rotate the signing secret) and a key side effect (new one returned once, old stays valid for a grace period). While it doesn't explicitly say 'job' in the description, the tool name and annotation title ('Rotate job webhook signing secret') make the resource specific and distinguish it from the sibling 'hires_rotate_webhook_secret'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to rotate the secret (e.g., after suspected compromise) and does not mention any alternatives or prerequisites. It also does not explicitly reference the sibling tool 'hires_rotate_webhook_secret' to clarify the distinction between job-specific and generic webhook secret rotation. The only behavioral note is about the grace period, which is more behavioral than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_rotate_webhook_secretA
Destructive
Inspect

Rotate a company webhook signing secret with zero downtime: the new signing_secret is returned once and the old one stays valid for a grace window.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompany id
webhook_idYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false, destructiveHint=true, and openWorldHint=true, which already signal a mutating, potentially destructive operation. The description adds critical context beyond these: that the old secret remains valid for a grace window (mitigating destructive risk) and that the new secret is returned only once. It also gives the zero-downtime behavior. This is strong transparency that enhances understanding of the operation's side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the core action and immediately states the key benefit (zero downtime) and the critical consequence (old secret stays valid). Every phrase adds value, with no wasted words. Perfect conciseness for a one-line tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (two parameters, no output schema), the description covers the essential aspects: purpose, key behaviors (zero downtime, grace window, one-time return), and param hints. The main gap is not mentioning that the returned secret is sensitive and should be handled securely, but that is inferable. It is complete enough for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: 'id' is described as 'Company id', but 'webhook_id' has no description. The description does not explain what these parameters are beyond the schema; however, the names are self-explanatory. It adds minimal value (e.g., confirming 'id' is a company id), but given partial coverage, a 3 is appropriate—not lower because the schema already conveys intent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('rotate a company webhook signing secret') with a concrete resource and a notable property (zero downtime). It distinguishes itself from the sibling hires_rotate_job_webhook_secret by specifying 'company webhook' vs 'job webhook', so an agent can tell them apart. It's not a 5 because it doesn't explicitly name the sibling or the condition for choosing between them, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when a company webhook secret needs rotation) and highlights the zero-downtime benefit. However, it does not explicitly state when not to use it (e.g., for job webhooks) or mention alternatives like the sibling hires_rotate_job_webhook_secret. The guidance is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_send_candidate_messageAInspect

Schedule an email to a candidate; without scheduled_at it is sent 15 minutes after creation.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
idYesCandidate id or alias
toYesRecipient emails
bccNo
bodyYesHTML
subjectYes
scheduled_atNoUnix seconds; default: now + 15 min
application_idNo
from_account_idNoMail account id; default: the API key owner's default account
reply_to_email_idNoMailbox message id to reply to
send_in_new_threadNoStart a new thread instead of replying

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a key behavioral trait beyond the annotations: the 15-minute default delay when scheduled_at is not provided. This is valuable because the annotations only say readOnlyHint=false and destructiveHint=false, which don't convey the scheduling behavior. The description doesn't mention whether this creates a draft or sends immediately, but the scheduling detail is a meaningful behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core purpose ('Schedule an email to a candidate') and immediately follows with the most important behavioral nuance (the 15-minute default). Every word earns its place; there is no fluff or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 11 parameters and no output schema, the description is relatively complete but leaves gaps. It doesn't explain what the response looks like (e.g., the created message ID), whether the email is sent immediately or queued, or how to handle threading (send_in_new_thread). The 15-minute default is helpful, but an agent might need to know if the tool returns a scheduled message object or just a success status. Given the parameter count and no output schema, a bit more context would be warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 64%, so the schema documents most parameters. The description adds the crucial default for scheduled_at ('now + 15 min'), which is not fully explicit in the schema ('default: now + 15 min' is in the schema, but the description reinforces it). However, the description doesn't explain the semantics of parameters like application_id, reply_to_email_id, or send_in_new_thread beyond what the schema already provides. With 64% coverage, the description partially compensates but doesn't fully bridge the gap for undocumented parameters like cc, bcc, and application_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Schedule an email to a candidate'. This clearly distinguishes it from message-related siblings like hires_batch_create_messages, hires_update_message, and hires_patch_message. It could be slightly clearer about whether it creates a new message vs. sends an existing one, but the verb 'schedule' and the schema fields (to, subject, body) make the core purpose clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context for when to use this tool: when you want to schedule an email to a candidate. It also explains the default behavior when scheduled_at is omitted. However, it doesn't explicitly state when NOT to use it or name alternatives like hires_batch_create_messages for bulk sending or hires_update_message for editing an existing message. The context is clear enough for an agent to select it for single-candidate email scheduling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_set_job_statusB
Destructive
Inspect

Change job status (publish, unpublish, archive).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
statusYesFrom hires_list_statuses, e.g. Draft, Public, Archived
includeNoEmbed: workflow, hiring_team, pipeline_stages

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is mutating and destructive (readOnlyHint=false, destructiveHint=true). The description confirms the mutation and names the statuses involved, but does not explain consequences such as visibility changes, reversibility, or whether archiving removes the job from boards.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. The verb and resource come first, and the parenthetical status list justifies its place by giving the caller the main valid values without restating the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a small mutation tool, the description plus schema covers the basics: the job identifier and the new status. However, it relies entirely on the schema to point at hires_list_statuses, and does not mention side effects or what happens to a published job when archived.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds a useful status vocabulary ('publish, unpublish, archive') but only loosely matches the schema's examples (Draft, Public, Archived) and does not clarify the id or include parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and resource: 'Change job status', with usable values 'publish, unpublish, archive'. It is not a tautology and is more specific than a generic update tool, though it does not explicitly contrast itself with related siblings like hires_update_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool instead of siblings such as hires_update_job, hires_publish_to_job_board, or hires_list_jobs. The only hint is the status parameter description, which is in the schema, not the tool description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_submit_career_applicationBInspect

Submit a career site application: creates the candidate and runs the pipeline automation.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
phoneNo
job_idYes
resumeNo
sourceNoSource identifier
answersNoForm answer objects
last_nameYes
first_nameYes
company_slugYes
linkedin_urlNo

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool creates a candidate and runs pipeline automation, which adds behavioral context beyond the annotations (readOnlyHint=false, destructiveHint=false). It clearly indicates side effects without contradicting annotations. However, it does not elaborate on the details of the pipeline automation or potential irreversible consequences, so it is not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the primary action. It is free of redundancy and easy to parse. However, given the tool's complexity (10 parameters, multiple roles), a bit more detail might be warranted, but as a short description it is appropriately structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is incomplete for an agent to use the tool correctly. It does not explain the purpose of parameters like resume, answers, source, or linkedin_url, nor does it describe what 'pipeline automation' entails. With no output schema and low schema coverage, the description should provide more context to ensure correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description offers no explanation of the parameters. With schema description coverage at only 20%, the agent is left to infer the meaning of key required fields like company_slug, job_id, first_name, last_name, and email from the schema, which itself lacks descriptions for most. The description does not compensate for this low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Submit a career site application') and specifies the outcome ('creates the candidate and runs the pipeline automation'). It is specific enough to indicate the tool's scope, but it does not explicitly contrast with similar sibling tools like hires_create_application or hires_create_candidate, leaving some ambiguity about exact boundaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. It only implies that it is for career site submissions, but there is no mention of scenarios to avoid or when to prefer a different tool. This is a significant gap given the large number of sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_submit_feedbackAInspect

Submit feedback about the API: missing features, issues, improvements. Rate limit: 5 per hour.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoAny JSON, max 4 KB
endpointNoe.g. /v2/candidates
issue_typeNo
descriptionYesMax 2000 chars
suggested_improvementNoMax 2000 chars

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate non-read-only status (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds a valuable rate limit ('5 per hour') and implies a write operation. It does not describe return behavior or side effects, but the rate limit is substantive extra context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. The purpose is stated first, followed by the rate limit constraint. Every word earns its place, and the structure is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple feedback submission tool with one required parameter and no output schema, the description covers the core purpose and a key constraint (rate limit). It does not state expected response or confirmation, but that is not critical for an agent to call it correctly. It feels complete enough for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80% with all parameters except issue_type having descriptions. The description adds no parameter-specific meaning, relying on the schema's existing descriptions. The undocumented issue_type has a self-explanatory enum, so the baseline 3 is appropriate; the description does not compensate further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Submit feedback') and resource ('the API'), with specific types of feedback (missing features, issues, improvements). It is unambiguous and distinguishes this tool as the sole feedback mechanism among many CRUD and list tools, so no sibling differentiation is needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: to report missing features, issues, or improvements. There are no exclusions or alternatives, but since this is a unique feedback tool, the guidance is sufficient. It lacks explicit 'when-not-to-use' but that's not critical here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_transfer_applicationBInspect

Transfer an application to another job by creating a new application there, optionally at a given stage.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
job_idYesTarget job
includeNoEmbed: candidate, cv.text, job
stage_idNoStage on the target job; defaults to its first stage

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey a write (`readOnlyHint: false`) and non-destructive (`destructiveHint: false`). The description adds that the action works by creating a new application and supports an optional stage, but it does not clarify what becomes of the original application (e.g., whether it remains, is deactivated, or is deleted). This is a meaningful yet non-contradictory omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded, with no filler. It quickly gives the mechanism and the key optional behavior, and every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for basic invocation: the sole required parameters (source application ID and target job ID) are implied. However, it does not mention what the API returns or whether the source application is retained. Given the tool is not read-only, at look the original application another job, an agent needs to know if this is a move or a copy, which remains ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, and the description adds little beyond what is in the schema. The phrase 'another job' aligns with job_id, 'optionally at a given stage' aligns with stage_id, but it does not explain `id` in a way that helps a caller (other than it being the source application). The hidden 25% (likely `id`) is not fully compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'transfer' plus 'application', 'another job', and 'creating a new application' clearly identifies the action and destination. It is reasonably distinguishable from other tools such as create_application or move_application, although it does not explicitly reference sibling tools to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool instead of alternatives like hires_move_application or hires_create_application. It provides no exclusions, preconditions, or contextual triggers beyond the inherent 'when you want to transfer to an application to another job'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_unreject_applicationA
Destructive
Inspect

Reopen a rejected application: status returns to active and rejected_at is cleared.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
includeNoEmbed: candidate, cv.text, job

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate `destructiveHint: true` and `readOnlyHint: false`. The description adds specific changes beyond annotations: the status becomes active and rejected_at is cleared. No contradiction; it gives precise state transition information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is one short, front-loaded sentence with a colon separating the action from its effects. There is no filler, and each phrase adds meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description is complete: it tells exactly what it does, the visible effect on status and timestamp, and annotations cover the destructive nature. No critical information missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes `include` and the required `id` is understandable from the tool name and description ('application ID'). The description itself does not add extra parameter semantics, but for only two parameters this minimal coverage is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'reopen' and names the resource (rejected application) plus its concrete effects ('status returns to active', 'rejected_at is cleared'). This clearly distinguishes it from generic update and opposite of reject.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when an application has been rejected and needs to be made active again, but it does not explicitly mention alternatives like `hires_update_application` or state when not to use this tool. The context is clear but the guidance is more implicit than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_applicationB
Destructive
Inspect

Update application fields. stage_id performs a full stage transition with the target stage's automation, like hires_move_application.

ParametersJSON Schema
NameRequiredDescriptionDefault
cvNoReplace or attach a CV
idYes
includeNoEmbed: candidate, cv.text, job
stage_idNoTarget stage; runs its workflow automation
is_disqualifiedNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry destructiveHint=true and readOnlyHint=false, so the mutation profile is covered. The description adds useful behavioral detail by saying stage_id triggers the target stage's workflow automation as a full stage transition. It does not disclose side effects for fields like is_disqualified or the CV parameter, but the key stage-change behavior is surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, with the primary action front-loaded and the important stage_id distinction in the second sentence. Every clause earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter mutation tool with nested objects, destructiveHint, no output schema, and many related sibling tools, the description is too thin. It does not state what happens when is_disqualified is passed, how it relates to specialized actions like disqualification, or how it compares to other application-moving tools beyond the single stage_id analogy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%, and the description adds almost no parameter-level meaning beyond stage_id. It repeats the stage_id behavior already present in the schema, but leaves id and is_disqualified semantically undocumented, and adds no guidance on cv or include usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb/resource ('Update application fields') and adds a meaningful nuance: stage_id performs a full stage transition with automation, likened to hires_move_application. It is more than a tautology and helps distinguish the tool from generic update tools, though it could be more explicit about exactly which application fields are covered.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is implied guidance: stage_id behavior is said to be like hires_move_application, which informs how the tool may be used. However, there is no explicit statement of when to prefer this tool over related siblings (hires_move_application, hires_disqualify_candidate, hires_reject_application) and no when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_candidateA
Destructive
Inspect

Update candidate fields, profile answers or resume text. For an attached resume pass the parsed text via resume_text; never inline binary data.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
cityNoAlso used to resolve timezone
emailNo
phoneNo
stateNo
job_idNoCreates a new application for this job
countryNoName or ISO code
profileNoProfile answers keyed by question text or question_id
stage_idNoStage for that application; requires job_id
timezoneNoIANA, e.g. America/Los_Angeles; resolved from city and country if omitted
last_nameNo
first_nameNo
resume_textNoPlain text extracted from the resume; stored as a text/plain attachment. No binary or base64.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, so the description does not need to repeat that. It adds the constraint about resume_text (never inline binary data), which is useful context but not behavioral disclosure. The description does not explain what happens to existing fields when updated (e.g., overwrite behavior) or whether changes are reversible. It adds some value but not enough to exceed a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no fluff. The primary purpose is front-loaded, and the resume_text note is placed after the general purpose. Every word earns its place. This is exemplary conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, a nested profile object, and no output schema, this description is severely under-specified. It does not explain the structure of profile answers, the requirement of job_id for stage_id, the side effect of creating an application, or the expected response. The schema covers some details, but the description adds almost nothing beyond the resume_text constraint. An agent calling this tool would lack critical context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 62% of parameters with descriptions. The description groups fields into categories (candidate fields, profile answers, resume text) and adds the note that resume_text should be parsed text, which is slightly beyond the schema. However, it does not explain the relationships between job_id and stage_id, the creation of applications, or timezone resolution—details already in the schema. The added value is modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Update candidate fields, profile answers or resume text.' It specifies the resource (candidate) and the three types of updates, which distinguishes it from sibling tools like hires_update_application or hires_update_company. The verb 'update' is explicit and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you need to update a candidate) but provides no explicit guidance on when to choose this over alternatives. It does not mention that other update tools exist for different resources, nor does it note any prerequisites or conditions. The note about resume_text is a constraint, not a usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_career_site_settingsA
Destructive
Inspect

Set the public career site language; job and company pages follow it unless a job overrides it.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLocale, e.g. de-DE; values from hires_list_languages. Omit to keep, null to reset to en-US
company_idNoOmit for the API key's own company

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include destructiveHint=true, and the description aligns with that by indicating a mutating operation. It adds the behavior that jobs can override the site language, which is useful. However, it does not mention that the operation may affect already-published jobs or whether changes are reversible, and there is no auth information. Given the destructive annotation, more disclosure about consequences would be valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the core purpose and then adds the crucial caveat about job overrides. Every word carries meaning; no fluff. This is exemplary conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only 2 optional parametersaire, and the schema covers them fully. With destructiveHint=true, the description could mention that the change affects all job/company pages, but it already does. An output schema does not exist, so no need to explain return values. The description is sufficient for correct invocation in most cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already provides detailed descriptions for both parameters, including examples and the 'omit to keep, null to reset' clause. The description adds minimal additional meaning because it explains the effect of the language parameter (site-wide language). Since coverage is high, baseline is 3; the description's clarification about scope raises it slightly to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool sets the public career site language diagnostic: it names the specific resource (career site settings) and the specific action (set the language), and it explains that job and company pages follow the site language unless a job overrides it. This distinguishes it from the sibling get_career_site_settings and from the many other 'update' tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what language is set and that jobs can override it, implying when the tool is appropriate. It does not explicitly name the sibling get_career_site_settings or say 'use this when you need to update language, not read it', but the context is clear. It lacks exclusions or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_companyA
Destructive
Inspect

Update a company profile, owner contacts or logo; name, slug and logo changes alter the public career site.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
urlNoCompany profile URL
logoNo
nameNo
websiteNo
company_owner_nameNo
is_staffing_agencyNo
company_owner_emailNo
company_owner_phoneNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's claim that changes 'alter the public career site' adds valuable context beyond annotations. It discloses a specific consequence of the mutation, which is helpful. However, it does not detail what is destroyed or whether changes are reversible, but the side-effect note is a strong addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the primary purpose and adds a critical side-effect note. There is no fluff, and every word contributes to understanding the tool's function and impact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters, a nested logo object, and no output schema, the description is too brief. It does not mention the required 'id' parameter, nor does it explain fields like website, is_staffing_agency, or the structure of the logo object beyond the schema's required fields. It lacks guidance on expected response or error conditions. Given the tool's complexity and low schema coverage, more detail is necessary for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 11%, with only 'url' having a description. The description mentions 'owner contacts' and 'logo' and notes 'name, slug and logo changes' but does not explain all parameters such as website, is_staffing_agency, or company_owner_phone. It provides some semantic context for a few fields but leaves many undocumented. Given the low coverage, the description partially compensates but not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Update a company profile, owner contacts or logo'. It specifies the resource (company) and the verb (update), and distinguishes from create/delete by the update verb. It also mentions side effects on the public career site, which adds specificity. However, it does not explicitly differentiate from other update tools like update_career_site_settings, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need to modify company profile fields, but it does not explicitly state when to use this tool versus alternatives such as update_career_site_settings or update_job. It gives a warning about side effects ('name, slug and logo changes alter the public career site') but does not provide exclusions or alternative conditions. Context is clear but not complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_email_templateA
Destructive
Inspect

Update an email template; omitted fields keep their values.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyNoHTML; placeholders allowed
nameNo
subjectNoPlaceholders allowed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds the key behavioral trait: omitted fields are preserved (partial update semantics), which is not visible in the schema or annotations. This is valuable context beyond the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence that states the operation and the most important behavioral nuance. No wasted words, and the key partial-update semantics are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 4-param update tool with no output schema, the description plus annotations cover the essential context: what it does, that it's destructive, and that it's a partial update. It doesn't mention return values, but the absence of an output schema lowers that burden. It could note that id is required, but the schema already marks it required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: body and subject have descriptions, while id and name do not. The description's partial-update note clarifies that all non-id fields are optional in effect, which adds meaning beyond the schema. However, it doesn't explain what 'name' represents or any constraints on id, so the description only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update an email template') and the resource, which distinguishes it from create/delete/get/list siblings. It doesn't explicitly name a sibling alternative, but the verb+resource combination is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a partial-update use case ('omitted fields keep their values'), which tells the agent when to use this over create (when the template already exists). However, it doesn't explicitly state when not to use it or mention alternatives like create_email_template or delete_email_template.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_formB
Destructive
Inspect

Update a form's name and question composition.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes
questionsNoQuestion ids to attach

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool is destructive (destructiveHint=true) and read-write (readOnlyHint=false). The description adds minimal context about what gets changed (name and question composition) but does not disclose whether existing questions are replaced, whether partial updates are allowed, or what the response contains. Since annotations carry the safety burden, this does not contradict them, but it adds limited behavioral nuance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence conveys the core action and target. It is concise and front-loaded with the verb and resource. There is no redundancy or fluff. However, it is so short that it omits details that might be expected, but it remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three parameters, no output schema, and destructive annotations, the description is insufficiently detailed. It does not explain that 'id' is required, that 'questions' is optional, or what happens to existing questions when updating (replace vs. append). The agent lacks guidance on the exact behavior and outcome, making the tool hard to use correctly without external knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only 'questions' has a description). The description clarifies that 'name' and 'questions' are the updatable fields, mapping to the schema parameters, but does not elaborate on the 'id' parameter or the meaning of 'question composition' beyond what the schema already provides (array of numbers). It partially compensates for the low coverage but leaves ambiguity about whether 'questions' replaces or appends.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action ('Update') and the target resource ('a form'), and specifies the two aspects being modified: 'name and question composition'. This clearly distinguishes it from create/delete/get form tools, though it does not explicitly name sibling alternatives. It is specific enough for an agent to identify the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'hires_create_form' or 'hires_update_form_question'. It does not mention that this tool replaces the entire question set, nor does it describe prerequisites or typical use cases. An agent must infer usage from the schema and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_form_questionC
Destructive
Inspect

Set a question's status (required, optional, hidden) on a form.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
form_idYes
question_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true and readOnlyHint=false, so the description adds no extra behavioral context such as reversibility, side effects, or permission requirements. The description only restates the action, providing no value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no waste. It is appropriately front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three required parameters and no output schema, the description is too sparse. It does not clarify what form_id and question_id refer to, nor does it describe the response or any side effects beyond the destructive hint already in annotations. The description is minimally viable but leaves the agent to infer critical details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the three parameters. It only mentions the status enum, which is already in the schema. No compensation is made for the missing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (set a question's status) and the resource (a form), and it enumerates the allowed statuses. It is not a tautology and is distinct from siblings like hires_update_form or hires_update_question, though it does not explicitly differentiate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as hires_update_form or hires_update_question. The context implies it is for modifying the status of a question within a form, but there is no explicit when-to-use or when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_jobB
Destructive
Inspect

Update a job. Send only the fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob id or alias
titleNo
statusNoFrom hires_list_statuses, e.g. Draft, Public
form_idNoApplication form to assign
includeNoEmbed: workflow, hiring_team, pipeline_stages
languageNoJob page locale, e.g. de-DE; null = follow the career site language, omit = keep current. Values: hires_list_languages
is_remoteNoRemote job; with empty city, state and postal code Indeed posts it nationwide
salary_maxNo
salary_minNo
category_idNoFrom hires_list_categories
descriptionNoHTML allowed
workflow_idNoWorkflow to assign
department_idNoFrom hires_list_departments
location_cityNoEmpty string clears it; remote without city = nationwide posting on Indeed
parent_job_idNoParent job; makes this a satellite job
salary_periodNo
internal_titleNoHiring team only
location_stateNo
internal_job_idNoExternal reference id
salary_currencyNoISO code, e.g. USD
location_countryNo
education_level_idNoFrom hires_list_education_levels
employment_type_idNoFrom hires_list_employment_types
knockout_questionsNoYes/No screening questions added to the application form
ai_scoring_criteriaNoDiff-replace by id: with id update, without id create, absent ones are removed; [] detaches all; omit to keep
experience_level_idNoFrom hires_list_experience_levels
resume_field_statusNo
location_postal_codeNo
location_full_addressNo
location_street_addressNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's role is limited. It adds the partial-update behavior ('Send only the fields to change'), implying omitted fields are preserved. This is useful context but does not cover side effects like job board re-posting or array diff-replacement, which are detailed only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two short sentences with no filler. It front-loads the purpose and includes a critical usage instruction. However, given the tool's 30 parameters and complexity, a slightly more structured description could have provided additional guidance without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's complexity (30 parameters, no output schema, destructive annotations), the description is minimal. It fails to mention key behavioral details like the diff-replace semantics for arrays, remote job implications, or the fact that fields not sent are left unchanged (beyond the implicit 'send only fields to change'). The schema covers many details, but the description does not synthesize them for the agent, leaving significant context gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, and the schema provides detailed descriptions for many parameters, including references to list tools and enums. The tool description itself does not add any parameter-level information beyond what the schema already offers. With moderate coverage, the description does not compensate for gaps, so it adds minimal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a job', which is a specific verb and resource. It distinguishes from create/delete tools, but not from hires_set_job_status, which is a more specialized sibling that also updates job fields. However, the name and description make the primary purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction 'Send only the fields to change' provides a clear usage rule for partial updates, but it does not offer guidance on when to use this tool versus alternatives like hires_set_job_status. No exclusions or alternative routing are given, leaving the agent to infer the distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_messageB
Destructive
Inspect

Replace a scheduled message before it is sent; all required fields must be provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
idYes
toYesRecipient emails
bccNo
bodyYesHTML
subjectYes
scheduled_atNoUnix seconds
from_account_idNoDefault: API key owner's default mail account
reply_to_email_idNoMailbox message id to reply to
send_in_new_threadNoSend as a new thread

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate destructiveHint=true and readOnlyHint=false, so the description doesn't need to repeat that. It adds the timing constraint 'before it is sent', which is useful behavioral context. However, it doesn't disclose other behavioral aspects like what happens to the original message or if it's a full overwrite, though that's implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately states the core purpose. It's front-loaded and contains no filler. Every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 10 parameters and no output schema, the description is too brief to be complete. It doesn't mention return values, error conditions, or any prerequisites. An agent would lack context on what to expect after calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides no parameter-specific information beyond the schema. With schema coverage at 60%, four parameters (id, cc, bcc, subject) lack descriptions, and the description does not fill that gap. It only states that required fields must be provided, which is generic.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool replaces a scheduled message before it is sent, which is specific and clear. It uses the verb 'replace' and identifies the resource as 'scheduled message', distinguishing it from generic update tools. However, it does not explicitly contrast with the sibling 'hires_patch_message', so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives like hires_patch_message or hires_send_candidate_message. It only mentions that all required fields must be provided, which is a constraint, not a usage context. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_noteA
Destructive
Inspect

Update a note's body or visibility in place, without a new timeline item.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyNoHTML allowed
includeNoEmbed: user (author), candidate
visibilityNoall (default) or private

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is a mutating operation. The description adds valuable context beyond the annotations: the update happens 'in place' and does not create a new timeline item. This is a meaningful behavioral disclosure because it tells the agent the operation won't have the side effect of adding a timeline entry. It doesn't disclose reversibility or permission requirements, but the annotations carry the destructive hint, so the description adds sufficient context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action ('Update a note's body or visibility') and then adds the critical behavioral qualifier ('in place, without a new timeline item'). Every word earns its place; there is no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update tool with four parameters and no output schema, the description is nearly complete. It identifies the resource, the updatable fields, and the key side-effect distinction. The only minor gap is that it doesn't mention the 'include' parameter's behavior or any prerequisites (e.g., the note must exist), but the schema covers the parameter descriptions and the operation is straightforward. The annotations cover the destructive nature, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so the schema already documents three of the four parameters (body, include, visibility). The description adds the semantic distinction that body and visibility are the updatable fields, which maps to the schema. The 'id' parameter is required but has no description in the schema, and the description doesn't explain it either, though it's self-evident as the note identifier. The description doesn't add much beyond the schema, but the schema covers most parameters, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Update'), a specific resource ('a note's body or visibility'), and a key behavioral distinction ('in place, without a new timeline item'). This clearly differentiates it from hires_create_note and hires_delete_note, and even from hires_update_message, since it explicitly names the note resource and the no-timeline-item behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in place, without a new timeline item' gives clear context for when to use this tool: when you want to modify an existing note without creating a new timeline entry. It implies the alternative (hires_create_note) creates a new timeline item, but it doesn't explicitly name the alternative or state when not to use it. The sibling list contains hires_create_note, so the contrast is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_notification_messageA
Destructive
Inspect

Update the subject, body or send time of a scheduled notification email; sent messages cannot be changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyYesHTML
subjectYes
scheduled_atNoUnix seconds; omit to keep the current schedule

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the mutation nature is known. The description adds valuable context beyond annotations: it clarifies the operation applies only to scheduled (unsent) notification emails and that sent messages cannot be changed. This helps set expectations about the tool's limitations without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the verb, resource, and fields, and includes a crucial constraint (sent messages cannot be changed). There is no waste or redundancy; every word contributes to understanding the tool's purpose and limitations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an update tool with no output schema and moderate parameter descriptions, the description covers the essential points: what is updated, the three fields involved, and the key constraint on sent messages. It does not detail return values or errors, but that is not expected given no output schema. It is sufficiently complete for an agent to call it correctly, though it could mention that scheduled_at is optional to keep current schedule, but that appears in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (body and scheduled_at have descriptions; id and subject do not). The description mentions the updatable fields (subject, body, send time) which maps to three of the four parameters, adding some context to underscripted ones. However, it does not provide additional syntax or constraints beyond what the schema already describes, so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb 'Update', the resource 'scheduled notification email', and the exact fields affected (subject, body, send time). It also distinguishes from siblings by focusing on scheduled notification emails and explicitly noting that sent messages cannot be changed, which is a differentiator from generic update tools like hires_update_message.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating 'scheduled notification email' and 'sent messages cannot be changed', which tells the agent when NOT to use it (sent messages). However, it does not explicitly name alternative tools or provide explicit when-to/when-not-to conditions beyond that constraint. The guidance is implicit rather than direct.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_nurture_campaignA
Destructive
Inspect

Update a nurture campaign. Send the full steps list: existing steps with their id, removed steps with is_deleted=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
stepsYesExecuted in order. Each field names the step types that use it and whether it is required there.
titleYes
stage_idNoStage that triggers the campaign
timezoneNoIANA timezone, e.g. America/New_York
delay_timeNoDelay before the first step, seconds (max 86400); wins over relative_days + relative_time if both are sent
send_to_allNoSend to all candidates in the stage, not only new ones (default false)
workflow_idNoWorkflow the campaign is bound to
relative_daysNoDays after the trigger for the first step; use with relative_time
relative_timeNoTime of day for the first step, seconds from midnight
response_move_to_stage_idNoStage to move a candidate to when they reply

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains how to mark steps as removed (is_deleted=true), which exposes the destructive aspect of the operation. However, it does not mention side effects like whether omitted steps are deleted, whether sent steps can be edited, or any irreversible consequences of updating.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences deliver the core action and the most important usage constraint. Every word adds value; no boilerplate or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential replacement semantics, but given the schema's field density and destructive annotation, an agent would benefit from knowing expected side effects (e.g., what happens to removed steps' history, whether all fields must be re-sent, and whether the update is atomic). These gaps are not covered by annotations or output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes fields such as id ('Existing step id (update only)') and the field-level requirements per step type with high coverage (~90%). The description adds the valuable 'send the full steps list' protocol, which is not in the schema, but beyond that it mostly restates what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Update a nurture campaign') and clearly conveys the tool's purpose. It does not explicitly contrast with sibling tools beyond the verb itself, but 'update' unambiguously distinguishes it from create/delete/get/list operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The key instruction—'Send the full steps list: existing steps with their id, removed steps with is_deleted=true'—is critical operational guidance that protects the agent from accidentally dropping steps. It implies a full-replacement semantic, though it doesn't spell out consequences of omitting fields or explicitly say when to prefer alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_update_questionB
Destructive
Inspect

Update the text, type or options of a question.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
textYes
typeYesFrom hires_list_question_types
optionsNoAnswer options for select/multiselect types

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already supply the relevant safety profile (readOnlyHint=false, destructiveHint=true), and the description adds no detail beyond restating the mutation, such as whether the update overwrites all fields, how type changes affect existing options, or any authorization requirements. It is consistent with the annotations but does not disclose behavior beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 11-word sentence with the action verb front-loaded and no filler, repetition, or duplication of structured data. It earns its place and is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 4-parameter mutation, the schema covers required fields and the type-value source, and annotations flag destructiveness, so the description is minimally workable. However, it omits practical details an agent may need, such as whether options are expected when type changes to select/multiselect, the effect of changing a question's type, or what the update returns, since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%; type and options already have descriptions, while id and text do not. The description enumerates the editable fields, which adds a little meaning, but it does not explain id or the semantics of 'text' beyond the property name, so the compensation for the undocumented parameters is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Update') and names the exact resource ('a question') plus the editable fields ('text, type or options'), which separates it from create/delete/get/list question tools. It does not explicitly contrast with the sibling tool hires_update_form_question, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool or when to choose another: no mention of create/delete/list_question_types or update_form_question. The only usage cue is the verb 'Update,' which forces the agent to infer applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_upload_application_attachmentCInspect

Upload a base64-encoded file as an application attachment.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
fileYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=false and destructiveHint=false, and the description only restates the mutation by saying 'upload.' It adds no information about file size limits, overwrite behavior, permissions, or what response the caller should expect, which matters for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler. It front-loads the action and encoding requirement, making it easy to scan, though it under-specifies important details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a nested file object and no output schema, this description is incomplete. It does not state that 'id' refers to an application, what input restrictions exist (e.g., max size, supported mime types), or what success/failure looks like, leaving important operational gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description must clarify the parameters, but it only mentions that the file is base64-encoded, which partially hints at the 'data' field. It does not explain that 'id' is the application ID, nor does it address 'file_name', 'mime_type', or 'size' semantics beyond what a developer might guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'upload a base64-encoded file as an application attachment.' This distinguishes it from broader sibling tools such as hires_upload_attachment and hires_upload_candidate_file, though it does not explicitly name the alternatives or their differences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus hires_upload_attachment or hires_upload_candidate_file. No context is provided about prerequisites, such as needing an existing application ID or when a candidate file upload would be more appropriate, so agents are left to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_upload_attachmentAInspect

Upload a base64 file as an attachment. voicemail: wav/mp3, max 20 MB, no object_id, the returned uuid serves as attachment_uuid in nurture voicemail steps. Returns uuid, url, file, relative_time.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes
categoryYesDetermines allowed extensions and the object_id owner type
object_idNoOwner id per category: candidate, application, comment, job note or company; omit for voicemail
company_idNoCompany that owns object_id; default: the authenticated company

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only and not destructive. The description adds meaningful behavioral context beyond the annotations: voicemail wav/mp3 constraints, the 20 MB limit, the no-object_id rule, and the downstream purpose of the returned uuid. It does not cover error behavior, but that is not a critical gap for an upload operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: one states the operation, one gives key usage constraints, and one states the return values. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with a nested file object and no output schema, the description covers the required inputs, important constraints, and return fields. It leaves some category-specific nuances to the schema, but together they are sufficient. More explicit guidance about choosing among sibling upload tools would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 75% schema coverage, the schema documents most parameters. The description adds useful semantics by specifying voicemail file types, maximum size, and the no-object_id case, while also explaining that the returned uuid becomes attachment_uuid in nurture voicemail steps. It does not expand on every category's object_id requirements, but the schema partly covers that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action and resource: 'Upload a base64 file as an attachment.' It also adds voicemail-specific context that sharpens the purpose. However, it does not distinguish this tool from sibling tools like hires_upload_application_attachment or hires_upload_candidate_file, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The voicemail details and the note about 'attachment_uuid in nurture voicemail steps' imply when this tool is useful. But the description never explicitly says when to prefer this tool over the more specialized upload siblings, and it gives no exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hires_upload_candidate_fileAInspect

Upload a base64 file to a candidate. Hosts truncate tool arguments above ~20 KB, so for resumes prefer resume_text in hires_create_candidate or hires_update_candidate.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCandidate id or alias
fileYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a useful behavioral warning not present in the annotations: hosts may truncate tool arguments above ~20 KB. It also implicitly indicates a non-read mutation ('Upload'), consistent with readOnlyHint=false. The description does not disclose additional side effects (e.g., whether it replaces an existing file), but the truncation warning provides substantial practical behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, starts with the core action, then moves to the most critical usage constraint in a compact phrase. Every sentence adds value, and there is no filler or repeated annotation content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides enough for the basic action and even includes a clever caution about truncation, making it more complete than a bare upload statement. However, with no output schema, no return shape, and limited explanation of the file object or the resulting behavior, it is not fully complete for an agent that needs to know what a successful upload will produce.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds little beyond the schema: 'base64 file' simply echoes the data field description, and 'to a candidate' only restates the id property. With 50% schema description coverage, the description should have clarified the meaning of file or file_name, but it does not go beyond names and the basic data format. It therefore largely fails to compensate for the schema's missing information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Upload'), a specific resource ('base64 file to a candidate'), and points to the matched sibling tools such as hires_upload_application_attachment. It leaves no ambiguity that this is a candidate-level file upload rather than an application or generic attachment. This is more than enough for an agent to select it from the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly warns against using this tool for resumes and names the preferred siblings (hires_create_candidate, hires_update_candidate) when resume_text is available. It does not enumerate the full set of alternatives, such as upload_application_attachment, so the guidance is clear on one important edge case but not exhaustive for all sibling distinctions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 127 tool updates
    • Changedhires_add_candidate_tags4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • removedInput schema / properties / tags / description
        Removed value: -"Array of tag strings to add."
    • Changedhires_add_hiring_team_member4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
      • removedInput schema / properties / user_id / description
        Removed value: -"User ID to add to the hiring team."
    • Changedhires_advance_application4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job. Set to `candidate,job` so the widget can link the candidate name to their profile and the job title to its pipeline view."New value: +"Embed: candidate, cv.text, job. Pass candidate,job so the widget can link to the candidate and job pages"
    • Changedhires_batch_add_tags4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / ids / description
        Previous value: -"Candidate IDs to tag (max 100)."New value: +"Candidate ids"
      • removedInput schema / properties / tags / description
        Removed value: -"Tag names to attach."
    • Changedhires_batch_create_messages15 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / messages / description
        Removed value: -"Array of message payloads to create (max 100)."
      • removedInput schema / properties / messages / items / additionalProperties
        Removed value: -false
      • removedInput schema / properties / messages / items / properties / application_id / description
        Removed value: -"Optional application ID linked to this message."
      • removedInput schema / properties / messages / items / properties / bcc / description
        Removed value: -"Blind carbon-copy recipient email addresses."
      • changedInput schema / properties / messages / items / properties / body / description
        Previous value: -"Email body as HTML."New value: +"HTML"
      • removedInput schema / properties / messages / items / properties / candidate_id / description
        Removed value: -"Target candidate ID for this message."
      • removedInput schema / properties / messages / items / properties / cc / description
        Removed value: -"Carbon-copy recipient email addresses."
      • changedInput schema / properties / messages / items / properties / from_account_id / description
        Previous 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"
      • changedInput schema / properties / messages / items / properties / reply_to_email_id / description
        Previous value: -"Optional mailbox message ID to reply to."New value: +"Mailbox message id to reply to"
      • changedInput schema / properties / messages / items / properties / scheduled_at / description
        Previous value: -"Unix timestamp (seconds). If omitted, defaults to created time plus 900 seconds."New value: +"Unix seconds; default now + 900"
      • changedInput schema / properties / messages / items / properties / send_in_new_thread / description
        Previous 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"
      • removedInput schema / properties / messages / items / properties / subject / description
        Removed value: -"Email subject line."
      • changedInput schema / properties / messages / items / properties / to / description
        Previous value: -"Primary recipient email addresses."New value: +"Recipient emails"
    • Changedhires_batch_job_boards3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / jobs / description
        Previous value: -"Array of job IDs"New value: +"Job ids"
    • Changedhires_batch_move_applications4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / ids / description
        Previous value: -"Application IDs to move (max 100)."New value: +"Max 100"
      • removedInput schema / properties / stage_id / description
        Removed value: -"Target pipeline stage ID."
    • Changedhires_batch_publish_to_boards4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / boards / description
        Previous value: -"Array of board identifiers to activate (e.g. ['indeed', 'linkedin'])"New value: +"e.g. indeed, linkedin"
      • changedInput schema / properties / jobs / description
        Previous value: -"Array of job IDs to publish"New value: +"Job ids"
    • Changedhires_batch_reject_applications4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / ids / description
        Previous value: -"Application IDs to reject (max 100)."New value: +"Max 100"
      • changedInput schema / properties / rejection_reason_id / description
        Previous value: -"Optional rejection reason ID."New value: +"From hires_list_rejection_reasons"
    • Changedhires_batch_remove_from_boards4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / boards / description
        Previous value: -"Array of board identifiers to deactivate (e.g. ['indeed', 'linkedin'])"New value: +"e.g. indeed, linkedin"
      • changedInput schema / properties / jobs / description
        Previous value: -"Array of job IDs to depublish"New value: +"Job ids"
    • Changedhires_batch_remove_tags4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / ids / description
        Previous value: -"Candidate IDs to remove tags from (max 100)."New value: +"Candidate ids"
      • removedInput schema / properties / tags / description
        Removed value: -"Tag names to remove."
    • Changedhires_cancel_all_notification_messages3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / candidate_id / description
        Previous value: -"Candidate ID (numeric) or alias."New value: +"Candidate id or alias"
    • Changedhires_create_application12 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / candidate_id / description
        Previous value: -"Candidate ID (numeric) or alias."New value: +"Candidate id or alias"
      • removedInput schema / properties / cv / additionalProperties
        Removed value: -false
      • removedInput schema / properties / cv / description
        Removed value: -"Optional CV/resume to attach."
      • changedInput schema / properties / cv / properties / data / description
        Previous value: -"Base64-encoded file content."New value: +"Base64 file content"
      • removedInput schema / properties / cv / properties / file_name / description
        Removed value: -"Original file name."
      • changedInput schema / properties / cv / properties / mime_type / description
        Previous value: -"MIME type (e.g. application/pdf)."New value: +"e.g. application/pdf"
      • changedInput schema / properties / cv / properties / size / description
        Previous value: -"Optional file size in bytes."New value: +"Bytes"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job."New value: +"Embed: candidate, cv.text, job"
      • removedInput schema / properties / job_id / description
        Removed value: -"Job ID to apply the candidate to."
      • changedInput schema / properties / stage_id / description
        Previous value: -"Pipeline stage ID. If omitted, defaults to the first stage."New value: +"Defaults to the first stage"
    • Changedhires_create_candidate16 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / city / description
        Previous value: -"Candidate city for location/timezone resolution."New value: +"Also used to resolve timezone"
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID. Required only when the API key has access to multiple companies."
      • changedInput schema / properties / country / description
        Previous value: -"Candidate country name or ISO code."New value: +"Name or ISO code"
      • changedInput schema / properties / email / description
        Previous value: -"Candidate email address. Used for deduplication."New value: +"Used for deduplication"
      • removedInput schema / properties / first_name / description
        Removed value: -"Candidate first name."
      • changedInput schema / properties / job_id / description
        Previous value: -"Job ID to create an application for this candidate."New value: +"Creates an application for this job"
      • removedInput schema / properties / last_name / description
        Removed value: -"Candidate last name."
      • removedInput schema / properties / phone / description
        Removed value: -"Candidate phone number."
      • removedInput schema / properties / profile / additionalProperties
        Removed value: -{
        -  "type": "string"
        -}
      • changedInput schema / properties / profile / description
        Previous value: -"Key-value map of profile field answers. Keys can be question text or question_id. Example: {\"Current job title\": \"Senior Engineer\"}."New value: +"Profile answers keyed by question text or question_id"
      • changedInput schema / properties / resume_text / description
        Previous value: -"Plain-text resume content extracted by the model from an attached PDF/DOCX/etc. Stored as a text/plain attachment on the candidate. Do not pass binary or base64 here — only the parsed text content."New value: +"Plain text extracted from the resume; stored as a text/plain attachment. No binary or base64."
      • changedInput schema / properties / stage_id / description
        Previous value: -"Pipeline stage ID for the initial application. Requires job_id."New value: +"Initial stage; requires job_id"
      • removedInput schema / properties / state / description
        Removed value: -"Candidate state or region."
      • changedInput schema / properties / timezone / description
        Previous value: -"IANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted."New value: +"IANA, e.g. America/Los_Angeles; resolved from city and country if omitted"
    • Changedhires_create_company14 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_owner_email / description
        Removed value: -"Company owner email address"
      • removedInput schema / properties / company_owner_name / description
        Removed value: -"Company owner full name"
      • removedInput schema / properties / company_owner_phone / description
        Removed value: -"Company owner phone number"
      • removedInput schema / properties / is_staffing_agency / description
        Removed value: -"Whether this company is a staffing agency"
      • removedInput schema / properties / logo / additionalProperties
        Removed value: -false
      • removedInput schema / properties / logo / description
        Removed value: -"Company logo file"
      • changedInput schema / properties / logo / properties / data / description
        Previous value: -"Base64 content"New value: +"Base64 file content"
      • removedInput schema / properties / logo / properties / file_name / description
        Removed value: -"Original file name"
      • changedInput schema / properties / logo / properties / mime_type / description
        Previous value: -"MIME type (e.g. image/png)"New value: +"e.g. image/png"
      • changedInput schema / properties / logo / properties / size / description
        Previous value: -"File size in bytes"New value: +"Bytes"
      • removedInput schema / properties / name / description
        Removed value: -"Company name"
      • removedInput schema / properties / website / description
        Removed value: -"Company website URL"
    • Changedhires_create_email_template6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / body / description
        Previous value: -"Email body HTML (supports placeholders)"New value: +"HTML; placeholders allowed"
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID"
      • removedInput schema / properties / name / description
        Removed value: -"Template name"
      • changedInput schema / properties / subject / description
        Previous value: -"Email subject line (supports placeholders like {{first_name}}, {{job_title}})"New value: +"Placeholders allowed"
    • Changedhires_create_form5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID."
      • removedInput schema / properties / name / description
        Removed value: -"Form name."
      • changedInput schema / properties / questions / description
        Previous value: -"Array of question IDs to attach to this form."New value: +"Question ids to attach"
    • Changedhires_create_interview8 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / end_time / description
        Previous value: -"Interview end time as Unix timestamp (seconds, must be after start_time)."New value: +"Unix seconds, after start_time"
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, application, job."New value: +"Embed: candidate, application, job"
      • changedInput schema / properties / interviewer_ids / description
        Previous value: -"List of user IDs who will conduct the interview."New value: +"Interviewer user ids"
      • changedInput schema / properties / location / description
        Previous value: -"Location string; resolved to existing record or created automatically."New value: +"Free text"
      • changedInput schema / properties / start_time / description
        Previous value: -"Interview start time as Unix timestamp (seconds)."New value: +"Unix seconds"
    • Changedhires_create_job42 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / ai_scoring_criteria / description
        Previous value: -"AI scoring criteria for evaluating candidates. Diff-replace by id: items with id update existing, items without id create new, existing criteria not in payload are removed. Pass [] to detach all."New value: +"AI scoring criteria for ranking applicants"
      • removedInput schema / properties / ai_scoring_criteria / items / additionalProperties
        Removed value: -false
      • changedInput schema / properties / ai_scoring_criteria / items / properties / id / description
        Previous value: -"ID of an existing criterion attached to this job. With id → update in place; without id → create new. Items on the job not referenced by id are removed."New value: +"Existing criterion id; omit to create"
      • changedInput schema / properties / ai_scoring_criteria / items / properties / text / description
        Previous value: -"Prompt text describing what to evaluate."New value: +"What to evaluate"
      • removedInput schema / properties / ai_scoring_criteria / items / properties / title / description
        Removed value: -"Optional short label for the criterion."
      • changedInput schema / properties / ai_scoring_criteria / items / properties / weight / description
        Previous value: -"Relative importance (1–10)."New value: +"Relative importance"
      • changedInput schema / properties / category_id / description
        Previous value: -"Job category ID from GET /taxonomy/categories."New value: +"From hires_list_categories"
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID. Required only when the API key has access to multiple companies."
      • changedInput schema / properties / department_id / description
        Previous value: -"Department ID from GET /taxonomy/departments."New value: +"From hires_list_departments"
      • changedInput schema / properties / description / description
        Previous value: -"Job description (HTML allowed)."New value: +"HTML allowed"
      • changedInput schema / properties / education_level_id / description
        Previous value: -"Education level ID from GET /taxonomy/education-levels."New value: +"From hires_list_education_levels"
      • changedInput schema / properties / employment_type_id / description
        Previous value: -"Employment type ID from GET /taxonomy/employment-types."New value: +"From hires_list_employment_types"
      • changedInput schema / properties / experience_level_id / description
        Previous value: -"Experience level ID from GET /taxonomy/experience-levels."New value: +"From hires_list_experience_levels"
      • changedInput schema / properties / form_id / description
        Previous value: -"Application form ID. If omitted, a new form named after the job title is created with default questions."New value: +"Omitted = new form named after the job"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages"New value: +"Embed: workflow, hiring_team, pipeline_stages"
      • changedInput schema / properties / internal_job_id / description
        Previous value: -"External reference ID from your ATS or HR system."New value: +"External reference id"
      • changedInput schema / properties / internal_title / description
        Previous value: -"Internal-only title visible to the hiring team."New value: +"Hiring team only"
      • changedInput schema / properties / is_remote / description
        Previous value: -"Whether this is a remote position."New value: +"Remote job; with empty city, state and postal code Indeed posts it nationwide"
      • changedInput schema / properties / knockout_questions / description
        Previous value: -"Boolean knockout questions added to the application form."New value: +"Yes/No screening questions added to the application form"
      • removedInput schema / properties / knockout_questions / items / additionalProperties
        Removed value: -false
      • changedInput schema / properties / knockout_questions / items / properties / disqualify_on_wrong_answer / description
        Previous value: -"If true, applicants who answer incorrectly are automatically disqualified."New value: +"Disqualify on wrong answer"
      • removedInput schema / properties / knockout_questions / items / properties / expected_answer / description
        Removed value: -"The correct/desired answer."
      • changedInput schema / properties / knockout_questions / items / properties / text / description
        Previous value: -"Question text shown to the applicant."New value: +"Shown to the applicant"
      • addedInput schema / properties / language
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 35,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Job page locale, e.g. de-DE; null = follow the career site language. Values: hires_list_languages"
        +}
      • changedInput schema / properties / location_city / description
        Previous value: -"Job city."New value: +"Required unless is_remote; empty = nationwide remote posting on Indeed"
      • removedInput schema / properties / location_country / description
        Removed value: -"Job country."
      • removedInput schema / properties / location_full_address / description
        Removed value: -"Full formatted address."
      • removedInput schema / properties / location_postal_code / description
        Removed value: -"Postal or ZIP code."
      • removedInput schema / properties / location_state / description
        Removed value: -"Job state or region."
      • removedInput schema / properties / location_street_address / description
        Removed value: -"Street address."
      • changedInput schema / properties / parent_job_id / description
        Previous value: -"Canonical parent job ID. If provided, the created job becomes a satellite job."New value: +"Parent job; makes this a satellite job"
      • removedInput schema / properties / resume_field_status / description
        Removed value: -"Resume field behavior on the application form."
      • changedInput schema / properties / salary_currency / description
        Previous value: -"Salary currency code (e.g. USD, EUR)."New value: +"ISO code, e.g. USD"
      • removedInput schema / properties / salary_max / description
        Removed value: -"Maximum salary."
      • removedInput schema / properties / salary_min / description
        Removed value: -"Minimum salary."
      • removedInput schema / properties / salary_period / description
        Removed value: -"Salary period."
      • changedInput schema / properties / status / description
        Previous value: -"Job status (e.g. Draft, Public). See GET /taxonomy/statuses."New value: +"From hires_list_statuses, e.g. Draft, Public"
      • removedInput schema / properties / title / description
        Removed value: -"Public job title."
      • changedInput schema / properties / workflow_id / description
        Previous value: -"Workflow ID. If omitted, a new workflow named after the job title is created with default stages."New value: +"Omitted = new workflow named after the job"
      • changedInput schema / required
        Previous value: -[
        -  "status",
        -  "title",
        -  "description",
        -  "location_city",
        -  "location_country"
        -]New value: +[
        +  "status",
        +  "title",
        +  "description",
        +  "location_country"
        +]
    • Changedhires_create_job_webhook4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
      • changedInput schema / properties / url / description
        Previous value: -"Webhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs)."New value: +"HTTPS URL on a public host (no localhost, private or link-local IPs)"
    • Changedhires_create_note8 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / body / description
        Previous value: -"Note content. Supports HTML."New value: +"HTML allowed"
      • changedInput schema / properties / candidate_id / description
        Previous value: -"Candidate ID (numeric) or alias"New value: +"Candidate id or alias"
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources, e.g. 'user' for author details, 'candidate' for full candidate object with url_backoffice. Set to `candidate` so the widget can link the candidate name to their backoffice profile."New value: +"Embed: user (author), candidate. Pass candidate so the widget can link to the candidate profile"
      • changedInput schema / properties / mention_user_ids / description
        Previous value: -"Array of user IDs to mention. Mentioned users receive email notifications."New value: +"Mentioned users get an email"
      • changedInput schema / properties / user_id / description
        Previous value: -"Author user ID. If omitted, the authenticated user is used"New value: +"Author; defaults to the authenticated user"
      • changedInput schema / properties / visibility / description
        Previous value: -"Visibility: 'all' (default) or 'private'"New value: +"all (default) or private"
    • Changedhires_create_nurture_campaign17 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (optional if API key is scoped to one company)"
      • changedInput schema / properties / delay_time / description
        Previous value: -"Delay time in seconds"New value: +"Delay before the first step, seconds (max 86400); wins over relative_days + relative_time if both are sent"
      • changedInput schema / properties / relative_days / description
        Previous value: -"Relative days for schedule"New value: +"Days after the trigger for the first step; use with relative_time"
      • changedInput schema / properties / relative_time / description
        Previous value: -"Relative time for schedule (seconds from midnight)"New value: +"Time of day for the first step, seconds from midnight"
      • changedInput schema / properties / response_move_to_stage_id / description
        Previous value: -"Stage to move candidate to when they reply"New value: +"Stage to move a candidate to when they reply"
      • changedInput schema / properties / send_to_all / description
        Previous value: -"Send to all candidates or only new ones (default false)"New value: +"Send to all candidates in the stage, not only new ones (default false)"
      • changedInput schema / properties / stage_id / description
        Previous value: -"Stage ID that triggers the campaign"New value: +"Stage that triggers the campaign"
      • changedInput schema / properties / steps / description
        Previous value: -"Campaign steps (at least one required)"New value: +"Executed in order. Each field names the step types that use it and whether it is required there."
      • removedInput schema / properties / steps / items / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "delay_days": {
        -        "description": "Days to wait before executing this step",
        -        "minimum": 0,
        -        "type": "number"
        -      },
        -      "id": {
        -        "description": "Step ID (required when updating an existing step)",
        -        "type": "number"
        -      },
        -      "is_deleted": {
        -        "description": "Set true to remove this step during update",
        -        "type": "boolean"
        -      },
        -      "is_new_thread": {
        -        "description": "Send as new email thread",
        -        "type": "boolean"
        -      },
        -      "is_send_by_carousel": {
        -        "description": "Send by carousel rotation",
        -        "type": "boolean"
        -      },
        -      "schedule_id": {
        -        "description": "Sending schedule ID",
        -        "type": "number"
        -      },
        -      "send_condition": {
        -        "description": "Condition for sending this step",
        -        "enum": [
        -          "if_no_reply",
        -          "if_no_reply_but_opened"
        -        ],
        -        "type": "string"
        -      },
        -      "sender": {
        -        "additionalProperties": false,
        -        "description": "Email sender",
        -        "properties": {
        -          "id": {
        -            "description": "Sender ID",
        -            "type": "number"
        -          },
        -          "type": {
        -            "description": "Sender type: \"account\" or \"user\"",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "id"
        -        ],
        -        "type": "object"
        -      },
        -      "template_id": {
        -        "description": "Email template ID",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "email",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "sender",
        -      "template_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "is_send_by_carousel": {
        -        "description": "Send by carousel rotation",
        -        "type": "boolean"
        -      },
        -      "schedule_id": {
        -        "description": "Sending schedule ID",
        -        "type": "number"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "sender_user_id": {
        -        "description": "Sender user ID",
        -        "type": "number"
        -      },
        -      "template_id": {
        -        "description": "SMS template ID",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "sms",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "sender_user_id",
        -      "template_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "attachment_uuid": {
        -        "description": "Voicemail audio file UUID. Reuse an existing voicemail step's `attachment_uuid`, or upload a new audio file through `hires_upload_attachment` with category `voicemail` and use the returned `uuid`.",
        -        "format": "uuid",
        -        "type": "string"
        -      },
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "schedule_id": {
        -        "description": "Sending schedule ID",
        -        "type": "number"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "type": {
        -        "const": "voicemail",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "attachment_uuid"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "stage_id": {
        -        "description": "Target pipeline stage ID",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "move_to_next_stage",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "stage_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "tag_id": {
        -        "description": "Tag ID to assign",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "assign_tag",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "tag_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "assignees": {
        -        "description": "Assignee user IDs",
        -        "items": {
        -          "type": "number"
        -        },
        -        "type": "array"
        -      },
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "due_in_interval": {
        -        "description": "Due date interval, e.g. \"P3D\"",
        -        "type": "string"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "priority": {
        -        "description": "Task priority",
        -        "type": "number"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "task_template_id": {
        -        "description": "Task template ID",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "assign_task",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "task_template_id",
        -      "assignees"
        -    ],
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / steps / items / properties
        Added value: +{
        +  "assignees": {
        +    "description": "assign_task (required): user ids",
        +    "items": {
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  "attachment_uuid": {
        +    "description": "voicemail (required): uuid from hires_upload_attachment, category voicemail",
        +    "format": "uuid",
        +    "type": "string"
        +  },
        +  "delay_days": {
        +    "description": "Days to wait before this step",
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "due_in_interval": {
        +    "description": "assign_task: ISO-8601 duration, e.g. P3D",
        +    "type": "string"
        +  },
        +  "id": {
        +    "description": "Existing step id (update only)",
        +    "type": "number"
        +  },
        +  "is_deleted": {
        +    "description": "Update only: true removes the step",
        +    "type": "boolean"
        +  },
        +  "is_new_thread": {
        +    "description": "email: send as a new thread",
        +    "type": "boolean"
        +  },
        +  "is_send_by_carousel": {
        +    "description": "email, sms: rotate sender accounts",
        +    "type": "boolean"
        +  },
        +  "priority": {
        +    "description": "assign_task",
        +    "type": "number"
        +  },
        +  "schedule_id": {
        +    "description": "email, sms, voicemail: sending schedule id",
        +    "type": "number"
        +  },
        +  "send_condition": {
        +    "enum": [
        +      "if_no_reply",
        +      "if_no_reply_but_opened"
        +    ],
        +    "type": "string"
        +  },
        +  "sender": {
        +    "description": "email (required)",
        +    "properties": {
        +      "id": {
        +        "type": "number"
        +      },
        +      "type": {
        +        "description": "account or user",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "id"
        +    ],
        +    "type": "object"
        +  },
        +  "sender_user_id": {
        +    "description": "sms (required)",
        +    "type": "number"
        +  },
        +  "stage_id": {
        +    "description": "move_to_next_stage (required)",
        +    "type": "number"
        +  },
        +  "tag_id": {
        +    "description": "assign_tag (required)",
        +    "type": "number"
        +  },
        +  "task_template_id": {
        +    "description": "assign_task (required)",
        +    "type": "number"
        +  },
        +  "template_id": {
        +    "description": "email, sms (required)",
        +    "type": "number"
        +  },
        +  "type": {
        +    "enum": [
        +      "email",
        +      "sms",
        +      "voicemail",
        +      "move_to_next_stage",
        +      "assign_tag",
        +      "assign_task"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / steps / items / required
        Added value: +[
        +  "type",
        +  "delay_days",
        +  "send_condition"
        +]
      • addedInput schema / properties / steps / items / type
        Added value: +"object"
      • changedInput schema / properties / timezone / description
        Previous value: -"IANA timezone, e.g. \"America/New_York\""New value: +"IANA timezone, e.g. America/New_York"
      • removedInput schema / properties / title / description
        Removed value: -"Campaign name"
      • changedInput schema / properties / workflow_id / description
        Previous value: -"Workflow ID to bind the campaign to"New value: +"Workflow the campaign is bound to"
    • Changedhires_create_question6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
      • changedInput schema / properties / options / description
        Previous value: -"Answer options (for select/multiselect question types)"New value: +"Answer options for select/multiselect types"
      • removedInput schema / properties / text / description
        Removed value: -"Question text"
      • changedInput schema / properties / type / description
        Previous value: -"Question type (from hires_list_question_types)"New value: +"From hires_list_question_types"
    • Changedhires_create_webhook4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Company ID"New value: +"Company id"
      • changedInput schema / properties / url / description
        Previous value: -"Webhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs)."New value: +"HTTPS URL on a public host (no localhost, private or link-local IPs)"
    • Changedhires_delete_application3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
    • Changedhires_delete_candidate3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
    • Changedhires_delete_company3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Company ID"
    • Changedhires_delete_email_template3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Email template ID"
    • Changedhires_delete_form3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Form ID."
    • Changedhires_delete_job3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
    • Changedhires_delete_job_webhook4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
      • removedInput schema / properties / webhook_id / description
        Removed value: -"Webhook ID to delete"
    • Changedhires_delete_message3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Message ID."
    • Changedhires_delete_note3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Note ID"
    • Changedhires_delete_notification_message3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Notification email message ID."
    • Changedhires_delete_nurture_campaign3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Nurture campaign ID"
    • Changedhires_delete_question3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Question ID"
    • Changedhires_delete_webhook4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Company ID"New value: +"Company id"
      • removedInput schema / properties / webhook_id / description
        Removed value: -"Webhook ID"
    • Changedhires_disqualify_candidate4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • changedInput schema / properties / reasons / description
        Previous value: -"Array of rejection reason IDs from GET /taxonomy/rejection-reasons."New value: +"Rejection reason ids from hires_list_rejection_reasons"
    • Changedhires_download_attachment3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / url / description
        Previous value: -"Absolute attachment URL returned by another API response (e.g. https://api.100hires.com/v2/attachments/mail_attachment/<uuid>/<file_name>). Must match the API host."New value: +"Absolute url from another tool's response; must be on the 100Hires API host"
    • Changedhires_get_ai_score3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
    • Changedhires_get_application4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job."New value: +"Embed: candidate, cv.text, job"
    • Changedhires_get_candidate3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
    • Changedhires_get_candidate_resume4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated optional fields. Use 'text_content' to add a `text` field with parsed plain-text resume content."New value: +"text_content: add the parsed plain text"
    • Changedhires_get_career_job4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_slug / description
        Removed value: -"Company slug identifying the career site"
      • removedInput schema / properties / id / description
        Removed value: -"Job ID"
    • Addedhires_get_career_site_settings
    • Changedhires_get_company3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Company ID"
    • Changedhires_get_email_template3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Email template ID"
    • Changedhires_get_evaluation3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Evaluation form ID"
    • Changedhires_get_form3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Form ID."
    • Changedhires_get_interview4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Interview ID"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related resources to embed: candidate, application, job"New value: +"Embed: candidate, application, job"
    • Changedhires_get_job4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages"New value: +"Embed: workflow, hiring_team, pipeline_stages"
    • Changedhires_get_message3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Message ID."
    • Changedhires_get_note4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Note ID"
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice."New value: +"Embed: user (author), candidate"
    • Changedhires_get_notification_message3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Notification email message ID."
    • Changedhires_get_nurture_campaign3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Nurture campaign ID"
    • Changedhires_get_question3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Question ID"
    • Changedhires_get_user3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"User ID"
    • Changedhires_get_workflow_stages4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
      • changedInput schema / properties / id / description
        Previous value: -"Workflow ID"New value: +"Workflow id"
    • Changedhires_hire_application4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job."New value: +"Embed: candidate, cv.text, job"
    • Changedhires_list_application_attachments3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
    • Changedhires_list_application_evaluations4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / view / description
        Previous value: -"Response shape. Default `summary` replaces `summary_text` with a 200-char `summary_text_preview`. Use `full` only when the full evaluator commentary is needed; call hires_get_evaluation for a single record."New value: +"summary replaces summary_text with a 200-char summary_text_preview"
    • Changedhires_list_application_stage_history3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
    • Changedhires_list_applications15 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / ai_score_max / description
        Removed value: -"Return only applications with ai_score <= this value."
      • removedInput schema / properties / ai_score_min / description
        Removed value: -"Return only applications with ai_score >= this value."
      • removedInput schema / properties / candidate_id / description
        Removed value: -"Filter applications by candidate ID."
      • removedInput schema / properties / company_id / description
        Removed value: -"Filter by company ID. Omit for all accessible companies."
      • changedInput schema / properties / created_after / description
        Previous value: -"Return only applications created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Unix seconds or ISO-8601"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: `candidate`, `cv.text`. **Recommended: `candidate`** for pipeline / kanban / UI rendering — without it the widget shows candidate IDs instead of names and emails. Use `cv.text` only when resume text is genuinely needed (large payload)."New value: +"Embed: candidate, cv.text. Pass candidate for pipeline rendering (names instead of ids)"
      • removedInput schema / properties / job_id / description
        Removed value: -"Filter applications by job ID."
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)."
      • removedInput schema / properties / size / description
        Removed value: -"Items per page (default 25, max 100)."
      • changedInput schema / properties / sort / description
        Previous value: -"Sort order. Prefix with - for descending. Default: -created_at."New value: +"Default -created_at"
      • changedInput schema / properties / stage_id / description
        Previous value: -"Filter applications by pipeline stage ID. Best used together with job_id."New value: +"Best combined with job_id"
      • removedInput schema / properties / status / description
        Removed value: -"Filter by application status: pending (active), hired, or rejected."
      • changedInput schema / properties / updated_after / description
        Previous value: -"Return only applications updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Use for incremental sync."New value: +"Unix seconds or ISO-8601; for incremental sync"
    • Changedhires_list_candidate_activities9 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / event_type / description
        Previous value: -"Comma-separated event types to filter. Supported: comment, copilot_response, stage_moved, automation_action_triggered, assign_job, enrichment, call, validate_emails, profile_mutation, qualification, assign_tags, assign_sources, candidate_rate."New value: +"Comma-separated; values listed in the tool description"
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (1-based)."
      • changedInput schema / properties / since / description
        Previous value: -"Inclusive lower bound on event timestamp. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-04-01T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Inclusive; Unix seconds or ISO-8601"
      • changedInput schema / properties / size / description
        Previous value: -"Page size. Values above 100 are rejected with 400. Default 20, max 100."New value: +"Default 20, max 100"
      • changedInput schema / properties / until / description
        Previous value: -"Inclusive upper bound on event timestamp. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-04-01T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Inclusive; Unix seconds or ISO-8601"
      • changedInput schema / properties / view / description
        Previous value: -"Response shape. Default `summary` replaces the largest event payloads (copilot LLM response/prompt, call transcription, comment body) with 200-char `*_preview` fields. Other event types pass through unchanged. Use `full` when the original content is needed."New value: +"summary replaces copilot text, call transcription and comment body with 200-char *_preview fields"
    • Changedhires_list_candidate_files3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
    • Changedhires_list_candidate_interviews5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (1-based)."
      • removedInput schema / properties / size / description
        Removed value: -"Number of items per page."
    • Changedhires_list_candidate_messages7 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • removedInput schema / properties / is_scheduled / description
        Removed value: -"Set to 1 to return only scheduled (not yet sent) messages."
      • removedInput schema / properties / page / description
        Removed value: -"Page number (1-based)."
      • removedInput schema / properties / size / description
        Removed value: -"Number of items per page."
      • changedInput schema / properties / view / description
        Previous value: -"Response shape. Default `summary` excludes the HTML body and attachments metadata. Use `full` only when message body content is needed."New value: +"summary omits the HTML body and attachment metadata"
    • Changedhires_list_candidate_tags3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
    • Changedhires_list_candidates15 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Filter by company ID. Required only when the API key has access to multiple companies."
      • changedInput schema / properties / created_after / description
        Previous value: -"Return only candidates created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Unix seconds or ISO-8601"
      • changedInput schema / properties / email / description
        Previous value: -"Exact candidate email filter."New value: +"Exact match"
      • removedInput schema / properties / full_name / description
        Removed value: -"Candidate full-name filter."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related data. Supported: `applications` — embeds each candidate's application summaries with job titles and pipeline stages. Recommended when the caller needs stage/pipeline context (e.g. UI rendering, candidate-status questions)."New value: +"Embed: applications (job titles and stages)"
      • removedInput schema / properties / job_id / description
        Removed value: -"Filter candidates by job ID."
      • changedInput schema / properties / linkedin / description
        Previous value: -"Search by LinkedIn profile URL or alias (e.g. 'johndoe' or full URL)."New value: +"LinkedIn profile URL or alias"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (1-based)."
      • changedInput schema / properties / q / description
        Previous value: -"Plain-text search by name or email. Supports partial matches."New value: +"Partial match on name or email"
      • removedInput schema / properties / size / description
        Removed value: -"Number of items per page."
      • changedInput schema / properties / stage_id / description
        Previous value: -"Filter candidates by pipeline stage ID. Best used together with job_id."New value: +"Pipeline stage id; combine with job_id"
      • changedInput schema / properties / updated_after / description
        Previous value: -"Return only candidates updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Useful for incremental sync."New value: +"Unix seconds or ISO-8601; for incremental sync"
      • changedInput schema / properties / view / description
        Previous value: -"Response shape. Default `summary` excludes the `profile` array (custom profile-form answers). Use `full` only when those answers are genuinely needed; call hires_get_candidate for a single full record."New value: +"summary omits the profile answers array"
    • Changedhires_list_career_jobs9 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / city / description
        Previous value: -"Filter by job city (exact match)"New value: +"Exact match"
      • removedInput schema / properties / company_slug / description
        Removed value: -"Company slug identifying the career site"
      • changedInput schema / properties / country / description
        Previous value: -"Filter by job country (exact match)"New value: +"Exact match"
      • removedInput schema / properties / department_id / description
        Removed value: -"Filter by department ID"
      • removedInput schema / properties / employment_type_id / description
        Removed value: -"Filter by employment type ID (e.g. Full-time, Part-time)"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
    • Changedhires_list_companies4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
    • Changedhires_list_company_id_mail_accounts5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Company ID"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
    • Changedhires_list_company_mail_accounts4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
    • Changedhires_list_departments3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
    • Changedhires_list_email_templates6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
      • changedInput schema / properties / view / description
        Previous value: -"Response shape. Default `summary` excludes the HTML template body. Use `full` only when body content is needed; call hires_get_email_template for a single record."New value: +"summary omits the HTML body"
    • Changedhires_list_forms6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID."
      • removedInput schema / properties / page / description
        Removed value: -"Page number."
      • removedInput schema / properties / size / description
        Removed value: -"Page size."
      • changedInput schema / properties / view / description
        Previous value: -"Response shape. Default `summary` omits the embedded `questions` array. Use `full` only when the full question list is needed; call hires_get_form for a single form."New value: +"summary omits the questions array"
    • Changedhires_list_hiring_team3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
    • Changedhires_list_interviews13 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / application_id / description
        Removed value: -"Filter interviews by application ID"
      • removedInput schema / properties / candidate_id / description
        Removed value: -"Filter interviews by candidate ID"
      • removedInput schema / properties / company_id / description
        Removed value: -"Filter by company ID. Omit for all accessible companies."
      • changedInput schema / properties / created_after / description
        Previous value: -"Return only interviews created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Unix seconds or ISO-8601"
      • changedInput schema / properties / date / description
        Previous value: -"Filter by interview date (YYYY-MM-DD, UTC)"New value: +"YYYY-MM-DD, UTC"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related resources to embed: candidate, application, job. Set to `candidate` (or include `candidate` in the list) so the widget can link interview cards to candidate profiles in the backoffice."New value: +"Embed: candidate, application, job"
      • removedInput schema / properties / interviewer_user_id / description
        Removed value: -"Filter interviews by interviewer user ID"
      • removedInput schema / properties / job_id / description
        Removed value: -"Filter interviews by job ID"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 20)"
      • changedInput schema / properties / updated_after / description
        Previous value: -"Return only interviews updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Unix seconds or ISO-8601; for incremental sync"
    • Changedhires_list_job_boards3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
    • Changedhires_list_job_webhooks3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
    • Changedhires_list_jobs13 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Filter by company ID (required only for multi-company API keys)"
      • changedInput schema / properties / created_at_end / description
        Previous value: -"Return only jobs created at or before this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Unix seconds or ISO-8601"
      • changedInput schema / properties / created_at_start / description
        Previous value: -"Return only jobs created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Unix seconds or ISO-8601"
      • changedInput schema / properties / department_id / description
        Previous value: -"Filter jobs by department ID (from GET /taxonomy/departments)"New value: +"From hires_list_departments"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages"New value: +"Embed: workflow, hiring_team, pipeline_stages"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • changedInput schema / properties / q / description
        Previous value: -"Search by job title or internal title (partial match)"New value: +"Search title or internal title"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 20)"
      • changedInput schema / properties / status / description
        Previous value: -"Filter by job status name (from GET /taxonomy/statuses, e.g. Public, Draft, Archived)"New value: +"From hires_list_statuses, e.g. Public, Draft, Archived"
      • changedInput schema / properties / updated_after / description
        Previous value: -"Return only jobs updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Use for incremental sync."New value: +"Unix seconds or ISO-8601; for incremental sync"
      • removedInput schema / properties / view / description
        Removed value: -"Response shape. Default `summary` excludes heavy fields (description HTML, indeed_posting_data, ai_scoring_criteria) and embedded relations — recommended for list operations. Use `full` only when description or include=workflow/hiring_team/pipeline_stages is genuinely needed; call hires_get_job for a single full record."
    • Addedhires_list_languages
    • Changedhires_list_messages9 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / date_from / description
        Previous value: -"Start of period (unix timestamp, seconds). Filters on scheduled/sent time."New value: +"Unix seconds; filters on scheduled/sent time"
      • changedInput schema / properties / date_to / description
        Previous value: -"End of period (unix timestamp, seconds). Filters on scheduled/sent time."New value: +"Unix seconds"
      • changedInput schema / properties / from_account_id / description
        Previous value: -"ID of the mail account (from `GET /companies/mail-accounts` or `GET /users/{user_id}/mail-accounts`)."New value: +"Mail account id from hires_list_company_mail_accounts or hires_list_user_mail_accounts"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (1-based). Default: 1."
      • changedInput schema / properties / size / description
        Previous value: -"Number of items per page (1-100). Default: 20."New value: +"Default 20"
      • changedInput schema / properties / status / description
        Previous value: -"Filter by message status: `scheduled` (pending send), `sent` (delivered), `all` (both). Default: `all`."New value: +"Default: all"
      • removedInput schema / properties / view / description
        Removed value: -"Response shape. Default `summary` excludes the HTML body and attachments metadata — recommended for list operations. Use `full` only when message body content is needed."
    • Changedhires_list_notes7 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / candidate_id / description
        Previous value: -"Candidate ID (numeric) or alias"New value: +"Candidate id or alias"
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice."New value: +"Embed: user (author), candidate"
      • removedInput schema / properties / page / description
        Removed value: -"Page number"
      • removedInput schema / properties / size / description
        Removed value: -"Page size"
      • changedInput schema / properties / view / description
        Previous value: -"Response shape. Default `summary` replaces the full note body with a 200-char `body_preview`. Use `full` only when the full note text is genuinely needed; call hires_get_note for a single record."New value: +"summary replaces the body with a 200-char body_preview"
    • Changedhires_list_nurture_campaigns5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (optional if API key is scoped to one company)"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
    • Changedhires_list_questions5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
    • Changedhires_list_rejection_reasons3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
    • Changedhires_list_sources3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
    • Changedhires_list_tags3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
    • Changedhires_list_template_placeholders8 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
      • changedInput schema / properties / is_notification / description
        Previous value: -"Include notification-specific system placeholders (0 or 1, default 0)"New value: +"1 includes notification-only system placeholders (default 0)"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • changedInput schema / properties / q / description
        Previous value: -"Filter placeholders by label (case-insensitive substring match)"New value: +"Label substring, case-insensitive"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
      • removedInput schema / properties / type / description
        Removed value: -"Filter by placeholder type"
    • Changedhires_list_user_mail_accounts5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"User ID"New value: +"User id"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
    • Changedhires_list_users5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Company ID to list users for"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default 1)"
      • removedInput schema / properties / size / description
        Removed value: -"Page size (default 25)"
    • Changedhires_list_webhooks3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Company ID"New value: +"Company id"
    • Changedhires_list_workflow_stages5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
      • changedInput schema / properties / job_id / description
        Previous value: -"Filter stages by job ID (returns stages from the job's assigned workflow)"New value: +"Stages of the job's assigned workflow"
      • changedInput schema / properties / workflow_id / description
        Previous value: -"Filter stages by workflow ID (from hires_list_workflows)"New value: +"Workflow id from hires_list_workflows"
    • Changedhires_list_workflows3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_id / description
        Removed value: -"Target company ID (uses default company when omitted)"
    • Changedhires_move_application5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job."New value: +"Embed: candidate, cv.text, job"
      • removedInput schema / properties / stage_id / description
        Removed value: -"Target pipeline stage ID."
    • Changedhires_patch_message12 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / bcc / description
        Removed value: -"Blind carbon-copy recipient email addresses."
      • changedInput schema / properties / body / description
        Previous value: -"Email body as HTML."New value: +"HTML"
      • removedInput schema / properties / cc / description
        Removed value: -"Carbon-copy recipient email addresses."
      • changedInput schema / properties / from_account_id / description
        Previous 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"
      • removedInput schema / properties / id / description
        Removed value: -"Message ID."
      • changedInput schema / properties / reply_to_email_id / description
        Previous value: -"Optional mailbox message ID to reply to."New value: +"Mailbox message id to reply to"
      • changedInput schema / properties / scheduled_at / description
        Previous value: -"Updated send time as a Unix timestamp in seconds."New value: +"Unix seconds"
      • changedInput schema / properties / send_in_new_thread / description
        Previous value: -"Whether to send the updated message as a new thread."New value: +"Send as a new thread"
      • removedInput schema / properties / subject / description
        Removed value: -"Email subject line."
      • changedInput schema / properties / to / description
        Previous value: -"Primary recipient email addresses."New value: +"Recipient emails"
    • Changedhires_prepare_template_placeholders8 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / form_question_id / description
        Removed value: -"Form question ID"
      • removedInput schema / properties / identifier / description
        Removed value: -"Placeholder identifier"
      • removedInput schema / properties / job_variable_id / description
        Removed value: -"Job variable ID"
      • changedInput schema / properties / qas_profile_question_id / description
        Previous value: -"Profile question ID"New value: +"Profile question id"
      • removedInput schema / properties / system_column_title / description
        Removed value: -"System column title"
      • changedInput schema / properties / type / description
        Previous value: -"Placeholder type (system, candidate_column, job_variable, questionnaire_link, scheduling_link)"New value: +"system, candidate_column, job_variable, questionnaire_link or scheduling_link"
    • Changedhires_publish_to_job_board4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / boards / description
        Previous value: -"Array of board identifiers to activate (e.g. ['indeed', 'linkedin'])"New value: +"e.g. indeed, linkedin"
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
    • Changedhires_reject_application6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job."New value: +"Embed: candidate, cv.text, job"
      • changedInput schema / properties / rejection_reason_id / description
        Previous value: -"Rejection reason ID from GET /taxonomy/rejection-reasons."New value: +"From hires_list_rejection_reasons"
      • changedInput schema / properties / suppress_notification / description
        Previous value: -"Set to true to skip sending the rejection email to the candidate."New value: +"Skip the rejection email to the candidate"
    • Changedhires_remove_candidate_tag4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • removedInput schema / properties / tag / description
        Removed value: -"The tag string to remove."
    • Changedhires_remove_from_job_board4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / boards / description
        Previous value: -"Array of board identifiers to deactivate (e.g. ['indeed', 'linkedin'])"New value: +"e.g. indeed, linkedin"
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
    • Changedhires_restore_company3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Company ID"
    • Changedhires_rotate_job_webhook_secret4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
      • removedInput schema / properties / webhook_id / description
        Removed value: -"Webhook ID whose signing secret to rotate"
    • Changedhires_rotate_webhook_secret4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Company ID"New value: +"Company id"
      • removedInput schema / properties / webhook_id / description
        Removed value: -"Webhook ID whose signing secret to rotate"
    • Changedhires_send_candidate_message13 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / application_id / description
        Removed value: -"Optional application ID to link this message to."
      • removedInput schema / properties / bcc / description
        Removed value: -"Blind carbon-copy recipient email addresses."
      • changedInput schema / properties / body / description
        Previous value: -"Email body as HTML."New value: +"HTML"
      • removedInput schema / properties / cc / description
        Removed value: -"Carbon-copy recipient email addresses."
      • changedInput schema / properties / from_account_id / description
        Previous value: -"Sending mail account ID. If omitted, uses the API key owner's default mail account."New value: +"Mail account id; default: the API key owner's default account"
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • changedInput schema / properties / reply_to_email_id / description
        Previous value: -"Optional mailbox message ID to reply to."New value: +"Mailbox message id to reply to"
      • changedInput schema / properties / scheduled_at / description
        Previous value: -"Unix timestamp (seconds) for when to send. Defaults to 15 minutes after creation."New value: +"Unix seconds; default: now + 15 min"
      • changedInput schema / properties / send_in_new_thread / description
        Previous value: -"Send as a new email thread instead of replying in an existing one."New value: +"Start a new thread instead of replying"
      • removedInput schema / properties / subject / description
        Removed value: -"Email subject line."
      • changedInput schema / properties / to / description
        Previous value: -"Primary recipient email addresses."New value: +"Recipient emails"
    • Changedhires_set_job_status5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages"New value: +"Embed: workflow, hiring_team, pipeline_stages"
      • changedInput schema / properties / status / description
        Previous value: -"New job status (e.g. Draft, Public, Archived). See GET /taxonomy/statuses."New value: +"From hires_list_statuses, e.g. Draft, Public, Archived"
    • Changedhires_submit_career_application14 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / answers / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / answers / description
        Previous value: -"Array of form answer objects"New value: +"Form answer objects"
      • removedInput schema / properties / company_slug / description
        Removed value: -"Company slug identifying the career site"
      • removedInput schema / properties / email / description
        Removed value: -"Applicant email address"
      • removedInput schema / properties / first_name / description
        Removed value: -"Applicant first name"
      • removedInput schema / properties / job_id / description
        Removed value: -"Job ID to apply to"
      • removedInput schema / properties / last_name / description
        Removed value: -"Applicant last name"
      • removedInput schema / properties / linkedin_url / description
        Removed value: -"Applicant LinkedIn profile URL"
      • removedInput schema / properties / phone / description
        Removed value: -"Applicant phone number"
      • changedInput schema / properties / resume / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "description": "Base64-encoded file content",
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "description": "Resume file name (e.g. resume.pdf)",
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "description": "Resume MIME type (e.g. application/pdf)",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "data",
        -      "file_name",
        -      "mime_type"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "data": {
        +        "description": "Base64 file content",
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "description": "e.g. application/pdf",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "data",
        +      "file_name",
        +      "mime_type"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / resume / description
        Removed value: -"Resume file upload (base64 encoded)"
      • changedInput schema / properties / source / description
        Previous value: -"Application source identifier"New value: +"Source identifier"
    • Changedhires_submit_feedback8 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / context / additionalProperties
        Removed value: -{}
      • changedInput schema / properties / context / description
        Previous value: -"Arbitrary context object (max 4KB JSON)"New value: +"Any JSON, max 4 KB"
      • changedInput schema / properties / description / description
        Previous value: -"Description of the issue or feedback (max 2000 chars)"New value: +"Max 2000 chars"
      • changedInput schema / properties / endpoint / description
        Previous value: -"The API endpoint this feedback relates to, e.g. /v2/candidates"New value: +"e.g. /v2/candidates"
      • removedInput schema / properties / issue_type / description
        Removed value: -"Category of the issue"
      • changedInput schema / properties / suggested_improvement / description
        Previous value: -"Suggested solution or improvement (max 2000 chars)"New value: +"Max 2000 chars"
    • Changedhires_transfer_application6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID to transfer."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job."New value: +"Embed: candidate, cv.text, job"
      • changedInput schema / properties / job_id / description
        Previous value: -"Target job ID to transfer the application to."New value: +"Target job"
      • changedInput schema / properties / stage_id / description
        Previous value: -"Pipeline stage ID on the target job. If omitted, defaults to the first stage."New value: +"Stage on the target job; defaults to its first stage"
    • Changedhires_unreject_application4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job."New value: +"Embed: candidate, cv.text, job"
    • Changedhires_update_application12 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / cv / additionalProperties
        Removed value: -false
      • changedInput schema / properties / cv / description
        Previous value: -"Replace or attach a CV."New value: +"Replace or attach a CV"
      • changedInput schema / properties / cv / properties / data / description
        Previous value: -"Base64-encoded file content."New value: +"Base64 file content"
      • removedInput schema / properties / cv / properties / file_name / description
        Removed value: -"Original file name."
      • changedInput schema / properties / cv / properties / mime_type / description
        Previous value: -"MIME type (e.g. application/pdf)."New value: +"e.g. application/pdf"
      • changedInput schema / properties / cv / properties / size / description
        Previous value: -"Optional file size in bytes."New value: +"Bytes"
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text, job."New value: +"Embed: candidate, cv.text, job"
      • removedInput schema / properties / is_disqualified / description
        Removed value: -"Set to true to disqualify the candidate on this application."
      • changedInput schema / properties / stage_id / description
        Previous value: -"Move application to this pipeline stage."New value: +"Target stage; runs its workflow automation"
    • Changedhires_update_candidate16 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / city / description
        Previous value: -"Candidate city for location/timezone resolution."New value: +"Also used to resolve timezone"
      • changedInput schema / properties / country / description
        Previous value: -"Candidate country name or ISO code."New value: +"Name or ISO code"
      • removedInput schema / properties / email / description
        Removed value: -"Candidate email address."
      • removedInput schema / properties / first_name / description
        Removed value: -"Candidate first name."
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
      • changedInput schema / properties / job_id / description
        Previous value: -"Job ID to create a new application for this candidate."New value: +"Creates a new application for this job"
      • removedInput schema / properties / last_name / description
        Removed value: -"Candidate last name."
      • removedInput schema / properties / phone / description
        Removed value: -"Candidate phone number."
      • removedInput schema / properties / profile / additionalProperties
        Removed value: -{
        -  "type": "string"
        -}
      • changedInput schema / properties / profile / description
        Previous value: -"Key-value map of profile field answers. Keys can be question text or question_id."New value: +"Profile answers keyed by question text or question_id"
      • changedInput schema / properties / resume_text / description
        Previous value: -"Plain-text resume content extracted by the model from an attached file. Stored as a text/plain attachment. Do not pass binary or base64 — only parsed text."New value: +"Plain text extracted from the resume; stored as a text/plain attachment. No binary or base64."
      • changedInput schema / properties / stage_id / description
        Previous value: -"Pipeline stage ID for the application. Requires job_id."New value: +"Stage for that application; requires job_id"
      • removedInput schema / properties / state / description
        Removed value: -"Candidate state or region."
      • changedInput schema / properties / timezone / description
        Previous value: -"IANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted."New value: +"IANA, e.g. America/Los_Angeles; resolved from city and country if omitted"
    • Addedhires_update_career_site_settings
    • Changedhires_update_company15 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / company_owner_email / description
        Removed value: -"Company owner email address"
      • removedInput schema / properties / company_owner_name / description
        Removed value: -"Company owner full name"
      • removedInput schema / properties / company_owner_phone / description
        Removed value: -"Company owner phone number"
      • removedInput schema / properties / id / description
        Removed value: -"Company ID"
      • removedInput schema / properties / is_staffing_agency / description
        Removed value: -"Whether this company is a staffing agency"
      • removedInput schema / properties / logo / additionalProperties
        Removed value: -false
      • removedInput schema / properties / logo / description
        Removed value: -"Company logo file"
      • changedInput schema / properties / logo / properties / data / description
        Previous value: -"Base64 content"New value: +"Base64 file content"
      • removedInput schema / properties / logo / properties / file_name / description
        Removed value: -"Original file name"
      • changedInput schema / properties / logo / properties / mime_type / description
        Previous value: -"MIME type (e.g. image/png)"New value: +"e.g. image/png"
      • changedInput schema / properties / logo / properties / size / description
        Previous value: -"File size in bytes"New value: +"Bytes"
      • removedInput schema / properties / name / description
        Removed value: -"Company name"
      • removedInput schema / properties / website / description
        Removed value: -"Company website URL"
    • Changedhires_update_email_template6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / body / description
        Previous value: -"Email body HTML (supports placeholders)"New value: +"HTML; placeholders allowed"
      • removedInput schema / properties / id / description
        Removed value: -"Email template ID"
      • removedInput schema / properties / name / description
        Removed value: -"Template name"
      • changedInput schema / properties / subject / description
        Previous value: -"Email subject line (supports placeholders)"New value: +"Placeholders allowed"
    • Changedhires_update_form5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Form ID."
      • removedInput schema / properties / name / description
        Removed value: -"Form name."
      • changedInput schema / properties / questions / description
        Previous value: -"Array of question IDs to attach to this form."New value: +"Question ids to attach"
    • Changedhires_update_form_question5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / form_id / description
        Removed value: -"Form ID."
      • removedInput schema / properties / question_id / description
        Removed value: -"Question ID."
      • removedInput schema / properties / status / description
        Removed value: -"Question visibility on this form: required, optional, or hidden."
    • Changedhires_update_job41 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / ai_scoring_criteria / description
        Previous value: -"AI scoring criteria for evaluating candidates. Diff-replace by id: items with id update existing, items without id create new, existing criteria not in payload are removed. Omit to leave existing criteria untouched. Pass [] to detach all."New value: +"Diff-replace by id: with id update, without id create, absent ones are removed; [] detaches all; omit to keep"
      • removedInput schema / properties / ai_scoring_criteria / items / additionalProperties
        Removed value: -false
      • changedInput schema / properties / ai_scoring_criteria / items / properties / id / description
        Previous value: -"ID of an existing criterion attached to this job. With id → update in place; without id → create new. Items on the job not referenced by id are removed."New value: +"Existing criterion id; omit to create"
      • changedInput schema / properties / ai_scoring_criteria / items / properties / text / description
        Previous value: -"Prompt text describing what to evaluate."New value: +"What to evaluate"
      • removedInput schema / properties / ai_scoring_criteria / items / properties / title / description
        Removed value: -"Optional short label for the criterion."
      • changedInput schema / properties / ai_scoring_criteria / items / properties / weight / description
        Previous value: -"Relative importance (1–10)."New value: +"Relative importance"
      • changedInput schema / properties / category_id / description
        Previous value: -"Job category ID from GET /taxonomy/categories."New value: +"From hires_list_categories"
      • changedInput schema / properties / department_id / description
        Previous value: -"Department ID from GET /taxonomy/departments."New value: +"From hires_list_departments"
      • changedInput schema / properties / description / description
        Previous value: -"Job description (HTML allowed)."New value: +"HTML allowed"
      • changedInput schema / properties / education_level_id / description
        Previous value: -"Education level ID from GET /taxonomy/education-levels."New value: +"From hires_list_education_levels"
      • changedInput schema / properties / employment_type_id / description
        Previous value: -"Employment type ID from GET /taxonomy/employment-types."New value: +"From hires_list_employment_types"
      • changedInput schema / properties / experience_level_id / description
        Previous value: -"Experience level ID from GET /taxonomy/experience-levels."New value: +"From hires_list_experience_levels"
      • changedInput schema / properties / form_id / description
        Previous value: -"Application form ID to assign to this job."New value: +"Application form to assign"
      • changedInput schema / properties / id / description
        Previous value: -"Job ID (numeric) or alias"New value: +"Job id or alias"
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages"New value: +"Embed: workflow, hiring_team, pipeline_stages"
      • changedInput schema / properties / internal_job_id / description
        Previous value: -"External reference ID from your ATS or HR system."New value: +"External reference id"
      • changedInput schema / properties / internal_title / description
        Previous value: -"Internal-only title visible to the hiring team."New value: +"Hiring team only"
      • changedInput schema / properties / is_remote / description
        Previous value: -"Whether this is a remote position."New value: +"Remote job; with empty city, state and postal code Indeed posts it nationwide"
      • changedInput schema / properties / knockout_questions / description
        Previous value: -"Boolean knockout questions added to the application form."New value: +"Yes/No screening questions added to the application form"
      • removedInput schema / properties / knockout_questions / items / additionalProperties
        Removed value: -false
      • changedInput schema / properties / knockout_questions / items / properties / disqualify_on_wrong_answer / description
        Previous value: -"If true, applicants who answer incorrectly are automatically disqualified."New value: +"Disqualify on wrong answer"
      • removedInput schema / properties / knockout_questions / items / properties / expected_answer / description
        Removed value: -"The correct/desired answer."
      • changedInput schema / properties / knockout_questions / items / properties / text / description
        Previous value: -"Question text shown to the applicant."New value: +"Shown to the applicant"
      • addedInput schema / properties / language
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 35,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Job page locale, e.g. de-DE; null = follow the career site language, omit = keep current. Values: hires_list_languages"
        +}
      • changedInput schema / properties / location_city / description
        Previous value: -"Job city."New value: +"Empty string clears it; remote without city = nationwide posting on Indeed"
      • removedInput schema / properties / location_country / description
        Removed value: -"Job country."
      • removedInput schema / properties / location_full_address / description
        Removed value: -"Full formatted address."
      • removedInput schema / properties / location_postal_code / description
        Removed value: -"Postal or ZIP code."
      • removedInput schema / properties / location_state / description
        Removed value: -"Job state or region."
      • removedInput schema / properties / location_street_address / description
        Removed value: -"Street address."
      • changedInput schema / properties / parent_job_id / description
        Previous value: -"Canonical parent job ID. If provided, the job becomes a satellite job."New value: +"Parent job; makes this a satellite job"
      • removedInput schema / properties / resume_field_status / description
        Removed value: -"Resume field behavior on the application form."
      • changedInput schema / properties / salary_currency / description
        Previous value: -"Salary currency code (e.g. USD, EUR)."New value: +"ISO code, e.g. USD"
      • removedInput schema / properties / salary_max / description
        Removed value: -"Maximum salary."
      • removedInput schema / properties / salary_min / description
        Removed value: -"Minimum salary."
      • removedInput schema / properties / salary_period / description
        Removed value: -"Salary period."
      • changedInput schema / properties / status / description
        Previous value: -"Job status (e.g. Draft, Public). See GET /taxonomy/statuses."New value: +"From hires_list_statuses, e.g. Draft, Public"
      • removedInput schema / properties / title / description
        Removed value: -"Public job title."
      • changedInput schema / properties / workflow_id / description
        Previous value: -"Workflow ID to assign to this job."New value: +"Workflow to assign"
    • Changedhires_update_message12 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / bcc / description
        Removed value: -"Blind carbon-copy recipient email addresses."
      • changedInput schema / properties / body / description
        Previous value: -"Email body as HTML."New value: +"HTML"
      • removedInput schema / properties / cc / description
        Removed value: -"Carbon-copy recipient email addresses."
      • changedInput schema / properties / from_account_id / description
        Previous 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"
      • removedInput schema / properties / id / description
        Removed value: -"Message ID."
      • changedInput schema / properties / reply_to_email_id / description
        Previous value: -"Optional mailbox message ID to reply to."New value: +"Mailbox message id to reply to"
      • changedInput schema / properties / scheduled_at / description
        Previous value: -"Updated send time as a Unix timestamp in seconds."New value: +"Unix seconds"
      • changedInput schema / properties / send_in_new_thread / description
        Previous value: -"Whether to send the updated message as a new thread."New value: +"Send as a new thread"
      • removedInput schema / properties / subject / description
        Removed value: -"Email subject line."
      • changedInput schema / properties / to / description
        Previous value: -"Primary recipient email addresses."New value: +"Recipient emails"
    • Changedhires_update_note6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / body / description
        Previous value: -"Note content. Supports HTML."New value: +"HTML allowed"
      • removedInput schema / properties / id / description
        Removed value: -"Note ID"
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice."New value: +"Embed: user (author), candidate"
      • changedInput schema / properties / visibility / description
        Previous value: -"Visibility: 'all' (default) or 'private'"New value: +"all (default) or private"
    • Changedhires_update_notification_message6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / body / description
        Previous value: -"Email body as HTML."New value: +"HTML"
      • removedInput schema / properties / id / description
        Removed value: -"Notification email message ID."
      • changedInput schema / properties / scheduled_at / description
        Previous value: -"Unix timestamp (seconds) to reschedule send time. If omitted, the existing schedule is preserved."New value: +"Unix seconds; omit to keep the current schedule"
      • removedInput schema / properties / subject / description
        Removed value: -"Email subject line."
    • Changedhires_update_nurture_campaign17 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / delay_time / description
        Previous value: -"Delay in minutes before the first step"New value: +"Delay before the first step, seconds (max 86400); wins over relative_days + relative_time if both are sent"
      • removedInput schema / properties / id / description
        Removed value: -"Nurture campaign ID"
      • changedInput schema / properties / relative_days / description
        Previous value: -"Number of days offset for scheduling"New value: +"Days after the trigger for the first step; use with relative_time"
      • changedInput schema / properties / relative_time / description
        Previous value: -"Time of day for scheduled sends"New value: +"Time of day for the first step, seconds from midnight"
      • changedInput schema / properties / response_move_to_stage_id / description
        Previous value: -"Stage ID to move candidates to when they respond"New value: +"Stage to move a candidate to when they reply"
      • changedInput schema / properties / send_to_all / description
        Previous value: -"Whether to send to all candidates or only new ones"New value: +"Send to all candidates in the stage, not only new ones (default false)"
      • changedInput schema / properties / stage_id / description
        Previous value: -"Pipeline stage ID that triggers the campaign"New value: +"Stage that triggers the campaign"
      • changedInput schema / properties / steps / description
        Previous value: -"All steps -- mark removed steps with is_deleted=true"New value: +"Executed in order. Each field names the step types that use it and whether it is required there."
      • removedInput schema / properties / steps / items / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "delay_days": {
        -        "description": "Days to wait before executing this step",
        -        "minimum": 0,
        -        "type": "number"
        -      },
        -      "id": {
        -        "description": "Step ID (required when updating an existing step)",
        -        "type": "number"
        -      },
        -      "is_deleted": {
        -        "description": "Set true to remove this step during update",
        -        "type": "boolean"
        -      },
        -      "is_new_thread": {
        -        "description": "Send as new email thread",
        -        "type": "boolean"
        -      },
        -      "is_send_by_carousel": {
        -        "description": "Send by carousel rotation",
        -        "type": "boolean"
        -      },
        -      "schedule_id": {
        -        "description": "Sending schedule ID",
        -        "type": "number"
        -      },
        -      "send_condition": {
        -        "description": "Condition for sending this step",
        -        "enum": [
        -          "if_no_reply",
        -          "if_no_reply_but_opened"
        -        ],
        -        "type": "string"
        -      },
        -      "sender": {
        -        "additionalProperties": false,
        -        "description": "Email sender",
        -        "properties": {
        -          "id": {
        -            "description": "Sender ID",
        -            "type": "number"
        -          },
        -          "type": {
        -            "description": "Sender type: \"account\" or \"user\"",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "id"
        -        ],
        -        "type": "object"
        -      },
        -      "template_id": {
        -        "description": "Email template ID",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "email",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "sender",
        -      "template_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "is_send_by_carousel": {
        -        "description": "Send by carousel rotation",
        -        "type": "boolean"
        -      },
        -      "schedule_id": {
        -        "description": "Sending schedule ID",
        -        "type": "number"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "sender_user_id": {
        -        "description": "Sender user ID",
        -        "type": "number"
        -      },
        -      "template_id": {
        -        "description": "SMS template ID",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "sms",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "sender_user_id",
        -      "template_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "attachment_uuid": {
        -        "description": "Voicemail audio file UUID. Reuse an existing voicemail step's `attachment_uuid`, or upload a new audio file through `hires_upload_attachment` with category `voicemail` and use the returned `uuid`.",
        -        "format": "uuid",
        -        "type": "string"
        -      },
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "schedule_id": {
        -        "description": "Sending schedule ID",
        -        "type": "number"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "type": {
        -        "const": "voicemail",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "attachment_uuid"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "stage_id": {
        -        "description": "Target pipeline stage ID",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "move_to_next_stage",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "stage_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "tag_id": {
        -        "description": "Tag ID to assign",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "assign_tag",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "tag_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "assignees": {
        -        "description": "Assignee user IDs",
        -        "items": {
        -          "type": "number"
        -        },
        -        "type": "array"
        -      },
        -      "delay_days": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/delay_days"
        -      },
        -      "due_in_interval": {
        -        "description": "Due date interval, e.g. \"P3D\"",
        -        "type": "string"
        -      },
        -      "id": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/id"
        -      },
        -      "is_deleted": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/is_deleted"
        -      },
        -      "priority": {
        -        "description": "Task priority",
        -        "type": "number"
        -      },
        -      "send_condition": {
        -        "$ref": "#/properties/steps/items/anyOf/0/properties/send_condition"
        -      },
        -      "task_template_id": {
        -        "description": "Task template ID",
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "assign_task",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "delay_days",
        -      "send_condition",
        -      "type",
        -      "task_template_id",
        -      "assignees"
        -    ],
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / steps / items / properties
        Added value: +{
        +  "assignees": {
        +    "description": "assign_task (required): user ids",
        +    "items": {
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  "attachment_uuid": {
        +    "description": "voicemail (required): uuid from hires_upload_attachment, category voicemail",
        +    "format": "uuid",
        +    "type": "string"
        +  },
        +  "delay_days": {
        +    "description": "Days to wait before this step",
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "due_in_interval": {
        +    "description": "assign_task: ISO-8601 duration, e.g. P3D",
        +    "type": "string"
        +  },
        +  "id": {
        +    "description": "Existing step id (update only)",
        +    "type": "number"
        +  },
        +  "is_deleted": {
        +    "description": "Update only: true removes the step",
        +    "type": "boolean"
        +  },
        +  "is_new_thread": {
        +    "description": "email: send as a new thread",
        +    "type": "boolean"
        +  },
        +  "is_send_by_carousel": {
        +    "description": "email, sms: rotate sender accounts",
        +    "type": "boolean"
        +  },
        +  "priority": {
        +    "description": "assign_task",
        +    "type": "number"
        +  },
        +  "schedule_id": {
        +    "description": "email, sms, voicemail: sending schedule id",
        +    "type": "number"
        +  },
        +  "send_condition": {
        +    "enum": [
        +      "if_no_reply",
        +      "if_no_reply_but_opened"
        +    ],
        +    "type": "string"
        +  },
        +  "sender": {
        +    "description": "email (required)",
        +    "properties": {
        +      "id": {
        +        "type": "number"
        +      },
        +      "type": {
        +        "description": "account or user",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "id"
        +    ],
        +    "type": "object"
        +  },
        +  "sender_user_id": {
        +    "description": "sms (required)",
        +    "type": "number"
        +  },
        +  "stage_id": {
        +    "description": "move_to_next_stage (required)",
        +    "type": "number"
        +  },
        +  "tag_id": {
        +    "description": "assign_tag (required)",
        +    "type": "number"
        +  },
        +  "task_template_id": {
        +    "description": "assign_task (required)",
        +    "type": "number"
        +  },
        +  "template_id": {
        +    "description": "email, sms (required)",
        +    "type": "number"
        +  },
        +  "type": {
        +    "enum": [
        +      "email",
        +      "sms",
        +      "voicemail",
        +      "move_to_next_stage",
        +      "assign_tag",
        +      "assign_task"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / steps / items / required
        Added value: +[
        +  "type",
        +  "delay_days",
        +  "send_condition"
        +]
      • addedInput schema / properties / steps / items / type
        Added value: +"object"
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for scheduled sends, e.g. \"America/New_York\""New value: +"IANA timezone, e.g. America/New_York"
      • removedInput schema / properties / title / description
        Removed value: -"Campaign name"
      • changedInput schema / properties / workflow_id / description
        Previous value: -"Workflow ID this campaign is associated with"New value: +"Workflow the campaign is bound to"
    • Changedhires_update_question6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / id / description
        Removed value: -"Question ID"
      • changedInput schema / properties / options / description
        Previous value: -"Answer options (for select/multiselect question types)"New value: +"Answer options for select/multiselect types"
      • removedInput schema / properties / text / description
        Removed value: -"Question text"
      • changedInput schema / properties / type / description
        Previous value: -"Question type (from hires_list_question_types)"New value: +"From hires_list_question_types"
    • Changedhires_upload_application_attachment9 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / file / additionalProperties
        Removed value: -false
      • removedInput schema / properties / file / description
        Removed value: -"File to upload."
      • changedInput schema / properties / file / properties / data / description
        Previous value: -"Base64-encoded file content."New value: +"Base64 file content"
      • removedInput schema / properties / file / properties / file_name / description
        Removed value: -"Original file name."
      • changedInput schema / properties / file / properties / mime_type / description
        Previous value: -"MIME type (e.g. application/pdf)."New value: +"e.g. application/pdf"
      • changedInput schema / properties / file / properties / size / description
        Previous value: -"Optional file size in bytes."New value: +"Bytes"
      • removedInput schema / properties / id / description
        Removed value: -"Application ID."
    • Changedhires_upload_attachment11 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / category / description
        Previous value: -"Attachment category. Determines allowed extensions and object_id semantics."New value: +"Determines allowed extensions and the object_id owner type"
      • changedInput schema / properties / company_id / description
        Previous value: -"Target company ID. Needed for partner API keys managing multiple client companies. Omitted → defaults to the authenticated company. The object_id must belong to this company (strict match)."New value: +"Company that owns object_id; default: the authenticated company"
      • removedInput schema / properties / file / additionalProperties
        Removed value: -false
      • removedInput schema / properties / file / description
        Removed value: -"File payload."
      • changedInput schema / properties / file / properties / data / description
        Previous value: -"Base64-encoded file bytes."New value: +"Base64 content"
      • changedInput schema / properties / file / properties / file_name / description
        Previous value: -"Original file name (with extension, e.g. `greeting.mp3`)."New value: +"With extension, e.g. greeting.mp3"
      • changedInput schema / properties / file / properties / mime_type / description
        Previous value: -"MIME type (e.g. `audio/mpeg`, `application/pdf`)."New value: +"e.g. audio/mpeg, application/pdf"
      • changedInput schema / properties / file / properties / size / description
        Previous value: -"Optional file size in bytes."New value: +"Bytes"
      • changedInput schema / properties / object_id / description
        Previous value: -"Target object ID (candidate/application/comment/job-note/company, per category). Omit for `voicemail`."New value: +"Owner id per category: candidate, application, comment, job note or company; omit for voicemail"
    • Changedhires_upload_candidate_file9 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / file / additionalProperties
        Removed value: -false
      • removedInput schema / properties / file / description
        Removed value: -"File to upload (base64 payload)."
      • changedInput schema / properties / file / properties / data / description
        Previous value: -"Base64-encoded file content."New value: +"Base64 content"
      • removedInput schema / properties / file / properties / file_name / description
        Removed value: -"Original file name."
      • changedInput schema / properties / file / properties / mime_type / description
        Previous value: -"MIME type (e.g. application/pdf)."New value: +"e.g. application/pdf"
      • changedInput schema / properties / file / properties / size / description
        Previous value: -"Optional file size in bytes."New value: +"Bytes"
      • changedInput schema / properties / id / description
        Previous value: -"Candidate ID (integer) or alias (string)."New value: +"Candidate id or alias"
  2. 2 tool updates
    • Addedhires_rotate_job_webhook_secret
    • Addedhires_rotate_webhook_secret
  3. 7 tool updates
    • Changedhires_create_candidate4 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "description": "Candidate city for location/timezone resolution.",
        +  "type": "string"
        +}
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Candidate country name or ISO code.",
        +  "type": "string"
        +}
      • addedInput schema / properties / state
        Added value: +{
        +  "description": "Candidate state or region.",
        +  "type": "string"
        +}
      • addedInput schema / properties / timezone
        Added value: +{
        +  "description": "IANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted.",
        +  "type": "string"
        +}
    • Changedhires_list_applications4 fields changed
      • changedInput schema / properties / created_after / description
        Previous value: -"Return only applications created after this Unix timestamp (seconds)."New value: +"Return only applications created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."
      • changedInput schema / properties / created_after / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
      • changedInput schema / properties / updated_after / description
        Previous value: -"Return only applications updated after this Unix timestamp (seconds). Use for incremental sync."New value: +"Return only applications updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Use for incremental sync."
      • changedInput schema / properties / updated_after / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
    • Changedhires_list_candidate_activities5 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"Unix timestamp (seconds) — inclusive lower bound on event timestamp."New value: +"Inclusive lower bound on event timestamp. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-04-01T00:00:00Z). Fractional seconds accepted but truncated."
      • changedInput schema / properties / since / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
      • changedInput schema / properties / size / description
        Previous value: -"Page size. Values above the max are capped. Default 20, max 100."New value: +"Page size. Values above 100 are rejected with 400. Default 20, max 100."
      • changedInput schema / properties / until / description
        Previous value: -"Unix timestamp (seconds) — inclusive upper bound on event timestamp."New value: +"Inclusive upper bound on event timestamp. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-04-01T00:00:00Z). Fractional seconds accepted but truncated."
      • changedInput schema / properties / until / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
    • Changedhires_list_candidates4 fields changed
      • changedInput schema / properties / created_after / description
        Previous value: -"Return only candidates created after this Unix timestamp (seconds)."New value: +"Return only candidates created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."
      • changedInput schema / properties / created_after / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
      • changedInput schema / properties / updated_after / description
        Previous value: -"Return only candidates updated after this Unix timestamp (seconds). Useful for incremental sync."New value: +"Return only candidates updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Useful for incremental sync."
      • changedInput schema / properties / updated_after / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
    • Changedhires_list_interviews4 fields changed
      • changedInput schema / properties / created_after / description
        Previous value: -"Return only interviews created after this Unix timestamp (seconds)"New value: +"Return only interviews created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."
      • changedInput schema / properties / created_after / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
      • changedInput schema / properties / updated_after / description
        Previous value: -"Return only interviews updated after this Unix timestamp (seconds)"New value: +"Return only interviews updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."
      • changedInput schema / properties / updated_after / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
    • Changedhires_list_jobs6 fields changed
      • changedInput schema / properties / created_at_end / description
        Previous value: -"Return only jobs created at or before this Unix timestamp (seconds)"New value: +"Return only jobs created at or before this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."
      • changedInput schema / properties / created_at_end / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
      • changedInput schema / properties / created_at_start / description
        Previous value: -"Return only jobs created at or after this Unix timestamp (seconds)"New value: +"Return only jobs created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."
      • changedInput schema / properties / created_at_start / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
      • changedInput schema / properties / updated_after / description
        Previous value: -"Return only jobs updated after this Unix timestamp (seconds). Use for incremental sync."New value: +"Return only jobs updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Use for incremental sync."
      • changedInput schema / properties / updated_after / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "string"
        +]
    • Changedhires_update_candidate4 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "description": "Candidate city for location/timezone resolution.",
        +  "type": "string"
        +}
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Candidate country name or ISO code.",
        +  "type": "string"
        +}
      • addedInput schema / properties / state
        Added value: +{
        +  "description": "Candidate state or region.",
        +  "type": "string"
        +}
      • addedInput schema / properties / timezone
        Added value: +{
        +  "description": "IANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted.",
        +  "type": "string"
        +}
  4. 1 tool update
    • Changedhires_list_applications1 field changed
      • changedInput schema / properties / sort / enum
        Previous value: -[
        -  "created_at",
        -  "-created_at",
        -  "ai_score",
        -  "-ai_score"
        -]New value: +[
        +  "created_at",
        +  "-created_at",
        +  "ai_score",
        +  "-ai_score",
        +  "last_message_at",
        +  "-last_message_at"
        +]
  5. 2 tool updates
    • Changedhires_create_candidate2 fields changed
      • removedInput schema / properties / cv
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "CV/resume file to attach (base64 payload).",
        -  "properties": {
        -    "data": {
        -      "description": "Base64-encoded file content.",
        -      "type": "string"
        -    },
        -    "file_name": {
        -      "description": "Original file name.",
        -      "type": "string"
        -    },
        -    "mime_type": {
        -      "description": "MIME type (e.g. application/pdf).",
        -      "type": "string"
        -    },
        -    "size": {
        -      "description": "Optional file size in bytes.",
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "data",
        -    "file_name",
        -    "mime_type"
        -  ],
        -  "type": "object"
        -}
      • addedInput schema / properties / resume_text
        Added value: +{
        +  "description": "Plain-text resume content extracted by the model from an attached PDF/DOCX/etc. Stored as a text/plain attachment on the candidate. Do not pass binary or base64 here — only the parsed text content.",
        +  "type": "string"
        +}
    • Changedhires_update_candidate2 fields changed
      • removedInput schema / properties / cv
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "CV/resume file to attach (base64 payload).",
        -  "properties": {
        -    "data": {
        -      "description": "Base64-encoded file content.",
        -      "type": "string"
        -    },
        -    "file_name": {
        -      "description": "Original file name.",
        -      "type": "string"
        -    },
        -    "mime_type": {
        -      "description": "MIME type (e.g. application/pdf).",
        -      "type": "string"
        -    },
        -    "size": {
        -      "description": "Optional file size in bytes.",
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "data",
        -    "file_name",
        -    "mime_type"
        -  ],
        -  "type": "object"
        -}
      • addedInput schema / properties / resume_text
        Added value: +{
        +  "description": "Plain-text resume content extracted by the model from an attached file. Stored as a text/plain attachment. Do not pass binary or base64 — only parsed text.",
        +  "type": "string"
        +}
  6. 4 tool updates
    • Changedhires_create_note1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources, e.g. 'user' for author details, 'candidate' for full candidate object with profile_url. Set to `candidate` so the widget can link the candidate name to their backoffice profile."New value: +"Include related resources, e.g. 'user' for author details, 'candidate' for full candidate object with url_backoffice. Set to `candidate` so the widget can link the candidate name to their backoffice profile."
    • Changedhires_get_note1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources: 'user' for author details, 'candidate' for full candidate payload with profile_url."New value: +"Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice."
    • Changedhires_list_notes1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources: 'user' for author details, 'candidate' for full candidate payload with profile_url."New value: +"Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice."
    • Changedhires_update_note1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources: 'user' for author details, 'candidate' for full candidate payload with profile_url."New value: +"Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice."
  7. 13 tool updates
    • Changedhires_advance_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job. Set to `candidate,job` so the widget can link the candidate name to their profile and the job title to its pipeline view."
    • Changedhires_create_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job."
    • Changedhires_create_note1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources, e.g. 'user' for author details"New value: +"Include related resources, e.g. 'user' for author details, 'candidate' for full candidate object with profile_url. Set to `candidate` so the widget can link the candidate name to their backoffice profile."
    • Changedhires_get_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job."
    • Changedhires_get_note1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources, e.g. 'user' for author details"New value: +"Include related resources: 'user' for author details, 'candidate' for full candidate payload with profile_url."
    • Changedhires_hire_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job."
    • Changedhires_list_notes1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources, e.g. 'user' for author details"New value: +"Include related resources: 'user' for author details, 'candidate' for full candidate payload with profile_url."
    • Changedhires_move_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job."
    • Changedhires_reject_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job."
    • Changedhires_transfer_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job."
    • Changedhires_unreject_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job."
    • Changedhires_update_application1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text."New value: +"Comma-separated relations to embed: candidate, cv.text, job."
    • Changedhires_update_note1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Include related resources, e.g. 'user' for author details"New value: +"Include related resources: 'user' for author details, 'candidate' for full candidate payload with profile_url."
  8. 1 tool update
    • Changedhires_list_interviews1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated related resources to embed: candidate, application, job"New value: +"Comma-separated related resources to embed: candidate, application, job. Set to `candidate` (or include `candidate` in the list) so the widget can link interview cards to candidate profiles in the backoffice."
  9. 2 tool updates
    • Changedhires_create_job_webhook1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Webhook destination URL. Must be HTTPS."New value: +"Webhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs)."
    • Changedhires_create_webhook1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Webhook destination URL. Must be HTTPS."New value: +"Webhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs)."
  10. 1 tool update
    • Changedhires_list_applications1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated relations to embed: candidate, cv.text. Example: candidate,cv.text"New value: +"Comma-separated relations to embed: `candidate`, `cv.text`. **Recommended: `candidate`** for pipeline / kanban / UI rendering — without it the widget shows candidate IDs instead of names and emails. Use `cv.text` only when resume text is genuinely needed (large payload)."
  11. 1 tool update
    • Changedhires_list_candidates1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated list of optional related data to include in the response."New value: +"Comma-separated related data. Supported: `applications` — embeds each candidate's application summaries with job titles and pipeline stages. Recommended when the caller needs stage/pipeline context (e.g. UI rendering, candidate-status questions)."
  12. 9 tool updates
    • Changedhires_list_application_evaluations1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` replaces `summary_text` with a 200-char `summary_text_preview`. Use `full` only when the full evaluator commentary is needed; call hires_get_evaluation for a single record.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedhires_list_candidate_activities1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` replaces the largest event payloads (copilot LLM response/prompt, call transcription, comment body) with 200-char `*_preview` fields. Other event types pass through unchanged. Use `full` when the original content is needed.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedhires_list_candidate_messages1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` excludes the HTML body and attachments metadata. Use `full` only when message body content is needed.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedhires_list_candidates1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` excludes the `profile` array (custom profile-form answers). Use `full` only when those answers are genuinely needed; call hires_get_candidate for a single full record.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedhires_list_email_templates1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` excludes the HTML template body. Use `full` only when body content is needed; call hires_get_email_template for a single record.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedhires_list_forms1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` omits the embedded `questions` array. Use `full` only when the full question list is needed; call hires_get_form for a single form.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedhires_list_jobs1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` excludes heavy fields (description HTML, indeed_posting_data, ai_scoring_criteria) and embedded relations — recommended for list operations. Use `full` only when description or include=workflow/hiring_team/pipeline_stages is genuinely needed; call hires_get_job for a single full record.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedhires_list_messages1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` excludes the HTML body and attachments metadata — recommended for list operations. Use `full` only when message body content is needed.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedhires_list_notes1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "summary",
        +  "description": "Response shape. Default `summary` replaces the full note body with a 200-char `body_preview`. Use `full` only when the full note text is genuinely needed; call hires_get_note for a single record.",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
  13. 2 tool updates
    • Changedhires_create_job1 field changed
      • addedInput schema / properties / ai_scoring_criteria
        Added value: +{
        +  "description": "AI scoring criteria for evaluating candidates. Diff-replace by id: items with id update existing, items without id create new, existing criteria not in payload are removed. Pass [] to detach all.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "description": "ID of an existing criterion attached to this job. With id → update in place; without id → create new. Items on the job not referenced by id are removed.",
        +        "exclusiveMinimum": 0,
        +        "type": "integer"
        +      },
        +      "text": {
        +        "description": "Prompt text describing what to evaluate.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Optional short label for the criterion.",
        +        "type": "string"
        +      },
        +      "weight": {
        +        "description": "Relative importance (1–10).",
        +        "maximum": 10,
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "text",
        +      "weight"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedhires_update_job1 field changed
      • addedInput schema / properties / ai_scoring_criteria
        Added value: +{
        +  "description": "AI scoring criteria for evaluating candidates. Diff-replace by id: items with id update existing, items without id create new, existing criteria not in payload are removed. Omit to leave existing criteria untouched. Pass [] to detach all.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "description": "ID of an existing criterion attached to this job. With id → update in place; without id → create new. Items on the job not referenced by id are removed.",
        +        "exclusiveMinimum": 0,
        +        "type": "integer"
        +      },
        +      "text": {
        +        "description": "Prompt text describing what to evaluate.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Optional short label for the criterion.",
        +        "type": "string"
        +      },
        +      "weight": {
        +        "description": "Relative importance (1–10).",
        +        "maximum": 10,
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "text",
        +      "weight"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  14. 3 tool updates
    • Addedhires_list_application_stage_history
    • Changedhires_list_candidate_activities3 fields changed
      • addedInput schema / properties / since
        Added value: +{
        +  "description": "Unix timestamp (seconds) — inclusive lower bound on event timestamp.",
        +  "type": "number"
        +}
      • addedInput schema / properties / size
        Added value: +{
        +  "description": "Page size. Values above the max are capped. Default 20, max 100.",
        +  "type": "number"
        +}
      • addedInput schema / properties / until
        Added value: +{
        +  "description": "Unix timestamp (seconds) — inclusive upper bound on event timestamp.",
        +  "type": "number"
        +}
    • Changedhires_list_interviews1 field changed
      • addedInput schema / properties / company_id
        Added value: +{
        +  "description": "Filter by company ID. Omit for all accessible companies.",
        +  "type": "number"
        +}
  15. 130 tool updates
    • First observedhires_add_candidate_tags
    • First observedhires_add_hiring_team_member
    • First observedhires_advance_application
    • First observedhires_batch_add_tags
    • First observedhires_batch_create_messages
    • First observedhires_batch_job_boards
    • First observedhires_batch_move_applications
    • First observedhires_batch_publish_to_boards
    • First observedhires_batch_reject_applications
    • First observedhires_batch_remove_from_boards
    • First observedhires_batch_remove_tags
    • First observedhires_cancel_all_notification_messages
    • First observedhires_create_application
    • First observedhires_create_candidate
    • First observedhires_create_company
    • First observedhires_create_email_template
    • First observedhires_create_form
    • First observedhires_create_interview
    • First observedhires_create_job
    • First observedhires_create_job_webhook
    • First observedhires_create_note
    • First observedhires_create_nurture_campaign
    • First observedhires_create_question
    • First observedhires_create_webhook
    • First observedhires_delete_application
    • First observedhires_delete_candidate
    • First observedhires_delete_company
    • First observedhires_delete_email_template
    • First observedhires_delete_form
    • First observedhires_delete_job
    • First observedhires_delete_job_webhook
    • First observedhires_delete_message
    • First observedhires_delete_note
    • First observedhires_delete_notification_message
    • First observedhires_delete_nurture_campaign
    • First observedhires_delete_question
    • First observedhires_delete_webhook
    • First observedhires_disqualify_candidate
    • First observedhires_download_attachment
    • First observedhires_get_ai_score
    • First observedhires_get_application
    • First observedhires_get_billing
    • First observedhires_get_candidate
    • First observedhires_get_candidate_resume
    • First observedhires_get_career_job
    • First observedhires_get_company
    • First observedhires_get_email_template
    • First observedhires_get_evaluation
    • First observedhires_get_form
    • First observedhires_get_interview
    • First observedhires_get_job
    • First observedhires_get_message
    • First observedhires_get_note
    • First observedhires_get_notification_message
    • First observedhires_get_nurture_campaign
    • First observedhires_get_question
    • First observedhires_get_user
    • First observedhires_get_workflow_stages
    • First observedhires_hire_application
    • First observedhires_list_application_attachments
    • First observedhires_list_application_evaluations
    • First observedhires_list_applications
    • First observedhires_list_boards
    • First observedhires_list_candidate_activities
    • First observedhires_list_candidate_files
    • First observedhires_list_candidate_interviews
    • First observedhires_list_candidate_messages
    • First observedhires_list_candidate_tags
    • First observedhires_list_candidates
    • First observedhires_list_career_jobs
    • First observedhires_list_categories
    • First observedhires_list_companies
    • First observedhires_list_company_id_mail_accounts
    • First observedhires_list_company_mail_accounts
    • First observedhires_list_departments
    • First observedhires_list_education_levels
    • First observedhires_list_email_templates
    • First observedhires_list_employment_types
    • First observedhires_list_experience_levels
    • First observedhires_list_forms
    • First observedhires_list_hiring_team
    • First observedhires_list_interviews
    • First observedhires_list_job_boards
    • First observedhires_list_job_webhooks
    • First observedhires_list_jobs
    • First observedhires_list_messages
    • First observedhires_list_notes
    • First observedhires_list_nurture_campaigns
    • First observedhires_list_origins
    • First observedhires_list_question_types
    • First observedhires_list_questions
    • First observedhires_list_rejection_reasons
    • First observedhires_list_sources
    • First observedhires_list_statuses
    • First observedhires_list_tags
    • First observedhires_list_template_placeholders
    • First observedhires_list_user_mail_accounts
    • First observedhires_list_users
    • First observedhires_list_webhooks
    • First observedhires_list_workflow_stages
    • First observedhires_list_workflows
    • First observedhires_move_application
    • First observedhires_patch_message
    • First observedhires_prepare_template_placeholders
    • First observedhires_publish_to_job_board
    • First observedhires_reject_application
    • First observedhires_remove_candidate_tag
    • First observedhires_remove_from_job_board
    • First observedhires_restore_company
    • First observedhires_send_candidate_message
    • First observedhires_set_job_status
    • First observedhires_submit_career_application
    • First observedhires_submit_feedback
    • First observedhires_transfer_application
    • First observedhires_unreject_application
    • First observedhires_update_application
    • First observedhires_update_candidate
    • First observedhires_update_company
    • First observedhires_update_email_template
    • First observedhires_update_form
    • First observedhires_update_form_question
    • First observedhires_update_job
    • First observedhires_update_message
    • First observedhires_update_note
    • First observedhires_update_notification_message
    • First observedhires_update_nurture_campaign
    • First observedhires_update_question
    • First observedhires_upload_application_attachment
    • First observedhires_upload_attachment
    • First observedhires_upload_candidate_file

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    Official Model Context Protocol server for 100Hires — the applicant tracking system for recruiting teams. Exposes the full 100Hires API v2 as 130 MCP tools, enabling AI assistants to manage candidates, jobs, applications, interviews, messages, and more.
    100
    16 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Manage Job using MCP: Manage Job, Candidates, Resumes, Salaries all within this one MCP tools It can solve problems like: You have 50 resumes to screen. Your AI assistant can reason about candidates, but it can't: Read PDFs/DOCX — The AI can't open binary files Extract structured data — Copy-pasting loses formatting, metrics, and context Compare at scale — No consistent scoring across candida
    24
    30 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Hunaras, an AI-native recruiting platform that enables candidates and employers to manage jobs, applications, assessments, and talent sourcing through natural language.
    10 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search, score, and track job applications from ATS boards via MCP, with explainable matching and an append-only application history.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.