save_job_brief
Save a job's private brief
All MCP toolsWrite
Replace the PRIVATE per-job brief (whole-document semantics: omitted or blank fields become empty). The brief stays inside the organization — never published, never matched, never shown to candidates. A job whose seat is filled or closed refuses; reopen the seat first. A deterministic save-time lint refuses criteria that must not be used (protected attributes and their near proxies — age, gender, nationality, health, and the like): rephrase in terms of the applicant's own aptitude, ability, experience, and working conditions.
Input schema
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The job whose brief to save (jobs.id)."
},
"brief": {
"type": "object",
"properties": {
"meetCriteria": {
"description": "Meet criteria: whom the company decides to MEET, in the hiring manager's own words (free text — agent-only judgment material).",
"default": null,
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"declineCriteria": {
"description": "Decline criteria: what makes the company decline, in plain words (free text — agent-only judgment material).",
"default": null,
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"salaryLatitude": {
"description": "Salary latitude: the REAL latitude beyond the advertised range — conditions, width, temperature (free text; deliberately unstructured).",
"default": null,
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"talkingPoints": {
"description": "Talking points: what the agent should emphasise when speaking about this job (free text — agent-only judgment material).",
"default": null,
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"description": "Per-job private brief input (strict; unknown keys rejected). Four optional free-text fields, trimmed, empty→null; parsed output always carries all four keys. The reader is the organization's agent ONLY — never published, matched, or shown to candidates."
}
},
"required": [
"jobId",
"brief"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output schema
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"brief": {
"type": "object",
"properties": {
"meetCriteria": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "null"
}
],
"description": "Meet criteria — free text or null."
},
"declineCriteria": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "null"
}
],
"description": "Decline criteria — free text or null."
},
"salaryLatitude": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "null"
}
],
"description": "Salary latitude — free text or null."
},
"talkingPoints": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "null"
}
],
"description": "Talking points — free text or null."
}
},
"required": [
"meetCriteria",
"declineCriteria",
"salaryLatitude",
"talkingPoints"
],
"additionalProperties": false,
"description": "The saved brief, read back from the store."
}
},
"required": [
"jobId",
"brief"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}