Skip to main content
Glama
benmonopoli

Greenhouse MCP

by benmonopoli

update_job_opening

Update a job opening's status, target start date, custom fields, close reason, or external ID in Greenhouse. Use job and opening IDs to modify hiring pipeline details.

Instructions

Update a job opening's status, target start date, or custom fields. Write operation.

To find job_id: list_jobs → match by name. To find opening_id: list_job_openings on the job. For close_reason_id: list_close_reasons → match by name. Closing a job's last open opening closes the job.

Input Schema

NameRequiredDescriptionDefault
job_idYesGreenhouse job ID
statusNoNew status: 'open' or 'closed'
opening_idYesOpening ID within the job
custom_fieldsNoArray of {id, value} (or {custom_field_id, value}) — get field IDs from list_custom_fields
close_reason_idNoReason for closing — get from list_close_reasons
target_start_onNoTarget start date as 'YYYY-MM-DD'
external_opening_idNoNew custom external opening identifier

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv0.5.0
    • addedInput schema / properties / close_reason_id / description
      Added value: +"Reason for closing — get from list_close_reasons"
    • addedInput schema / properties / custom_fields / description
      Added value: +"Array of {id, value} (or {custom_field_id, value}) — get field IDs from list_custom_fields"
    • addedInput schema / properties / external_opening_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "New custom external opening identifier",
      +  "title": "External Opening Id"
      +}
    • addedInput schema / properties / job_id / description
      Added value: +"Greenhouse job ID"
    • addedInput schema / properties / opening_id / description
      Added value: +"Opening ID within the job"
    • addedInput schema / properties / status / description
      Added value: +"New status: 'open' or 'closed'"
    • addedInput schema / properties / target_start_on
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Target start date as 'YYYY-MM-DD'",
      +  "title": "Target Start On"
      +}
  2. Addedv0.3.4

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description must carry the behavioral load, and it does disclose that this is a 'Write operation' plus an important side effect ('Closing a job's last open opening closes the job'). It stops short of covering permissions, reversibility, or whether unspecified fields are preserved.

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?

Front-loads the purpose in the first sentence, then a compact resolution block. Every sentence earns its place, though the cascade note is awkwardly wrapped mid-sentence and could be grouped with the write-operation warning.

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?

An output schema exists, so return values need no explanation, and the description covers the key relational inputs and one major side effect for a 7-parameter mutation. It is nearly complete; only permissions/reversibility context would round it out.

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 already 100%, so the baseline is 3; the description exceeds it by supplying the lookup chains that give the ID parameters meaning (job_id via list_jobs, opening_id via list_job_openings, close_reason_id via list_close_reasons). It does not add value for target_start_on or external_opening_id 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?

Names a specific verb and resource (update a job opening) and enumerates the mutable fields (status, target start date, custom fields). It is clearly distinguishable from create/delete/list siblings, though it never explicitly contrasts itself with the closest alternative, bulk_update_job_openings.

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?

Gives concrete how-to-use routing: list_jobs to resolve job_id, list_job_openings for opening_id, and list_close_reasons for close_reason_id. It also warns about the cascade when closing an opening. What is missing is guidance on when to prefer this over bulk_update_job_openings or update_job.

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

Deploy Server

Other Tools